2012-11-16 18 views

risposta

6

Consiglio vivamente di esaminare l'applicazione eleveldb se è davvero necessario un albero B +. Il punto è che si desidera archiviare i dati in foglie di un albero, non in linea su disco, poiché in questo caso i B + -trees sono normalmente un'opzione. C'è anche una variante in puro Erlang di LevelDB chiamata hanoidb che è anche molto carina, scritta da Kresten Krab Thorup. Stessa area di utilizzo.

Se è necessaria l'archiviazione in memoria, è necessario controllare ETS o Mnesia (quest'ultimo per la distribuzione). In Erlang queste tendono ad essere le soluzioni più veloci in quanto si ha il vantaggio di non colpire mai il disco. È particolarmente vero se è possibile eseguire ricerche di chiavi/valori standard sui dati senza la necessità di eseguire all'interno del contesto transazionale in Mnesia (facendo letture sporche). La velocità di ricerca tipica è quindi di 5-10 nanosecondi.

2

Non c'è una libreria autonoma disponibile che io conosca. Tuttavia, lo CouchDB source code è molto leggibile e ben implementato.

3

solo un'alternativa se non si vuole incidere in sistemi di database open source: puramente funzionali strutture dati di

Chris Okasaki può dare qualche informazione sulla sua attuazione da soli. L'albero B + non è così complicato dalla mia esperienza.

Si consiglia di utilizzare gb_trees se si desidera sia la memoria in-memory e qualcosa di più di basso livello (in un certo senso) di ets e mnesia.