Firebird podporuje jak embeded tak normalni client-server zpracovani. Embeded ovsem je trosku slozitejsi na konfigurovani a uspesne zlinkovani vysledne aplikace, ktera ji pouzije. Sam jsem se rozhodnul pro pouziti client-server i na jednom stroji s jednim klientem, nez pouziti embeded.
Pravda. Ted se mi konecne podarilo rozbehat embedded verzi Firebirdu 1.5 v pythonu. Hura! :) Mozna, ze pod win32 to neni zas takovy problem (nezkousel jsem, ale existuji binarky/.dll a hotovy python import + howto), ale pod Linuxem je to mnohem neprijemnejsi. Nikde po netu zadna dokumentace, jen sem tam zminka na mailing listech, stripky informaci. Zabralo mi to dva dny browseni, zkouseni, stahovani, kompilovani a tuneni. Ted uz ale funguje jak vytvoreni databaze (db per file), tak connect() a SQL dotazy bez potreby serveru. Dokonce to ani neni tak tezke nainstalit, kdyz uz clovek vi co a jak. :)
Poměrně dlouho jsem hledal rychlou a úspornou diskovou hash pro použití v Javě a přes cdb od DJB (pouze read only, při přidání záznamu nutno přegenerovat celou db), JDBM, W3C JDBM (obě měly v mém případě problémy s poškozováním dat, i když jsem nepřišel na skutečnou příčinu) a QDBM (pouze JNI wrapper okolo C knihovny a navíc také problémy s konzistentností dat) jsem nakonec doputoval k reimplementaci perlové Sdbm a jsem spokojen. Rychlost je dobrá, stabilita perfektní, API rozumné a v případě potřeby jde do databáze "nahlédnout" perlovým skriptem. Ovšem používá také dva soubory a navíc s dírami (sparse), což by mohlo na některých platformách vadit.
HSQL je super, tu používám zase pro jiné účely :)
Ale diskovou hash a SQL nepovažuju až tak moc za vzájemné alternativy - podle mě jsou každá vhodná pro trochu jiné účely. V tomto případě šlo o indexy, kterých existuje poměrně hodně, ale většina z nich je potřeba jen namátkově. Takže jsem potřeboval při náhlém požadavku na neotevřený index poměrně rychlou reakci, což HSQL bohužel nesplňuje - počáteční inicializace tabulek podle uloženého skriptu a případné načítání dat je příliš pomalé.
Ale jak říkám, tomu projektu opravdu fandím a líbí se mi :)
Pokud verim RedHatu, ze mi do /usr/share/doc/db4-4.*/LICENSE dali ten spravny soubor, tak licence BerkeleyDB 4 je velmi podobna GPL v tom, ze pri distribuci binarni formy BerkeleyDB v ramci vetsiho programu se vyzaduje distribuce zdrojovych textu k celemu programu. Cili rekl bych nic spatneho.
Fakt nevim kdo by dneska v aplikacich pouzival db-1.85, protoze to neumi paralelni pristup, resp. zamykani se musi delat externe napriklad pres lockf() nad jednim z DB souboru.
-Yenya