Ve čtvrtek 1. listopadu proběhla v prostorách pražské Přírodovědecké fakulty UK jednodenní konference věnovaná Firebirdu pořádaná portálem Databázový svět, nazvaná příhodně Firebird Developers' Day 2007.
Podzim u nás bývá tradičně docela hektický, takže kdyby nešlo o akci Databázového světa se kterým tradičně udržujeme přátelské vztahy, a kdyby se Marek Kocan soustavně nepřipomínal (ahoj Marku!), asi bych se z důvodu enormní zaneprázdněnosti této akce neúčastnil. Obzvláště když mám plné ruce práce s přípravou našeho vlastního semináře který se bude konat v pátek 9. listopadu. Protože jsem ale Markovi slíbil přispět svou troškou do programu, nezbylo mi než si přeorganizovat rozvrh. A protože se nic nemá dělat polovičatě, vyhradil jsem si celý den a ne jen pár hodin na vlastní příspěvek. Nakonec jsem rád, že to tak dopadlo.
Přírodovědecká fakulta se nachází na pražském Albertově (kousek od botanické zahrady a Karlova náměstí). Ač Pražák, nikdy jsem tam nebyl. Protože jsem ale do protější budovy docházel na rehabilitace se zády, nebyl problém ji najít. Díky dobrému značení nebyl problém ani najít sál Věž, který bych asi jinak hledal dost dlouho (po schodech do druhého patra, doleva, doleva, po schodech nahoru, doprava a až na konec chodby která je ve skutečnosti spojením několika různorodých navazujících chodeb). Cestu do Věže lemují vitríny s geologickými vzorky, takže si člověk připadá jak v Národním muzeu, a několik skříní s papírovými modely různorodých krystalických struktur mi připomněly dávno časem zavátá léta na základní škole. Samotná posluchárna Věž je poměrně malá, a cca 70 návštěvníků konference ji naplnilo k prasknutí (někteří museli vzít zavděk místem na schodech mezi lavicemi nebo postávat u věšáků).
Začátek akce byl příhodně stanoven na jedenáctou hodinu dopolední, aby mimopražští účastníci nemuseli tak brzo vstávat (a my pražáci unikli ranní špičce). Po krátkém úvodním slově nastoupil Jirka Činčura (jeden z vývojářů Firebird .NET Provideru, ahoj Jirko!) s přehledem novinek okolo Firebirdu, kde zúročil svou účast na letošní mezinárodní konferenci v Hamburku (na zprávu o této akci se chystám v následujících dnech). Vzhledem k tomu, že na toto téma bude na našem semináři mluvit hlavní vývojář Firebirdu Dmitry Yemanov, nebudu spoilovat.
Druhý příspěvek měl Ivan Přenosil na téma „Optimalizace počítání řádků“. Jak známo, příkaz SELECT COUNT(*) FROM TABLE nepatří u Firebirdu k nejrychlejším, protože Firebird musí poctivě přečíst všechny řádky a spočítat je. Jde o technologické omezení dané MGA a způsobem implementace indexů. Nicméně pokud potřebujete rychle znát počet řádků v tabulce, existuje pár triků ja toho s trochou úsilí efektivně dosáhnout (Ivan přislíbil svůj příspěvek zveřejnit na webu a všechny prezentace by se měly rovněž objevit k stažení na Databázovém světě).
Slávek Skopalík z Elekt Labs je dlouholetým uživatelem Firebirdu a zkušeností má na rozdávání, jak často dokazuje na různých seminářích a konferencích. Protože se převážně zabývá aplikacemi ve výrobě, jeho oblíbenými tématy jsou spolehlivost a optimalizace. Není tedy divu, že jeho příspěvek pro Developers' Day měl téma „Základy instalace a optimalizace“. Jako už tradičně šlo o praxí prověřené tipy a triky s názornými příklady.
Po přestávce pohovořil Jirka Činčura na téma „.NET Framework a Firebird“, a pak už přišla řada na můj příspěvek o „Optimalizátoru Firebirdu“.
Po další přestávce odpověděl Lukáš Brůha z KAGK na otázku „Jak realizovat prostorová data nad Firebirdem?“. Jak známo, Firebird nemá standardně žádnou podporu pro práci s prostorovými daty, ani nenabízí příhodné datové typy a typy indexů vhodné pro taková data. Lukášův příspěvek ukázal, jak lze s trochou práce prostorová data do Firebirdu nejen ukládat, ale i zpracovávat. Nicméně pokud nemáte obzvláště dobrý důvod proč se do takového dobrodružství pouštět, použijte raději nějaký jiný systém (např. PostgreSQL). Podpora pro prostorová data se ve Firebirdu jen tak rychle neobjeví (rozhodně se o ní zatím neuvažuje a ani není nijak prioritní, ale u open source nikdy předem nevíte kdo s čím přijde), nicméně v poměrně blízké době by se v enginu měla objevit podpora pro dotazy do jiných databází (prototyp je již privátně implementován), takže byl neměl být problém zkombinovat data uložená ve Firebirdu s prostorovými daty uloženými v lépe vybaveném systému (např. právě PostgreSQL) pomocí těchto dotazů v rámci uložených procedur nebo konstrukce EXECUTE BLOCK.
Na úplný závěr byl zařazen (mírně provokativní) příspěvek Zdenka Kotaly (Sun Microsystems) porovnávající Firebird, PostgreSQL a Derby, příhodně nazvaný „Slon nebo pták ohnivák?“. Na příspěvku bylo znát, že u Sun Microsystems znají dobře PostgreSQL i Derby (konec konců se podílejí na vývoji obou databází), ale o Firebirdu toho mnoho nevědí. Například se jim nechtělo věřit, že pro spolehlivé fungování není zapotřebí Write-ahead Log. Srovnání vlastností všech tří produktů bylo sice férové, a jasně ukázalo rozdílnosti v prioritách, zaměření a charakteru jednotlivých databází, ale následná prezentace výsledků benchmarku všech tří databází již rozhodně férová nebyla (jeden prohřešek za druhým včetně porovnávání hrušek s jablky, testování betaverzí a nevhodně zvolené metodologii). Čehož se s nadšením chytil Marek Kocan v naději na pořádně divokou (a pro pozorovatele tudíž zábavnou) konfrontaci (dokonce několikrát navrhl, že nám nechá přinést bedýnku s rajčaty). K žádnému dramatickému střetu ale nedošlo, neb to mezi open source projekty není zvykem (až na takové to přátelské škádlení). Naopak jsme se předběžně domluvili na spolupráci a společném férovém srovnávacím benchmarku PostgreSQL a Firebirdu. Nakonec jsme si dobře popovídali a vyměnili informace o našich produktech i projektech.
Po skončení programu jsem se s malou skupinkou lidí (mimo jiné ze Sun, Elekt Labs, SuSE) přesunul do nedalekého pohostinství na pár a dokončení nakousnutých diskuzí. Bohužel se už připozdívalo a měl jsem ještě nějaké povinnosti, takže jsem se musel zhruba po půl hodině rozloučit a nechat některé věci nedořešené (naštěstí bude ještě příležitost příští týden).
Dovedu si představit, že WAL není potřeba k zabezpečení databáze. Ale pak si nedovedu vysvětlit proč se o WAL logu uvažuje i pro Firebird :). Na férový srovnávací benchmark se těším, je v tom fůra zádrhelů, tak jsem zvědavý jak se s tím poperete.
p.s.
měli byste si pospíšit, dokud je 8.3 beta .. je to docela rychlík.
[2] WAL log chtěl implementovat už Borland, protože některým lidem se prostě nedá vysvětlit, že není potřeba. Firebird zdědil neúplnou a nefunkční implementaci (ve zdrojích, do binárke se samozřejmě nekompiluje). Nakonec Borland WAL implementoval v pozdějších verzích InterBase (IB 2007 pokud se nepletu). Pro Firebird se s WAL příliš nepočítá, jen na něj občas přijde řeč. Falcon WAL používá, protože není multigenerační na disku, ale pouze v paměti, a proto jej potřebuje. WAL ve Firebirdu by mohl být užitečný pro přírůstkové zálohování (jenže to už řeší NBACKUP jinak) případně pro distribuci změn na hot standby servery (ale to se dá dělat rovněž i jinak).
Jakožto programátor, který realizuje projekty pod Firebirdem, musím říct, že se mi setkání velice líbilo. Vzhledem k tomu, že naše DB obsahují 10ky GB a máme DB i přes 100 GB, největší zájem jsem měl o optimalizaci. Hned několik témat bylo velice zajímavých. Trošičku jsem si šťouchnul do Slávka Skopalíka s těmi plány "zapečenými" ve zdrojích, které neumožňují dát serveru žádnou optimalizační roli, zvláště s pohledem na budoucí vývoj FB. Faktem je, že programátor by měl vědět, co dělá a někdy takový "zapečený" plán je cesta z průseru ven (zvlášť, když jiná cesta momentálně neexistuje). Pokud se na mne zlobí, tak se mu tímto veřejně omlouvám. Zdravím všechny a těším se na další akce.
Musim priznat, ze ten benchmark nebyl uplne povedeny. Napadlo nas ho zaradit na posledni chvili, takze nezbyl cas zkontrolovat proc firebird dopad tak spatne. Kazdopadne to nebyl zamer. Osobne jsem cekal, ze nejhure dopadne JavaDB a PostgreSQL s Firebirdem budou nastejno. Nicmene test ukazal dve dulezite veci a to jednak, ze firebird neskaluje dobre (pripadne u SS vubec) a za druhe PostgreSQL i JavaDB jela dobre ve standardnim nastaveni, kdezto Firebird je treba vyladit a pouzit spravnou uroven izolace, coz zacinajiciho uzivatele muze zaskocit.
Ale jak uz bylo receno provedeme nove mereni na zaklade doporuceni a uvidime jak vse dopadne.
On ten test byl obecne spatne postaven. Jak to bylo narychlo, nebylo to cele dobre promysleno, takze tam byly velke boty. Ale jinak napad je to dobry.
Jeste mala pozn. Firebird neni treba nastavovat, to je jedna z jeho vyhod. Ale kdyz ho chci vyladit na benchmark, potom je treba si malinko s konfiguraci pohrat.
S tim skalovanim je to samozrejme u SS problem. U CS je to lepsi (ale mirne ztraci kvuli nesdilene cache).
Ahoj, doplním, že další ročník se koná již 16. října 2008, více na http://www.dbsvet.cz/view.php?cisloclanku=2008092302. KER
*22.6.1968
Od mala mě fascinoval potenciál počítačů a od prvního osobního seznámení s nimi jsem věděl, že tahle „věcička“ je přesně tím, čím se chci zabývat celý život. Hned po maturitě jsem si našel práci, kde jsem s nimi mohl pracovat a hlavně učit se. V průběhu let jsem vystřídal řadu zaměstnavatelů a specializací (např. ekonomické systémy, implementace BIOSu pro CP/M, řízení tech. procesů) až jsem nakonec na dlouhá léta zakotvil u Delphi a databází (hlavně InterBase), nejdříve ve firmě PCS, pak AKTIS (nyní ABRA) a posléze Borland ČR. Od uvolnění zdrojových textů InterBase v r. 2000 a zrodu projektu Firebird se podílím na jeho vývoji (nyní hlavně jako QA manager). Od r. 2001 pracuji pro spol. IBPhoenix. Mým preferovaným programovacím jazykem je již dlouhá léta Python.
Přečteno 18 036×
Přečteno 17 182×
Přečteno 8 707×
Přečteno 8 629×
Přečteno 6 785×