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 № 1Moż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)