Leichte Javascript-Datenbank zur Verwendung in Node.js [geschlossen]

130

Jeder kennt eine leichte und dennoch dauerhafte Datenbank in Javascript, die mit Node.js verwendet werden kann.

Ich möchte nicht das "Gewicht" von (großartigen) Lösungen wie Mongo oder Couch. Eine einfache JS-Datenbank im Speicher mit der Fähigkeit, als Datei auf der Festplatte zu bleiben, würde ausreichen. Ich würde es nur verwenden, um kleine Datenmengen zu speichern.

Bedarf:

  • kann in Bearbeitung mit einer node.js-Serveranwendung ausgeführt werden
  • kann die gesamte Datenbank auf der Festplatte speichern und nach einem Fehler wiederherstellen
  • KEINE Notwendigkeit für atomare Schreibvorgänge oder Transaktionsunterstützung
  • Schnelle Abfragen und Sortieren wären schön
  • Es müssen nur kleine Datenmengen unterstützt werden, insgesamt bis zu 1 MB

Ich bin bisher auf TAFFY db gestoßen, aber es scheint wirklich nicht für die Verwendung in Node.js optimiert zu sein. Hat jemand gesehen, wonach ich da draußen suche?

Vielen Dank

ConfusedNoob
quelle
Versuchen Sie, github.com/rvagg/node-levelup
hellboy

Antworten:

6

Ich kenne nur Mongo und Couch, aber es gibt auch eine namens Persistence .

Steve
quelle
14
Würden Sie dies immer noch als Lösung betrachten? Das letzte Commit war vor 7 Jahren.
Mjwrazor
3
Letzte Verpflichtung am 31. März 2010.
Deilan
1
Ich denke, Sie suchen nach der neueren PersistenceJS
Chamilyan
1
Wie ist das möglicherweise besser @Chamilyan
Zee
103

Ich hatte die gleichen Anforderungen wie Sie, konnte aber keine geeignete Datenbank finden. nStore war vielversprechend, aber die API war bei weitem nicht vollständig genug und nicht sehr kohärent.

Aus diesem Grund habe ich NeDB erstellt , eine abhängigkeitslose eingebettete Datenbank für Node.js-Projekte. Sie können es einfach verwenden require(), es ist persistent und seine API ist die am häufigsten verwendete Teilmenge der sehr bekannten MongoDB-API.

https://github.com/louischatriot/nedb

Louis Chatriot
quelle
8
nedb ist großartig, aber beachten Sie, dass Sie es nicht für mehrere Prozesse verwenden können - jeder erhält beim Start eine eigene Kopie.
Meekohi
12
Als Heads-up sieht es so aus, als wäre NeDB aufgegeben worden.
Guy
3
Ich verstehe nicht, warum das letzte Commit vor 1,5 Jahren bedeutet, dass das Projekt abgebrochen wird. Es ist absolut nicht so, es hat gerade sein Ziel erreicht und ich sehe keinen Wert in Feature-Creep ...
Louis Chatriot
7
Erwägen Sie ein einfaches Skript, das die README-Datei alle 3 Monate aktualisiert und die letzte Zeile mit der Aufschrift "Dieses Projekt ist noch aktiv als <heutiges Datum> - NeDB (c) 2013- <heutiges Jahr> Louis Chatriot" ersetzt. Die Commit-Nachricht sollte so etwas wie "Angabe, dass das Projekt zum <heutigen Datum> noch aktiv ist" lauten. Dies ist das erste, was die Leute oben auf Github sehen.
Giacomo Lacava
6
@ LouisChatriot Ich muss zustimmen. Sie haben 107 Probleme, 32 PRs sitzen dort und die letzte Änderung am Code war vor 3 Jahren. Wenn ich das sehe, ist es Software, die ich nicht einbringen und mit Inkompatibilitäten umgehen möchte (3 Jahre in js dev sind eine Ewigkeit), Probleme, die ignoriert werden usw. Die richtige Anzahl von Sternen, aber sie schreit nicht frisch.
Carles Alcolea
18

NeDB scheint das zu sein, wonach Sie suchen. Aus dem Klappentext:

Eingebettete persistente Datenbank für Node.js, geschrieben in Javascript, ohne Abhängigkeit (außer natürlich npm-Modulen). Sie können sich das als SQLite für Node.js-Projekte vorstellen, das mit einer einfachen require-Anweisung verwendet werden kann. Die API ist eine Teilmenge der MongoDBs. Sie können es als dauerhaften oder nur im Speicher befindlichen Datenspeicher verwenden.

Christof Jans
quelle
@Deilan Ich verstehe nicht, warum das letzte Commit vor 1,5 Jahren bedeutet, dass das Projekt abgebrochen wird. Es ist absolut nicht so, es hat gerade sein Ziel erreicht und ich sehe keinen Wert in Feature-Creep ...
Louis Chatriot
@ LouisChatriot Ich stimme zu, dass ich im Allgemeinen mit allen bisherigen Urteilen falsch liege. Also habe ich es aus meinen ersten Kommentaren entfernt.
Deilan
16

Lokijs : Ein schneller, speicherinterner dokumentenorientierter Datenspeicher für node.js, Browser und Cordova.

  • In-Memory-Javascript-Datenspeicher mit Persistenz
  • In-Browser NoSQL-Datenbank mit Synchronisierung und Persistenz
  • Ein Speicher im Redis-Stil, den eine npm-Installation entfernt
  • Persistable NoSQL db für Cordova
  • Einbettbare NoSQL-Datenbank mit Persistenz für Node-Webkit

LokiJS als ideale Lösung:

  • Mobile Anwendungen - insbesondere HTML5-basiert (Cordova, Phonegap usw.)
  • Node.js eingebetteter Datenspeicher für kleine bis mittlere Apps
  • Eingebettet in eine Desktop-Anwendung mit Node Webkit

https://github.com/techfort/LokiJS

Damodaran
quelle
Würden meine Daten in lokiJS gelöscht, wenn ich meinen lokalen Speicher lösche?
HIRA THAKUR
@LeonardoDaCodinchi - Hängt davon ab, wie Sie es verwenden, aber in Node wird es zur Persistenz in einer JSON-Datei gespeichert.
BryanGrezeszak
Die Datenbank wird jedoch beim Start weiterhin im Speicher gespeichert. Nach dem, was ich verstanden habe.
mjwrazor
14

Schauen Sie sich http://www.tingodb.com an . Ich glaube, es macht das, wonach Sie suchen. Zusätzlich ist es voll kompatibel mit der MongoDB API. Dies reduziert Implementierungsrisiken und gibt Ihnen die Möglichkeit, mit dem Wachstum Ihrer App auf eine schwere Lösung umzusteigen.

https://github.com/sergeyksv/tingodb

Sergey Korotkov
quelle
1
Die vollständige Kompatibilität mit MongoDB ist eine sehr schöne Funktion. Entwickeln Sie Ihre App für die Arbeit mit kleinen lokalen Datenbanken. Wenn nötig, skalieren Sie auf MongoDB. Vielen Dank!
Brad Parks
... aber vergessen Sie auf keinen Fall, mit nedb zu vergleichen , das auch MongoDB-kompatibel ist, und zu sehen, welches für Sie funktioniert
Brad Parks
Letzte Verpflichtung am 26. Dezember 2016.
Deilan
9

Probieren Sie nStore aus, es scheint eine nette, schlichte, eingebettete Datenbank für den Knoten zu sein. Siehe https://github.com/creationix/nstore

Guy Korland
quelle
1
Letzte Verpflichtung am 2. April 2013.
Deilan
8

Ich hatte Probleme mit SQLite3, nStore und Alfred.

Was für mich funktioniert, ist Node-Dirty :

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}"
Radek
quelle
Vielen Dank für die Freigabe, ich habe für eine Weile nach so etwas gesucht. Dies funktioniert in Kombination mit kleinen Websites einwandfrei!
Dieterg
1
@DieterGoetelen herzlich willkommen! Ich war kürzlich auch ziemlich glücklich, eine leistungsfähigere EJDB zu verwenden, die eine MongoDB-ähnliche Syntax hat und Bindungen in Node.js und darüber hinaus enthält. Github.com/Softmotions/ejdb-node
Radek
5

Vielleicht solltest du es versuchen LocallyDB es ist einfach zu bedienen und leichtgewichtig, zusätzlich zu dem erweiterten Auswahlsystem , das dem bedingten Javascript-Ausdruck ähnelt ...

https://github.com/btwael/locallydb

Wael Boutglay
quelle
Danke Wael Amine Boutglay LocallyDB hat gerade mein Ding für Node JS gemacht. Zuvor arbeitete ich mit PHP und erstellte meine eigene
Flatfile-
LocallyDB ist schön für lokal testen! Bitte beachten Sie, dass Block IO verwendet wird. Sie nicht in der Produktion verwendet werden .
Junle Li
1
Der Link funktioniert nicht. Es ist eine Domain-Parkseite.
rsp
@rsp Link behoben, überprüfen Sie http://boutglay.com/locallydb/
Wael Boutglay
Letzte Verpflichtung am 1. August 2016.
Deilan
1

Ich habe jaguarDb geschrieben, um einige der Dinge zu behandeln, die Sie erwähnen, da ich manchmal auch eine "kleine" Datenbank für Demo- oder Testprojekte benötige und mich nicht auf mongoDB oder eine andere echte Datenbank verlassen möchte.

https://github.com/hectorcorrea/jaguarDb

Hector Correa
quelle
2
Letztes