2013-03-21 7 views
7

Poszukuję trwałej, sekwencyjnej bazy danych, która umożliwia efektywne losowe wstawienia i usunięcia. Znalazłem następujące realizacje:Clojure finger trees and flexvec

Ponieważ nie było zbyt wiele aktywności w clojure.data.finger drzewa przez ostatnie dwa lata, a inne są stosunkowo nowe, zastanawiałem się, czy ktoś ma doświadczenie w używaniu któregokolwiek z nich w produkcji i czy istnieją alternatywy, które przeoczyłem.

+0

Dlaczego persistentVector firmy clojure nie jest wystarczająco dobry? Czy możesz dodać szczegóły dotyczące twojego przypadku użycia? – ordnungswidrig

+0

@ordnungswidrig, w odpowiedzi na twoje żądanie dotyczące mojego przypadku użycia: Mam dokument, który jest reprezentowany jako tablica. W odpowiedzi na zdarzenia dokument jest aktualizowany wstawkami i usuwaniami w określonym przesunięciu w dokumencie. Zazwyczaj w stosunkowo dużym dokumencie będzie tylko jedna lub dwie wstawki lub usunięcia. W przypadku implementacji wektora trwałego clojure muszę ponownie utworzyć dokument na każdym zdarzeniu. Na przykład z drzewem palcowym byłbym w stanie podzielić dokument i dołączyć go do zmodyfikowanych przesunięć. – Inshallah

+0

Z powodu podziału strukturalnego nie powinno to wiązać się z dużymi kosztami. A może potrzebujesz dostępu do podzielonych części, np. dla zoptymalizowanej trwałości dysku? – ordnungswidrig

Odpowiedz

1

Kolejna implementacja clojure/core.rrb-vector została announced. Ponieważ jest na koncie github clojure, wygląda na to, że będzie to de facto implementacja.

+2

clojure/core.rrb-vector to po prostu gierek Michała przeniesiony do biblioteki contrib. –