Czy jest znana implementacja open source w postaci struktury danych w Erlang?B + Struktura danych drzewa w Erlang
Odpowiedz
Zdecydowanie polecam zajrzeć do aplikacji eleveldb
, jeśli naprawdę potrzebujesz drzewa B +. Chodzi o to, że chcesz przechowywać dane w liściach drzewa, off-line na dysku, ponieważ jest to miejsce, w którym B + -tury są zwykle opcją. Istnieje również wariant w czystym Erlangu z LevelDB o nazwie hanoidb
, który również jest całkiem ładny, napisany przez Kresten Krab Thorup. Ten sam obszar zastosowania.
Jeśli potrzebujesz przechowywania w pamięci, powinieneś spojrzeć na ETS lub Mnesię (te ostatnie do dystrybucji). W Erlang są to najszybsze rozwiązania, ponieważ masz tę zaletę, że nigdy nie trafiasz na dysk. Jest to szczególnie ważne, jeśli możesz wykonywać standardowe dane o kluczach/wartościach na swoich danych bez konieczności uruchamiania w kontekście transakcyjnym w Mnesii (robi brudne-czyta). Typowa szybkość wyszukiwania to 5-10 nanosekund.
Nie ma dostępnej samodzielnej biblioteki, którą znam. Jednak CouchDB source code jest bardzo czytelny i dobrze zaimplementowany.
tylko alternatywą, jeśli nie chcesz, aby włamać się do systemów baz danych open source: czysto funkcjonalne struktury danych
Chris Okasaki za może dać pewne wyobrażenie o wdrażaniu go samemu. Drzewo B + nie jest tak skomplikowane z mojego doświadczenia.
Polecam używać gb_trees, jeśli chcesz przechowywać w pamięci i coś więcej niższego poziomu (w pewnym sensie) niż ets i mnesia.