/ / Ciągle działający magazyn kluczy i wartości nieprzerwanych dla node.js - node.js

Wbudowany, trwały magazyn kluczy i wartości dla pliku node.js - node.js

Mam potrzebę przechowywania niektórych metadanych w węźle.Aplikacja js piszę. Zamiast wymyślać własny format plików i zarządzać tym plikiem, chciałbym użyć stałego ciągu klucz-wartość w procesie.

Patrzyłem na mongodbę, ale wygląda na tomongodb musi zawsze być uruchamiany poza procesem (to znaczy, musisz najpierw uruchomić serwer mongo, a następnie połączyć się z nim w node.js.) Wymagam, aby to było co to jest sklep, że istnieje całkowicie wewnątrz node.js proces - lub przynajmniej, że wszystkie procesy zewnętrzne są w całości zarządzane w sposób przejrzysty przez bibliotekę i zabijają je, gdy aplikacja zamyka połączenie.

Nie zależy mi zbytnio na wydajności, ale miło byłoby wspierać asynchroniczne IO w sklepie, aby nadążyć za całą asynchronizacją Node.

Byłoby również miło, gdyby indeksy obsługiwane przez magazyn wspierały, ponieważ zdecydowanie będę sprawdzał dane w sposób, w jaki indeksy byłyby pomocne.

Jestem całkiem pewien, że "sqlite" będzie działało dla mnie,z tym wyjątkiem, że nie uważam tego za prawie tak wygodne, jak sklep z kluczem wartości.) Idealnie powinienem mówić w języku JSON, nie SQL, ale sqlite zadziała, jeśli nic lepszego nie będzie istnieć.

Dzięki!

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz być zainteresowany użyciem redis http://redis.io/

Istnieje popularna biblioteka pomocnicza dla węzła https://github.com/mranney/node_redis

Następnie możesz to zrobić:

var redis = require("redis");
var client = redis.createClient();

client.set("foo_rand000000000000", "OK");

3 dla odpowiedzi № 2

Spójrz na https://github.com/sergeyksv/tingodb. Jest ściśle zgodny z interfejsem API MongoDB, więc możesz go uaktualnić do MongoDB, kiedy będziesz go potrzebować.


2 dla odpowiedzi nr 3

Spróbuj nStore.
https://github.com/creationix/nstore

Jest to proces w magazynie klucz-wartość procesu. Proste w użyciu.


1 dla odpowiedzi nr 4

Myślę, że możesz być zainteresowany final-db.

FinalDB używa systemu plików do przechowywania danych. Nie jest to jednak pamięć klucz-wartość, ale oparta na dokumencie rozwiązanie nosql. Obsługuje indeksy (mapy) - możesz określić funkcje map na każdej kolekcji i oczywiście to jest w trakcie rozwiązanie.


0 dla odpowiedzi № 5

Spojrzeć na levelup. To opakowanie dookoła leveldb. Levelup wrapper instaluje leveldb poprzez npm i działa całkowicie w ramach procesu twojego węzła.

Istnieje wiele baz danych zbudowanych na bazie leveldb. Spojrzeć na https://github.com/rvagg/node-levelup/wiki/Modules dla listy.

Dla wygody możesz użyć poziom pakiet, który łączy zarówno levelup, jak i leveldown


-1 dla odpowiedzi № 6

Co powiesz na...

var store = { };

//store "myKey"
store.myKey = { foo: "bar" };

//fetch "myKey"
var x = store.myKey;

Poza tym, możesz znaleźć Google z prawie dokładnie swoim tytułem http://pgte.github.com/alfred/

Naprawdę nie sądzę, że jest jeszcze bardzo dużo stabilnych, ale oferta zewnętrzna jest całkiem dobra (np. Redis)