Lekka baza danych Javascript do użytku w Node.js [zamknięte]


131

Każdy wie o lekkiej, ale wytrzymałej bazie danych, napisanej w JavaScript, której można używać z Node.js.

Nie chcę „wagi” (świetnych) rozwiązań, takich jak Mongo czy Couch. Wystarczyłaby prosta, zapisana w pamięci baza danych JS z możliwością przechowywania na dysku jako pliku. Używałbym go tylko do przechowywania niewielkich ilości danych.

Wymagania:

  • może działać w procesie z aplikacją serwera node.js.
  • może zapisać całą bazę danych na dysku i odzyskać po awarii
  • NIE ma potrzeby niepotrzebnych zapisów ani obsługi transakcji
  • szybkie zapytania i sortowanie byłyby fajne
  • musi obsługiwać tylko małe ilości danych, łącznie do 1 MB

Do tej pory natknąłem się na TAFFY db, ale tak naprawdę nie wydaje się, aby był zoptymalizowany do użytku w Node.js. Czy ktoś widział, czego szukam?

Dzięki


Odpowiedzi:



105

Miałem takie same wymagania jak Ty, ale nie mogłem znaleźć odpowiedniej bazy danych. nStore był obiecujący, ale API nie było wystarczająco kompletne i niezbyt spójne.

Dlatego stworzyłem NeDB , które jest osadzoną bazą danych pozbawioną zależności dla projektów Node.js. Możesz go używać z prostym require(), trwałym interfejsem, a jego API jest najczęściej używanym podzbiorem bardzo dobrze znanego API MongoDB.

https://github.com/louischatriot/nedb


9
nedb jest świetny, ale należy pamiętać, że nie można go używać w wielu procesach - każdy z nich otrzymuje własną kopię podczas uruchamiania.
Meekohi

13
W pierwszej kolejności wygląda na to, że NeDB zostało porzucone.
Guy

5
Nie rozumiem, dlaczego ostatnie zatwierdzenie 1,5 roku temu oznacza porzucenie projektu. Absolutnie nie, właśnie osiągnął swój cel i nie widzę żadnej wartości w pełzaniu funkcji ...
Louis Chatriot Stycznia

7
Rozważ posiadanie prostego skryptu, który aktualizuje README co 3 miesiące, zastępując ostatnią linię z napisem „Ten projekt jest nadal aktywny jako <dzisiejsza data> - NeDB (c) 2013- <dzisiejszy rok> Louis Chatriot”; komunikat o zatwierdzeniu powinien brzmieć mniej więcej tak: „stwierdzenie, że projekt jest nadal aktywny na dzień <dzisiejsza data>”, co będzie pierwszą rzeczą, jaką ludzie zobaczą na górze github.
Giacomo Lacava

7
@LouisChatriot Muszę się zgodzić. Masz 107 problemów, 32 PR, a ostatnia zmiana kodu miała miejsce 3 lata temu. Widząc to, to oprogramowanie, którego nie chcę wprowadzać i radzić sobie z niezgodnościami (3 lata w js dev to wieczność), problemami, które są ignorowane itp. Odpowiednia ilość gwiazdek, ale nie krzyczy świeżo.
Carles Alcolea,

18

Wygląda na to, że NeDB jest tym, czego szukasz. Z notki:

Wbudowana trwała baza danych dla Node.js, napisana w Javascript, bez zależności (z wyjątkiem oczywiście modułów npm). Można o nim myśleć jak o SQLite dla projektów Node.js, którego można używać za pomocą prostej instrukcji wymagania. Interfejs API jest podzbiorem bazy danych MongoDB. Możesz go używać jako trwałego lub tylko w pamięci.


@Deilan Nie rozumiem, dlaczego ostatnie zatwierdzenie 1,5 roku temu oznacza porzucenie projektu. Absolutnie nie, właśnie osiągnął swój cel i nie widzę żadnej wartości w pełzaniu funkcji ...
Louis Chatriot Stycznia

@LouisChatriot Zgadzam się, że generalnie mylę się z dotychczasowymi ocenami. Więc usunąłem to z moich początkowych komentarzy.
Deilan

18

Lokijs : szybki magazyn danych zorientowany na dokumenty w pamięci dla node.js, przeglądarki i cordova.

  • Magazyn danych Javascript w pamięci z trwałością
  • Baza danych NoSQL w przeglądarce z synchronizacją i utrwalaniem
  • sklep w stylu Redis i instalacja npm
  • Trwała baza danych NoSQL dla Cordova
  • Baza danych NoSQL z możliwością osadzania z trwałością dla pakietu node-webkit

LokiJS jako idealne rozwiązanie:

  • Aplikacje mobilne - zwłaszcza oparte na HTML5 (Cordova, Phonegap itp.)
  • Wbudowany magazyn danych Node.js dla małych i średnich aplikacji
  • Osadzone w aplikacji komputerowej z Node Webkit

https://github.com/techfort/LokiJS


czy moje dane w lokiJS zostaną wyczyszczone, jeśli wyczyszczę lokalny magazyn?
HIRA THAKUR

@LeonardoDaCodinchi - zależy od tego, jak go używasz, ale w Node zapisuje do pliku JSON w celu zachowania trwałości.
BryanGrezeszak

Baza danych jest jednak nadal przechowywana w pamięci podczas uruchamiania. Z tego, co zrozumiałem.
mjwrazor

14

Spójrz na http://www.tingodb.com . Wierzę, że robi to, czego szukasz. Dodatkowo jest w pełni kompatybilny z API MongoDB. Zmniejsza to ryzyko implementacji i daje możliwość przejścia na ciężkie rozwiązanie w miarę rozwoju aplikacji.

https://github.com/sergeyksv/tingodb


1
Pełna kompatybilność z MongoDB to bardzo fajna funkcja - opracuj swoją aplikację do pracy z małą lokalną bazą danych, a jeśli zajdzie taka potrzeba, przeskaluj do MongoDB ... Dzięki!
Brad Parks,

... ale zdecydowanie nie zapomnij porównać z nedb , który jest również kompatybilny z MongoDB, i zobacz, który działa dla Ciebie
Brad Parks,

Ostatnie zatwierdzenie 26 grudnia 2016 r.
Deilan


8

Miałem problem z SQLite3, nStore i Alfredem.

To, co działa dla mnie, jest zanieczyszczone węzłami :

path = "#{__dirname}/data/messages.json"
messages = db path

message = 'text': 'Lorem ipsum dolor sit...'

messages.on "load", ->    
    messages.set 'my-unique-key', message, ->
        console.log messages.get('my-unique-key').text

    messages.forEach (key, value) ->
        console.log "Found key: #{key}, val: %j", value

messages.on "drain", ->
    console.log "Saved to #{path}"

Dziękuję za udostępnienie, od jakiegoś czasu szukałem czegoś takiego. To w połączeniu z małymi stronami internetowymi działa dobrze!
Dieterg

1
@DieterGoetelen nie ma za co! Niedawno byłem też całkiem zadowolony, używając mocniejszego EJDB, który ma składnię podobną do MongoDB i ma powiązania w Node.js i nie tylko github.com/Softmotions/ejdb-node
Radek


5

Może powinieneś wypróbować LocallyDB który jest łatwy w użyciu i lekki oprócz zaawansowanego systemu wyboru podobnego do wyrażenia warunkowego javascript ...

https://github.com/btwael/locallydb


Dzięki Wael Amine Boutglay LocallyDB właśnie zrobił swoje dla node js. Wcześniej pracowałem z php i stworzyłem własną bazę danych w postaci
Angshu Guha

LocallyDB jest przydatne do testowania lokalnego ! Należy pamiętać, że używa on bloku IO. Czy nie używać go w produkcji.
Junle Li

1
Link nie działa. To strona parkowania domeny.
rsp

Poprawiono link @rsp, sprawdź http://boutglay.com/locallydb/
Wael Boutglay

Ostatnie zatwierdzenie 1 sierpnia 2016 r.
Deilan


1

Napisałem jaguarDb, aby poradzić sobie z niektórymi rzeczami, o których wspominasz, ponieważ czasami potrzebuję "małej" bazy danych do projektów demonstracyjnych lub testowych, a nie chcę polegać na mongoDB lub innej prawdziwej bazie danych.

https://github.com/hectorcorrea/jaguarDb


2
Ostatnie zatwierdzenie 3 kwietnia 2013 r.
Deilan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.