SQL server pod Linuxem?! A kde jinde!?
                    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

        "Data is a lot like humans: It is born. Matures. Gets married to
      other data, divorced. Gets old. One thing that it doesn't do is die.
                             It has to be killed."
                                -- Arthur Miller

                          Dan Ohnesorg, 10. dubna 1998

          Před   časem  jste   jistě   zaznamenali,  že  jsem  v  linuxové
      konferenci  hledal  spoluautory pro článek o databázích pod Linuxem.
      Nakonec jsme se sešli tři a předáváme naše  zkušenosti s databázemi,
      které  používáme.  Nebudeme  se  zde  zmiňovat  o  databázi  ADABAS,
      která byla podrobně  popsána v prosincovém  čísle  Linuxových  novin
      a databázi ORACLE, kterou lze sice na Linuxu úspěšně provozovat, ale
      nepodařilo se mi sehnat  někoho, kdo by o ní něco  napsal a navíc se
      jedná o databázi, která přece jen trochu vybočuje ze záběru  většiny
      linuxových  uživatelů.  Nicméně toto zcela jistě není poslední číslo
      Linuxových novin a tak se k tomuto  jistě  zajímavému  tématu  ještě
      vrátíme.

                                   PostgreSQL

                                Nathan L. Cutler

          Pro   ty  z   nás,   kteří    hledají    databázový    software,
      který  je  opravdu    free,  tj.   nejen  pro    samotné    uživání,
      ale i pro  případnou  distribuci  za  úplatu,  se nabízí  PostgreSQL
      http://www.postgresql.org.  Tato  robustní   implementace  standardu
      SQL-92 umí zpracovat  dotazy  obsahující  relace  mezi  jednotlivými
      tabulkami.  Je pod  aktivním  vývojem a každá  nová  verze má blíž k
      úplné  implementaci  standardu.  Již nyní je implementace  standardu
      téměř kompletní, a navíc PostgreSQL  obsahuje  některá rozšíření, se
      kterými standard  nepočítá, např. uživatelem definované datové typy,
      funkce a inheritance.

          PostgreSQL  je  postaven   na  principu    klient-server,   nebo
      front-end/back-end.  Back-end v případě PostgreSQL je program, který
      beží jako  daemon a zpracovává  SQL-dotazy,  které  mohou  přicházet
      i po síti  TCP/IP.  Back-end  PostgreSQL  je schopen  obsloužit  jak
      více databází, tak více uživatelů  najednou.  Distribuce  PostgreSQL
      obsahuje i jednoduchý front-end psql, což je takový příkazový řádek,
      přes který lze zadávat holé SQL dotazy a prohlížet si jejich výstup.

          Velmi důležitou součástí  distribuce PostgreSQL je libpq, což je
      knihovna funkcí umožňující psaní front-endů k databázím. Pomocí této
      knihovny  lze vyvíjet  programy v jazyce C, které  komunikují  přímo
      s PostgreSQL  back-endem.  Pro ty,  kteří  umí  programovat v jazyce
      C představuje  tato  knihovna  spolu s PostgreSQL  back-endem  mocný
      nástroj pro vývoj všech druhů databázových aplikací.

          Pro  ty,  kteří  v  céčku  neprogramují,  existuje  řada  jiných
      rozhraní, např.  knihovna  jazyka Perl, nástroje pro integraci s WWW
      a jiné.

          Pro ty, kteří neumí nebo nechtějí  získat  PostgreSQL  kompilací
      zdrojového  kódu,  existují   PostgreSQL   balíky  s  binárkami  pro
      populární distribuce Linuxu.

                                 miniSQL 1.0.11

                                  Michal Polák

          MiniSQL    (dále   jen   mSQL)    vytvořil   David   J.   Hughes
      (bambi@Hughes.edu.au)  z  Austrálie.   Tato  verze  je  již  poněkud
      staršího  data  --  leden  1996.  Volně  používat  jej  mohou  pouze
      studenti,     vzdělávací    nekomerční    instituce,     nevýdělečné
      a charitativní organizace a nekomerční  výzkumná  střediska. Ostatní
      musí  zaplatit  registrační  poplatek  (pro zajímavost: pro privátní
      použití 65 austr.  dolarů, pro komerční  225 austr.  dolarů).  Další
      šíření  produktu  (např. jako součást nově vytvořeného  programu) je
      povoleno pouze s výslovným písemným povolením Hughes Technologies.

          Distribuční  balík  se  "rozzipuje"  a "roztaruje"  do  adresáře
      /usr/local/Minerva  (implicitně  nastaveno).  Nachází se zde adresář
      doc s  dokumentací  v  PostScriptu, a  adresáře  include  a lib  pro
      zakomponování  balíku do naší  aplikace.  Časem  zde  ještě  přibude
      adresář  msqldb, kde budou  uloženy  všechny  databáze,  které tímto
      balíkem  budeme spravovat.  Podrobněji se budeme  zabývat  adresářem
      bin ve  kterém  se nachází  několik  spustitelných  programů:  msql,
      msqld,   msqladmin,   msqldump,    relshow.   Chování   balíku   lze
      samozřejmě   konfigurovat.  Pokud  by  někomu  nevyhovoval   adresář
      /usr/local/Minerva,  může si balík  nainstalovat  do přijatelnějšího
      adresáře, pak je ale zapotřebí nastavit  proměnnou  MSQL_HOME. Kdyby
      byly  problémy se sítí, lze ještě  nastavit buď /etc/services,  nebo
      proměnné prostředí MSQL_TCP_PORT, MSQL_UNIX_PORT a MSQL_HOST.

          Monitorovat  činnost  "mSQL  Engine"  lze  nastavením   proměnné
      MINERVA_DEBUG:

      api -- vypisuje interní informace (jako jsou např. detaily
      připojení)
      cache -- vypisuje využití cache tabulek
      query -- vypisuje všechny dotazy zasílané databázovému serveru
      malloc -- vypisuje pozice a velikosti alokovaných částí paměti
      error -- vypisuje chyby (stejné jako zasílané klientovi)
      key -- vypisuje detaily při práci s klíči
      trace -- vypisuje volání funkcí, které se spouštějí
      mmap -- vypisuje detaily o obsazeném regionu paměti
      general -- vypisuje ostatní informace

          Tyto  režimy lze kombinovat, pak se ale musí  mezi  jednotlivými
      slovy napsat dvojtečka. Např:

      setenv MINERVA_DEBUG api:query


          Pojďme si nyní popsat slíbené programy:

       msqld -- démon
       msqladmin -- tvorba/rušení databáze, shutdown/reload
          databázového serveru
       msql -- klient (zadáváním SQL dotazů pracujeme s databází)
       msqldump -- převede všechna data z určené databáze do SQL
       dotazů na výstup (vhodné k archivaci)
       relshow -- zobrazuje názvy existujících tabulek nebo
          struktury tabulek

          Všechny tyto programy  (kromě  démona) lze spouštět s parametrem
      -h  Host,  kterým  se  připojíte k  databázovému  serveru  na  jiném
      počítači. U programů  msql a  msqldump  se  vždy  musí  zadat  jméno
      databáze,  se  kterou  chceme  pracovat.  Jelikož  je  práce  s msql
      celkem  neohrabaná, je lepší  (zvláště pokud  potřebujete zadat více
      dotazů  najednou)  si  tyto  napsat  do  textového  souboru  a tento
      potom přesměrovat  programu msql na vstup. Zde je nutno  podotknout,
      že jednotlivé SQL dotazy je nutno oddělit znaky : (příkaz v programu
      pro provedení -- go -- dotazu). Existuje nadstavba programu msql pro
      prostředí X-Window, která se překvapivě jmenuje xmsql.

          Jazyk SQL (v dokumentaci deklarován jako ANSI SQL) je podle mého
      názoru na dnešní dobu celkem chudý.

      Datové typy použitelné v klauzuli CREATE TABLE:

       char(len) -- text maximálně délky len
       int -- celé číslo se znaménkem (4 byty)
       real -- reálné číslo

          Za jednotlivými typy lze ještě uvést not null nebo primary key.

          Lze pracovat s konstrukcemi  CREATE  TABLE,  DROP TABLE,  INSERT
      INTO, DELETE FROM, UPDATE.  Konstrukci SELECT si popišme podrobněji,
      nejdříve uvedeme syntaxi:

      SELECT [DISTINCT] [table.]column \
           [, [table.]column]*

        FROM table [= alias] [, table [= alias]]*

        [ WHERE [table.]column OPERATOR VALUE \
                [ AND | OR [table].column \
                OPERATOR VALUE]* ]

        [ ORDER BY [table.]column [DESC] \
        [, [table.]column [DESC]]* ]

          Výraz v hranatých závorkách je nepovinný.

        [ ... ]* -- výraz v hranatých závorkách se může libovolněkrát
        opakovat.
        OPERATOR -- =, <, >, <=, >=, <>, like
        VALUE -- hodnota nebo název sloupce.

          Nelze  použít  nested   functions   (vložené  funkce  --  sum(),
      count()), join (spojení  tabulek), views (pohledy) a nested  queries
      (vložené dotazy).  Kontrola přístupu se nastavuje v textovém souboru
      msql.acl,  který se nachází v /usr/local/Minerva (nebo v MSQL_HOME).
      Zde  se  pro  jednotlivé   databáze   nastavují   práva  pro  čtení,
      zápis  apod. Před drahnou dobou jsem četl v linuxové  konferenci, že
      tuto kontrolu lze velice snadno  obejít.  Protože ale nemám patřičné
      crackerské (nebo hackerské ?) znalosti, tak nemohu posoudit.

          V dokumentaci je celkem  podrobně  probráno  napojení  na server
      z jazyka C.  Informace o napojení z ESL,  Perl 5, Python,  Tcl  jsou
      strohé, jsou zde pouze uvedeny  adresy  výrobců a názvy jednotlivých
      podpůrných modulů.


          Tabulka,  kde  je  kolem  14830  záznamů a 5 sloupců  typu  int,
      zabírá na disku něco přes 385 kB (14830 * 20 = 296600). Řekl bych,
      že  náklady na  režii  jsou  celkem  vysoké,  zvlášť  když v tabulce
      neexistuje  primární  klíč. V konferenci někdo porovnával  rychlosti
      mSQL a MySQL. Balík mSQL byl pomalejší.

          Z výše  uvedených  skutečností  a  absence  triggerů,  procedur,
      zamykání  záznamů  apod.  vyplývá,  že  balík  mSQL  se  hodí  pouze
      do soukromého  použití, kde budou  relativně malé tabulky v databázi
      a tabulky na sobě nebudou hodně závislé.

          Jako  klady  bych  vyzvedl  snadnou  instalaci a relativně  málo
      zabraného místa na disku.

          Já osobně  používám mSQL jako back-end v programu na vyhodnocení
      odpovědí  studentů  v anketě o  studiu.  Jako  front-end  mi  slouží
      aplikace  napsaná v C. Za  celou  dobu  provozu  (zhruba  rok a půl)
      nebyl  s  mSQL  žádný  problém  (Pozn.  redakce:  s  tímto  tvrzením
      bych si dovolil  nesouhlasit.  Můžu doložit  výstupem  příkazu  grep
      mpolak  /Mail/Archive/Received* :--). V tabulkách jsou řádově stovky
      záznamů,  vyjímkou jsou tabulky odpovědí, kde je v každé kolem 15000
      záznamů.  Jediné, co bych chtěl reklamovat u výrobce, je skutečnost,
      že se mi  nepovedla  vytvořit  tabulka s názvem  delším  než  asi 20
      znaků. Možná je to součást nějakého standardu, nevím.

                                     MySQL

                                  Dan Ohnesorg

          Příliš  restriktivní  licence mSQL a špatná  srozumitelnost jeho
      kódu  byla  trnem v oku skupině  programátorů  pod vedením  Michaela
      "Montyho" Wideniuse, Davida Axmarka a Kima Aldala. Proto se rozhodli
      vytvořit  nové  mSQL se stejným  rozhraním, ale mnohem  dokonalejším
      front-endem a back-endem.  MySQL  má  tedy  mnoho  společného s mSQL
      a existují  nástroje  pro  upgrade z mSQL  na MySQL,  jak na  úrovni
      přenosu dat tak na úrovni ekvivalentních  knihoven, jejichž  použití
      předpokládá v běžných  případech pouze použití  jiného  hlavičkového
      souboru a jiného linkovacího parametru.

          MySQL   přesto  není  pod  GNU  licencí,  jak  by  možná   někdo
      po  přečtení  předchozího  odstavce  očekával.  Licence  je  poněkud
      složitější.  Program se pro  její  účely  dělí na  klientskou  část,
      která je pod GPL licencí a server samotný, který je volně šiřitelný,
      ale nesmí být prodáván a nesmí být použit  jako  integrální  součást
      komerčně  prodávaných  produktů.  Pokud má někdo takovéto  ambice (a
      mnoho takových se najde) musí si zakoupit  komerční  verzi  serveru.
      Ta má výhodu v tom, že  obsahuje  některé  funkce,  které  ve  volně
      šiřitelné   verzi  nejsou.  V  současné  době  se  ale  jedná  pouze
      o možnost  pracovat s komprimovanými  databázemi. V případě zájmu si
      uživatelé mohou zakoupit  placenou  technickou  podporu. Ta obsahuje
      mnoho  stupňů, od  zodpovídání  e-mailových  dotazů, až po vzdálenou
      administraci systému a návštěvy  vývojářů u zákazníků. Nechci nikoho
      zrazovat od finanční podpory  autorů, ale musím konstatovat, že když
      jsem upgradoval na RedHat Linux 4.9 a MySQL přestalo fungovat, Monty
      problém vyřešil asi po pěti dopisech za 4 hodiny a to žádnou podporu
      zaplacenou  nemám.  (Jednalo se jak možná  mnozí tuší o první  verzi
      RedHatu s glibc2, tehdy se MySQL rozběhlo po zakomentování  několika
      funkcí  v  hlavičkových  souborech.  Dnes  si s glibc2  rozumí,  ale
      požaduje  nejnovější  verzi z RedHat/upgrade.) Pro srovnání  náklady
      jsou  takovéto:  server  pro  komerční  využití a jednoho  uživatele
      200\,  server  pro  komerční  využití  a  deset  uživatelů  1500\,
      placená  podpora -- základní  verze  200\ na rok,  placená  podpora
      nejkomfortnější  5000\  na  rok  (obsahuje  vyhotovení  speciálních
      dotazů typu {\tt SELECT můj\_vzoreček(první  sloupec, druhý sloupec)
      FROM  databáze;}  v  jednotkách  hodin,  právo  požadovat  speciální
      úpravy serveru,  instalace u zákazníka a mnohé další).  Závěrem snad
      jen tolik, že autoři  slibují, že po dokončení  dostatečně  dokonalé
      verze (podle jejich  subjektivního  názoru) budou všechny  předchozí
      uvolněny pod  názvem GNU MySQL pod GNU GPL licencí. Pro tu dokonalou
      verzi zůstane v platnosti  omezení  prodeje a integrace do vlastních
      produktů, do té doby než bude ještě dokonalejší verze.

          Kolik  databáze může stát už tedy víme a teď se podíváme co umí.
      Je toho  opravdu  hodně.  Nebudu  zde zmiňovat ani  zdaleka  všechny
      možnosti,  jistě si je prohlédnete  na adrese  http://www.tcx.se. Za
      základní považuji podporu následujících operačních systémů

       Solaris 2.5, 2.6 with native threads.
       SunOS 4.x with the included MIT threads package.
       BSDI 2.x with the included MIT threads package.
       BSDI 3.0 and 3.1 native threads.
       SGI IRIX 6.x with native threads.
       AIX 4.x whith native threads.
       DEC UNIX 4.x with native threads.
       Linux 2.0+ with LinuxThreads 0.5, 0.6 and 0.7.
       FreeBSD 2.x with the included MIT threads package.
       FreeBSD 3.x with native threads.
       SCO OpenServer with a recent port of the FSU-threads package.
       NetBSD
       OpenBSD 2.1
       HPUX 10.20 with the included MIT threads package.
       Win95 and NT. Tato verze je k dispozici jen pro platící zákazníky.

          MySQL je  multithreadovou  aplikací,  proto  dokáže  vynikajícím
      způsobem rozkládat zátěž na více procesorů.

          Podpora  kompletní  normy  ANSI  SQL  92  s  vyjímkou  vložených
      procedur,  triggerů,  cizích  klíčů,  pohledů  (views)  a transakcí.
      (Vysvětlení toho proč MySQL neumí transakce zabírá několik  odstavců
      v dokumentaci, zhruba takto:  databáze bez transakcí je 3x rychlejší
      a většinu věcí lze řešit alternativní cestou přes zamykání tabulek.)
      Nicméně mi transakce  scházejí a jsou zřejmě  nejpádnějším  důvodem,
      proč  se  MySQL   prosazuje   především v oblasti   prohlížení   dat
      statičtějšího  charakteru.  Mnozí jistě  namítnou, že transakce jsou
      potřeba  především  tam, kde operační  systém, na kterém  databázový
      server  běží,  neposkytuje  dostatečnou  stabilitu,  ale  přesto  je
      databázové  programování s transakcemi  snažší,  srovnal  bych  to s
      vyjímkami v C.

          MySQL  má  určité  omezení  v konstrukcích  používajících  OUTER
      JOINs,  např. nemá vůbec implemetován FULL OUTER  JOIN. Bežné dotazy
      ale takové speciality stejně nepoužívají.

          Naopak navíc oproti normě SQL 92 má mnoho matematických  funkcí,
      nastavování parametrů, aliasy pro mnoho funkcí, tak aby syntaxe byla
      kompatibilní s co největším počtem databází,  automatické generování
      ID a porovnávání  pomocí  regulárních  výrazů.  Dá se  předpokládat,
      že pokud  umíte  psát SQL dotazy pro ORACLE,  INFORMIX či INTERBASE,
      MySQL jim porozumí.

          Protože máte k dispozici bohatě komentované  zdrojové texty není
      problém si dopsat další speciální  funkce. Pro funkce  matematického
      typu existuje unifikované rozhraní. Jak praví manuál:

          MySQL  sice nemá  vložené  funkce, tak jak jste  zvyklí z jiných
      databází,  kde se vytvářejí v SQL  jazyce.  MySQL má vnořené  funkce
      psané v jazyce C, každý si může napsat co potřebuje.

          Při  běhu  volitelně   vytváří  isamlog,  ze  kterého  je  možné
      rekonstruovat  poškozenou  databázi,  případně  provést  příkazy  od
      poslední zálohy znovu.

          Kromě BLOBu neomezené velikosti (tedy omezené velikostí dostupné
      paměti) má typ  TEXT se stejnými  vlastnostmi,  ale při  porovnávání
      v poli typu TEXT se ignoruje velikost písmen.

          A v neposlední řadě, MySQL má dotaženou podporu  češtiny. Nejen,
      že vypisuje  (samozřejmě jen pokud si přejete) hlášení o provedených
      akcích česky, ale umí porovnávat české výrazy u výběrových  kritérií
      bez ohledu na velikost  písmen a třídí maximálně  algoritmizovatelně
      věrně podle platné ČSN s respektováním specifik  písmenka ch. Jediné
      co musíte udělat je při překladu přidat parametr

      ./configure -with-charset=czech

          Ale to stále není všechno, MySQL  interně  pracuje v ISO-8859-2,
      ale klient může používat jiné kódování. Žádný problém -- stačí zadat
      set character set cp1250_latin2 (v jiné verzi může být i cp1250_il2)
      a klient se serverem  komunikuje v cp1250.  Tato možnost  zatím není
      podchycena  jako  parametr na příkazové  řádce při konfiguraci a tak
      je nutné v .../src/sql/convert.cc  zrušit  komentář,  který  blokuje
      #define DEFINE_ALL_CHARACTER_SETS.

          Ve  verzi  3.21.26-gamma  je  ještě  chybička,   zřejmě  vypadlo
      několik  řádek z patche, a tak přepínaní  charsetů úplně  nefunguje.
      Předpokládám, že v době kdy budete článek číst, bude vše opravené.

          V blízké  době  bude  uvolněna  verze  3.21.30,  která  bude mít
      ve standardní  distribuci jak plně funkční  překódovávání  znakových
      sad na straně  serveru, tak drobné  opravy v konstrukci  SELECT LIKE
      při použití češtiny.

      Monty říká:

          Do MySQL je možné  implementovat  všechno,  pokud  chcete  vidět
      opravdu  složitý  algoritmus  podívejte  se do  ctype-czech na české
      třídění.

          (Třídění  Monty  nedělal, je to dílo  zlatých  českých  ručiček.
      Nebudu jmenovat, nerad bych na někoho zapomněl).

          Pro MySQL existuje  podpora ODBC, tedy ODBC ovladače pro Windows
      (pouze 95 a NT), JDBC a samozřejmě sdílená knihovna  libmysqlclient,
      kterou může použít libovolný  program  napsaný v jazyce C. Dále jsou
      dostupné knihovny pro Perl a Python.

          Server  komunikuje s klientskou  částí  dvěma  způsoby, buď před
      socket, nebo po síti.  Druhou  variantu lze potlačit  parametrem při
      startu démona. Databáze jsou před neoprávněnou manipulací  zajištěny
      soustavou  přístupových práv.  Práva se přidělují ve třech stupních:
      na stroj, ze  kterého  se  uživatel  přihlašuje,  databázi a tabulku
      v databázi.  Jedná se o běžná  práva  jako  čtení,  zápis,  přidání,
      vytvoření  tabulky,  restart serveru, výpis běžících úloh a podobně.
      Stejně  jako  u  mSQL  není  tato  ochrana  neprůstřelná,  neprovádí
      se žádné  šifrování  dat,  takže  při  získání  fyzického  přístupu,
      mohou být data odnesena. Není také problém podvrhnout  serveru jinou
      databázi  uživatelských práv. Opět to ale vyžaduje  fyzický  přístup
      k disku a právo na restart  serveru, ten totiž  práva čte jen jednou
      při startu  nebo restartu.  Hesla  samotná  jsou v databázi  uložena
      v šifrované  podobě a stejně  tak každý  klient  obsahuje  šifrovací
      engine,  takže  hesla  se  po  sítí  nepřenášejí,  nebo  alespoň  ne
      v otevřené  podobě. Démon se má startovat dávkou  safe_mysqld, která
      se snaží  odhalit  běžnejší  podvody se  symlinky a provádí  několik
      dalších kontrol.

          Pro import a export souborů existuje několik nástrojů.  Základní
      je možnost  exportovat  data ve formátu  SQL příkazů do souboru. Ale
      existuje i konverzní  program z a do DBF souborů,  nebo možnost číst
      a zapisovat data do souborů typu comma delimited.

          XMySQL Pro administraci a prohlížení dat existují Xové nástroje.
      Sice  umožňují   komfortní   nastavování  práv  klikáním  myší,  ale
      nevynikají právě  rychlostí (to ale bude zajímat jen majitele  486).
      Stejný komfort na příkazové řádce poskytuje  mysqladmin, který kromě
      zakládání a rušení databází  zobrazuje stav serveru, obsazení paměti
      a počet vyřízených požadavků. Struktura databází se dá zobrazit přes
      mysqlshow.  Když se stane, že server  nedokáže  databázi  po výpadku
      otevřít, lze ji opravit  programem  isamchk,  naštěstí  jsem jej ale
      nikdy nepotřeboval.

          Velikost  databází je omezena jen velikostí disku. Autoři uvádí,
      že největší  implementace běží nad 50 000 000 záznamy bez nejmenšího
      zaváhání.

          Závěrem  zmíním  několik  produktů,  které s MySQL úzce souvisí.
      Na  prvním  místě  musí  jistě  být  scriptovací  jazyk  pro  tvorbu
      dynamických  WWW   stránek   PHP/FI,   který   naleznete  na  adrese
      http://www.php.net.   Tento   program   existuje  ve  dvou  verzích,
      2.x a 3.x,  které  se  liší  syntaxí a především  použitým  jazykem.
      Řada 3.x byla přepsána do C++.  Funkčně  jsou zatím  stejné, ale 2.x
      nemá asi budoucnost, proto se pro nové implementace  doporučuje 3.x.
      Trojková řada však  zavádí  komfort v generování  dynamických  stran
      nevídaný.  Existují  v ní  dokonce  objekty  a  dědičnost.  Obsahuje
      moduly pro zobrazení  zdrojového kódu stránek s obarvováním a mnoho,
      mnoho dalšího zajímavého. Zcela jistě se k PHP/FI vrátíme v příštích
      číslech.

          O  něco  méně   dokonalý   (podle  mne)  je  WWW-SQL  na  adrese
      http://www.daa.com.au/james/www-sql/,  pro  někoho   však  může  být
      příjemné, že se syntaxí přibližuje ASP z Windows NT.

          O totální  zpřístupnění  databáze  na  Internetu  se  snaží  WDB
      z adresy http://www.lava.net/beowulf/programming/wdb/, produkt se mi
      moc líbí, bohužel v balíku  omylem chybí jedna část a autor  nestihl
      dodat  opravu.  Jedná  se v zásadě o formuláře  přístupné  přes  WWW
      rozhraní  s běžnou  funkčností,  tedy  zobrazení,  úpravy,  vkládání
      nových, definice filtrů a podobně. Možná se k WDB vrátíme v příštích
      číslech.

          Velmi  zajímavý je internetový  obchodní dům  použivající  MySQL
      a PHP/FI na adrese http://www.minivend.com/minivend/.

          Pro  úplnost  je  nutné  dodat, že  výše  zmíněné  produkty  lze
      připojit i na PostgreSQL. MySQL má ale o něco menší paměťové nároky.

          Dále  existují  podpory  pro BIND, kdy BIND v rozsáhlých  sítích
      používá  extrémně rychlé vyhledávací stromy  implementované v MySQL,
      podpora  pro  autentizaci  uživatelů a logování  přístupů  na server
      APACHE,  fulltextové  vyhledávací  nástroje  (bohužel  dostupné  jen
      v angličtině  a dánštině,  vzhledem  k tomu,  že  obsahují  databáze
      synonym  a podobné  vymyšlenosti  je  jejich  portování  na  češtinu
      extrémně obtížné). A mnohé další.

          Možná  jsem  vás  přesvědčil,  že  MySQL  si  trochu  pozornosti
      zaslouží.  Při  rychlosti  jakou   nabírá  nové  možnosti  a  funkce
      aspiruje na nejrozšířenější  databázi  vůbec.  Problém free software
      je  samozřejmě v tom,  že není  znám  počet  jeho  uživatelů,  takže
      až tento  okamžik  nastane, tak to nikdo  nepozná.  Pokud  plánujete
      zveřejňování dat na internetu, rozhodně si na MySQL ve spojení s PHP
      najděte  chvilku  času. Pro ty, kteří si nedovedou život  představit
      bez FrontPage: PHP 3.0 s ní dokáže  pracovat, resp.  používá  takové
      značky,  které FrontPage  nezničí. Sice zatím  nejsou české binárky,
      ale překlad netrvá na pentiích déle než hodinu.

                                    Závěrem

          Která  je  tedy  vlastně   nejlepší?  Těžko  říci,  stejně  jako
      ve velkých  databázích typu ORACLE,  INFORMIX či DB2, každý má svého
      favorita, na kterého  nedá  dopustit.  Vývojáři  spolu  soutěží  jak
      ve spolehlivosti, tak rozsahu  poskytovaných  funkcí a tak jakékoliv
      dnes  provedené  srovnání  nemusí za měsíc s příchodem  další  verze
      souhlasit.  Mým  osobních  favoritem  je, jak jste si jistě  všimli,
      MySQL.  Přestože není až tak úplně free  vítězí  především  podporou
      češtiny.


            výheň