Jenom poznámka k tomu tvrzení, že u Firebirdu "Existuje už aj verzia pre Linux":
Firebird, původně Interbase a ještě původněji Jrd byla koncem sedmdesátých let nejprve implementována "pro počítače Apollo, VAX, PDP a HP, a v prostředí operačního systému VMS a UNIXových systémů jako je HP-UX, Solaris nebo AIX" (citát z knihy Podrobná příručka InterBase/Firebird). Na Windows - a také NetWare a Linux - byl přenesen až později Borlandem poté, co tuto databázi v roce 1989 koupil od původního autora Jima Starkeyho. Podle zmíněné knihy byla InterBase vůbec první komerční databází přenesenou na Linux. Firebird, který vznikl po uvolnění kódů InterBase 6.0 v roce 2000, byl tudíž od začátku vyvíjen jako multiplatformní databáze běžící mj. i na Linuxu.
MS Windows tudíž rozhodně není primární platforma, na níž by Firebird běžel.
Co se týče samotného testu, řekl bych, že testování rychlosti načítání jedné tabulky je od standardního nasazení docela vzdálené a jeho vypovídací hodnota je docela malá. Škoda. :-/
Upřesnění: Jim Starkey prodal InterBase (i se svou firmou) nejprve Ashton-Tate (ano, dBase), Borland posléze koupil celou Ashton-Tate i s InterBase.
MS Windows tudíž rozhodně není primární platforma, na níž by Firebird běžel.
Podle toho, co vídám v firebird-devel listu, bych řekl, že v současné době je win32 primární platformou podstatné části vývojového týmu.
Nezlobte se, ale pokud říkáte jeden dokument, pak si pod tím představuji jedinou knihu, případně PDF či HTML soubor. Skupinu HTML stranek třeba i zabalených do CHM nepovažuji za dokument. Proto jsem se divil, že se vám nelíbí rozdělení dokumentace FB na dokumentů, protože i skupinu PDF lze prolinkovat do jediného "dokumentu". Mimochodem i PDF umožňuje hypertextové odkazy v rámci dokumentu, a zmíněné dvě knihy toho hodně využívají. Mezi PDF a HTML tedy nemusí být až takový rozdíl, nicméně uznávám, že vytvořit HTML je jednodušší.
Nicméně Dokumentační projekt Firebirdu používá DocBook, a produkuje tedy jak PDF, tak čistě HTML verze. Bohužel knihy Firebird Reference a Using Firebird jsou ve FrameMakeru, a převést je do DocBook formátu není až taková trivialita. Základní konverze byla sice strojová, ale vyžaduje to drobné manuální korekce. Vzhledem k rozsahu je to vleklá nudná práce, kterou je jen málo kdo ochotný dělat. Jakmile ovšem bude dokončena, budete mít rázem cca 1200 stránkovou dokumentaci k Firebirdu dostupnou ke stažení či brouzdání přímo na webu projektu.
Ohledně nedostatku dokumentace a její "roztříštěnosti" se bohužel často zapomíná, že:
a) Napsat dobrou dokumentaci je zdlouhavá práce, která v případě technické dok. vyžaduje navíc jak znalost problematiky, tak i schopnost jasně a srozumitelně psát. Dobrých tvůrců *ucelené* dokumentace je tedy jako šafránu, a prakticky nikdo z nich není ochoten to dělat úplně zadarmo (ne že by se vydávání tech. knih nějak zvlášť vyplatilo, ale lepší něco než nic). Proto např. dokumentace kterou vytváří IBPhoenix jde přednostně na placené Developer CD (verze Subscription je Firebirdí verze MSDN), a je uvolněna až se spožděním.
b) Dokumentační projekt si nemůže přivlastnit práci jiných, aby mohl vytvořit jediný superhyperdokument, pořád je zde něco jako autorská práva. Proto je dokumentace poněkud "roztříštěná", a člověk musí informace dohledávat z drůzných zdrojů. To nejlepší co zatím můžeme nabídnout je nashromáždit odkazy na nejdůležitější dokumenty na jedno místo. Obecně je za toto místo uznáván web www.ibphoenix.com nebo .cz
Ano, volně dostupné dokumentace je dost, jsou tu ale dvě ale. Na to, abyste se seznámil se základními funkcemi Firebirdu vydáte několikanásobek času, než u jiných srovnatelných databází, který strávíte hledáním a dáváním si různých střípků informací dohromady.
Tenhle problém "zatím" řeší knihy tištěné či na Developer CD. Až se dokončí konverze, budou dvě základní knihy dostupné i volně na webu projektu.
A to ještě příznivě podpořeno tím, že naštěstí tu máme slušnou příručku od Borlandu k Interbase.
Ta se běžně nedá legálně sehnat, je třeba ji koupit spolu s InterBase. Volně dostupná je pouze dokumentace k IB 6.0, a to jen díky tomu, že nad tím Borland zavírá oči.
Druhé ale je, že se velmi těžko pátrá po dokumentech, které by trochu popisovaly Firebird do hloubky. Byl bych rád, kdybyste mě zejména v tomto bodě přesvědčil o opaku, a já rád vše odvolám.
Mno, zrovna některé knihy jdou překvapivě hodně do hloubky, a popisují i témata které jiné dokumenty moc neřeší (funkce optimalizátoru, struktura databáze, vnitřní mechanizmy funkce serveru apod.). Jinak na webu www.ibphoenix.com jich je celá hromada (bohužel ne nijak přehledně strukturovaná, navíc jsem si teď všiml, že na nedávnou sérii článků pro expery od Ann Harrison není odkaz jinde než v news archivu, což napravíme). To vše a mnoho dalších je součástí Firebirdího MSDN. Já vím, že dost toho je to placené, ale dostupné to je, a je to průběžně uvolňováno pro Dokumentační projekt.
Koupení knihy nic neřeší, protože zkrátka rozsah jakékoli knihy může být jenom zlomkem toho, co může být v kvalitní dokumentaci. Kniha je dobrá věc, ale neřeší vše.
To je s prominutím pěkná hloupost. Pokud chcete začít dělat např. v C#, nemusíte si přece hned kupovat MSDN, stačí *dobrá* kniha. Ani např. dokumentace k PHP nebo Pythonu neobsahuje "úplně všechno". A i kdyby obsahovala, tak tím spíš se mi vyplatí nějaká dobrá kniha, která mi jasně a přehledně podá to podstatné co potřebuji (sám mám pár knih o PHP a Pythonu, a nikdy jsem investice nelitoval). Z osobní zkušenosti vím, že taková "úplná" dokumentace je dobrá tak leda jako referenční příručka, kde rychle najdu to co hledám, ale musím nejdřív vědět co hledám. Na učení a informace které bych měl o daném tématu znát mě vždy upozornily spíš knihy.
Pavle také si dovolím nesouhlasit, ale s Tebou :-) Podle potřeb projektů používám MySQL, PostgreSQL a FirebirdSQL. Poslední jmenovanou zejména díky kvalitnímu propojení s Borlandími vývojovými nástroji.
Dokumentace FbSQL není v nejoptimálnějším stavu, to je fakt. Pravdou je, že proti PgSQL/MySQL je tento server o mnoho pátků mladší a tudíš je to pochopitelné.
Líbí se mi existence Embedded verze a to je veliké plus, protože většina malých projktů nepotřebuje plnou instalaci serveru. Líbí se mi učebnice, kterou jsi napsal, byť zcela logicky nemůže pokrývat celou šíři toho, co FbSQL umí a nabízí.
btw: Doufám, že nevadí, že jsem na tomto serveru zvolil tykání :-)
PS: Mluvim o PgSQL 8.0.X, nikoli starsich verzich.
isc_dsql_free_statement(status_vector, &stmt, DSQL_close);tak vedzte, že toto som robil. Skutočne si myslím, že to bude memory leak. To samozrejme neznamená, že sa vyskytuje všade. Len ja mám na netradičné bugy v programoch jednoducho šťastie.
Nerozumím téhle poznámce. Smyslem testu bylo myslím porovnat databáze mezi sebou, a ne vytářet nějaké ABSOLUTNÍ benchmarky. Není jedno, jestli databáze na "20 GB pomalém disku" vrátí výsledek za 10 vteřin (přičemž na lepším serveru by ho vrátila za 2 vteřiny), když měl autor v úmyslu pouze porovnat výsledky různých databází a SELECTů mezi sebou?
ibase_query()
(nebo, chcete-li, ibase_dsql_execute()
) a ten jeden fetch nemá šanci výsledky podstatným způsobem ovlivnit. Stejně tak je v tomto případě celkem jedno, zda takový typ testu provádíte přes PHP API, céčkové API nebo třeba isql
.
Dobře, tak jsem to zkusil. Výsledek: 528 ms ibase_query()
, 63 ms ibase_fetch_object()
i ibase_fetch_row()
. Aby byly výsledky méně zkresleny náhodnými fluktuacemi, zkusil jsem ještě totéž pro 1000000 náhodně vygenerovaných záznamů místo 266266. Dostal jsem 2058 ms versus 89 ms, tentýž dotaz v isql
ukáže 2.23 s. Takže není pravda ani to, že by byl výsledek ovlivněn efektivitou PHP API, ani to, že by byl (zásadně) ovlivněn chybějícím fetchem.
Pravdu byste měli pouze u druhého testu (s indexem), pak to pro milion záznamů vychází 1 ms na ibase_query()
a 730 ms na ibase_fetch_object()
Na druhou stranu se mi moc nezdá to, co píše autor o importu dat do tabulky. Mám podezření, že z neznalosti používal na každý řádek ibase_query()
; při použití ibase_prepare()
a ibase_execute()
jsem měl tabulku naplněnou za 25 sekund, což by podle výsledků prvního testu odpovídalo necelým třem minutám na jeho systému.
IMO na konkurenčním serveru píšeme s kamarádem seriály o MySQL a PostgreSQL, do srovnání rychlosti se nehrneme a víme, proč to děláme ono stačí navrhnout testovací strukturu a indexy tak, že MySQL propadne o 500% i když tam bude jen 100 řádek.