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 :)