Jsou databáze nejasné? Ptejte se!

Po menší přestávce máte opět možnost seznámit se s další částí čtenářských dotazů souvisejících s databázovými systémy a hlavně s jazykem SQL. Je-li vám něco nejasné, nebojte se a napište.
Po menší přestávce máte opět možnost seznámit se s další částí čtenářských dotazů souvisejících s databázovými systémy a hlavně s jazykem SQL. Je-li Vám něco nejasné, nebojte se a napište.

Používám systém Oracle a nevím, jaký je rozdíl mezi příkazy DELETE a TRUNCATE, oba přece slouží k výmazu záznamů z tabulky.

Rozdíly jsou dva. První je ten, že příkaz TRUNCATE vymaže z tabulky všechny záznamy a neumožňuje tuto vlastnost ovlivnit. Součástí příkazu DELETE může být podmínka, která určí, jaké záznamy se mají smazat. Druhým rozdílem je fakt, že TRUNCATE uvolní alokované datové bloky k opětovnému použití, kdežto DELETE nikoli. Doporučuji podrobnější nastudování pasáží firemní dokumentace o fyzickém ukládání dat v tomto systému.

Jaké jsou možnosti spojení databáze a webu? Viděl jsem pár komerčních řešení, která vypadají docela pěkně. Existuje něco podobného jako free?

Možností je několik, v praxi používaný je například jazyk podobný shellu - PHP (dnes ve verzi 3), který je k dispozici jak pro unixové platformy (včetně Linuxu), tak pro Windows. Z databázových systémů jsou podporovány jak "velké" komerční produkty (Oracle, Sybase, Informix), tak i freewarové či sharewarové (PostgreSQL, mSQL, MySQL). Podpora www serveru Apache je samozřejmostí. Zajímavé je, že PHP nepostihuje pouze oblast komunikace s databázemi, ale disponuje také celou řadou dalších možností - od matematických výpočtů až po práci s grafickými prvky. Bližší informace je možné získat na Internetu www.php.net.

Slyšel jsem o read-read-write strategii v souvislosti se sdílením dat? Mohl byste mi tento postup vysvětlit?

Nad touto otázkou jsem delší dobu přemýšlel, o co vůbec jde. Pokud vím, tento pojem používá firma Magic Software Enterprises ve svém produktu MAGIC (ten je mylně označován za databázový systém, ve skutečnosti se však jedná o vývojový nástroj). V podstatě jde o to, že v případě konkurenčního přístupu k datům jsou tato nejprve přečtena do lokálních proměnných, tam upravena a před vlastním zápisem je čtením z databáze ověřena jejich původní hodnota. Pokud se neliší, provede se zápis z lokální kopie do databáze. Pokud mezitím došlo ke změně, chování záleží na aplikační logice. Výhoda tohoto řešení je sporná - sice odpadá zatížení systému nadbytečným zamykáním, na stranu druhou se však jedná o poměrně nestandardní přístup a jednotlivé reakce musí být programově ošetřeny. Osobně doporučuji používat vnitřních prostředků daného systému.

Jakým způsobem je zajištěna komunikace mezi různými SQL systémy?

K dispozici bývají různé přímé ovladače pro přístup do jiných systémů. Mezi hlavní výhody patří podpora většiny vlastností, kterými systém disponuje. Druhou možností je použít některého ze standardizovaných rozhraní, například ODBC (Open DataBase Connectivity). Rozhodnutí, jakou možnost použít, záleží na mnoha okolnostech - například výkon bývá větší v případě přímých ovladačů, ale s ODBC se "dostaneme" takřka do jakéhokoli systému.

Jak je to s přenositelností programů napsaných v SQL z jednoho systému na druhý?

Pokud bude programový kód využívat pouze příkazů daných normou SQL, pak by měl být přenositelný na jakýkoli jiný systém vyhovující stejné normě. Zpravidla se ale využívá procedurálních prvků (o ty rozšířily, jak jsme si řekli v úvodních dílech našeho seriálu, jednotlivé firmy standardní množiny příkazů SQL), a tak se šance na bezproblémový přechod snižují.

Úspěšně používám pro svoji firemní agendu FoxPro a viděl jsem u kolegy obdobnou agendu na systému Sybase. Žádné podstatné zrychlení jsem ale nezpozoroval. Kdy je vhodné začít uvažovat o přechodu z architektury file/server na client/server?

Obě dvě otázky spolu souvisí. Jednou z hlavních výhod velkých SQL systémů je vysoký výkon, který však můžeme ocenit až při velkém objemu zpracovávaných dat nebo při velkém počtu současně připojených uživatelů. Před pár lety jsem byl členem týmu provádějícího pokusy za účelem zjištění hranice, od které se začíná vyplácet použití architektury client/server. Například počet uživatelů se pohyboval maximálně do dvou desítek. Záleží také na plánech rozšiřování vámi používaného systému - pokud se chystáte zpracovávat rychle rostoucí objem dat za zvyšujícího se počtu uživatelů, pak rozhodně volte systém pro architekturu client/server (někdy příště se seznámíme s jednotlivými třídami této architektury).

Je vůbec možné v SQL vytvořit smysluplnou aplikaci? Připomíná mi to BASIC - také účelné a poměrně jednoduché, ale nic velkého se v tom napsat nedá.

Problém je složitější. V SQL se zpravidla vytváří ta část aplikace, která běží na serveru a stará se o "vnitřní" logiku (většina SQL systémů podporuje architekturu client/server). Klientská část se dnes vyvíjí v moderních nástrojích, které mohou být od stejné firmy jako SQL server či od firmy specializující se na vývojové nástroje. V praxi tak můžeme vidět aplikace napsané například v DELPHI využívající server Oracle. Jako uživatel pak vlastně ani nevíte, že někde na pozadí nějaký SQL server je.

Máte nějaké zkušenosti s SQL systémy pro Linux? Tento operační systém se mi líbí, ale nevím, jak moc mohu pro něj existujícím databázím věřit.

Není důvod nevěřit. Pro Linux je k dispozici celá řada databázových systémů, jmenujme například ty nejznámější - MySQL, PostgreSQL či Sybase Adaptive Server Enterprise (výčet není v žádném případě úplný, bližší informace můžete nalézt v článku věnovaném této problematice). Právě posledně jmenovaný produkt pár měsíců na Linuxu používám a jsem s jeho vlastnostmi více než spokojen. Žádné obavy o spolehlivost nemusíte mít zejména v případě linuxových verzí "velkých" SQL systémů, které vlastnostmi odpovídají svým bratříčkům z jiných platforem.

Některé z vámi uváděných příkladů mi nefungují. Nevíte proč? (často opakující se otázka pro různé systémy)

Pokud nějaký příkaz nefunguje, podívejte se na přesnou syntaxi do dokumentace. Na začátku našeho seriálu jsme si uvedli, že ne všechny systémy plně podporují SQL normu, ke které se hlásí. Chyba může být také v odlišném způsobu ukončení zadávání příkazu (zpravidla záleží na klientovi).

Tak a to je pro dnešek vše. Na závěr bych Vás chtěl poprosit, abyste k dotazu připojovali jméno systému, přesný způsob zápisu příkazu a případné chybové hlášky. Usnadníte mi tak hledání řešení.

Diskuze (2) Další článek: SmartSuite R10: Lotus boj nevzdává

Témata článku: Druhý případ, Odlišné zjištění, Databáze, Velký objem, Velká výhoda, Jednotlivé prvky, Přesná data, Read, Velká část, Stejný prvek, Stejný dotaz

Určitě si přečtěte


Aktuální číslo časopisu Computer

Test 6 odolných telefonů a 22 powerbank

Srovnání technologií QLED a OLED

Měřte své sportovní výkony

Sady pro chytrou domácnost