Base de données Javascript légère à utiliser dans Node.js [fermé]


130

Tout le monde connaît une base de données légère mais durable, écrite en Javascript, qui peut être utilisée avec Node.js.

Je ne veux pas du «poids» de (grandes) solutions comme Mongo ou Couch. Une simple base de données JS en mémoire avec la capacité de persister sur le disque sous forme de fichier suffirait. Je ne l'utiliserais que pour stocker de petites quantités de données.

Exigences:

  • peut s'exécuter en cours avec une application serveur node.js
  • peut enregistrer toute la base de données sur le disque et récupérer après une panne
  • PAS besoin d'écritures atomiques ou de supports de transaction
  • des requêtes et un tri rapides seraient bien
  • ne doit prendre en charge que de petits volumes de données, jusqu'à 1 Mo au total

J'ai rencontré TAFFY db jusqu'à présent, mais il ne semble vraiment pas optimisé pour une utilisation dans Node.js. Quelqu'un a vu ce que je cherchais là-bas?

Merci


Réponses:


6

Je ne connais que Mongo et Couch, mais il y en a aussi un nommé Persistence .


14
Considérez-vous toujours cela comme une solution? le dernier commit remonte à 7 ans.
mjwrazor

3
Dernier commit le 31 mars 2010.
Deilan

1
Je pense que vous cherchez le nouveau PersistenceJS
Chamilyan

1
comment est-ce que c'est peut-être mieux @Chamilyan
Zee

103

J'avais les mêmes exigences que vous mais je n'ai pas trouvé de base de données appropriée. nStore était prometteur mais l'API n'était pas assez complète et pas très cohérente.

C'est pourquoi j'ai créé NeDB , une base de données intégrée sans dépendance pour les projets Node.js. Vous pouvez l'utiliser avec un simple require(), il est persistant, et son API est le sous-ensemble le plus couramment utilisé de l'API MongoDB très connue.

https://github.com/louischatriot/nedb


8
nedb est génial, mais sachez que vous ne pouvez pas l'utiliser sur plusieurs processus - chacun obtient sa propre copie au démarrage.
Meekohi

12
En guise d'avertissement, il semble que NeDB ait pu être abandonné.
Guy

3
Je ne comprends pas pourquoi le dernier engagement il y a 1,5 ans signifie que le projet est abandonné. Ce n'est absolument pas le cas, il vient juste d'atteindre son objectif et je ne vois aucune valeur au fluage des fonctionnalités ...
Louis Chatriot

7
Pensez à avoir un script simple qui met à jour le README tous les 3 mois, en remplaçant la dernière ligne qui dit «Ce projet est toujours actif en tant que <date d'aujourd'hui> - NeDB (c) 2013- <année d'aujourd'hui> Louis Chatriot»; le message de validation devrait être quelque chose comme "indiquant que le projet est toujours actif à <date d'aujourd'hui>", ce qui sera la première chose que les gens verront en haut de github.
Giacomo Lacava

6
@LouisChatriot Je dois être d'accord. Vous avez 107 problèmes, 32 PR assis là et la dernière modification du code remonte à 3 ans. Rien que de voir ça, c'est un logiciel que je ne veux pas introduire et gérer des incompatibilités (3 ans dans js dev est une éternité), des problèmes qui sont ignorés, etc. La bonne quantité d'étoiles mais ça ne crie pas frais.
Carles Alcolea

18

NeDB semble être ce que vous recherchez. De la présentation:

Base de données persistante intégrée pour Node.js, écrite en Javascript, sans dépendance (sauf les modules npm bien sûr). Vous pouvez le considérer comme un SQLite pour les projets Node.js, qui peut être utilisé avec une simple instruction require. L'API est un sous-ensemble de MongoDB. Vous pouvez l'utiliser comme banque de données persistante ou en mémoire uniquement.


@Deilan Je ne comprends pas pourquoi le dernier engagement d'il y a 1,5 ans signifie que le projet est abandonné. Ce n'est absolument pas le cas, il vient juste d'atteindre son objectif et je ne vois aucune valeur au fluage des fonctionnalités ...
Louis Chatriot

@LouisChatriot Je suis d'accord pour dire qu'en général je me trompe avec les jugements à ce jour. Je l'ai donc retiré de mes premiers commentaires.
Deilan

16

Lokijs : une banque de données rapide et orientée document en mémoire pour node.js, browser et cordova.

  • Datastore Javascript en mémoire avec persistance
  • Base de données NoSQL dans le navigateur avec synchronisation et persistance
  • un magasin de style Redis à une installation npm
  • Base de données NoSQL persistante pour Cordova
  • Base de données NoSQL intégrable avec persistance pour node-webkit

LokiJS pour être la solution idéale:

  • Applications mobiles - en particulier basées sur HTML5 (Cordova, Phonegap, etc.)
  • Banque de données intégrée Node.js pour les applications petites à moyennes
  • Intégré dans une application de bureau avec Node Webkit

https://github.com/techfort/LokiJS


mes données dans lokiJS seraient-elles effacées si je vidais mon stockage local?
HIRA THAKUR

@LeonardoDaCodinchi - Cela dépend de la façon dont vous l'utilisez, mais dans Node, il est enregistré dans un fichier json pour la persistance.
BryanGrezeszak

La base de données est cependant toujours stockée en mémoire au démarrage. De ce que j'en suis venu à comprendre.
mjwrazor

14

Jetez un œil à http://www.tingodb.com . Je crois qu'il fait ce que vous recherchez. De plus, il est entièrement compatible avec l'API MongoDB. Cela réduit les risques de mise en œuvre et vous donne la possibilité de passer à une solution lourde à mesure que votre application se développe.

https://github.com/sergeyksv/tingodb


1
La compatibilité totale avec MongoDB est une fonctionnalité très intéressante - développez votre application pour qu'elle fonctionne avec une petite base de données locale, puis si vous en avez besoin, passez à MongoDB .... Merci!
Brad Parks

... mais n'oubliez surtout pas de comparer avec nedb , qui est également compatible MongoDB, et voyez ce qui fonctionne pour vous
Brad Parks

Dernier commit le 26 décembre 2016.
Deilan


8

J'ai eu des problèmes avec SQLite3, nStore et Alfred.

Ce qui fonctionne pour moi est un nœud sale :

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}"

Merci pour le partage, je cherchais quelque chose comme ça depuis un moment. Ceci en combinaison avec de petits sites Web fonctionne très bien!
Dieterg

1
@DieterGoetelen vous êtes les bienvenus! J'ai également été récemment très heureux d'utiliser un EJDB plus puissant qui a une syntaxe de type MongoDB et des liaisons dans Node.js et au-delà github.com/Softmotions/ejdb-node
Radek


5

Peut-être devriez-vous essayer LocallyDB, il est facile à utiliser et léger en plus du système de sélection avancé similaire à l'expression conditionnelle javascript ...

https://github.com/btwael/locallydb


Merci Wael Amine Boutglay LocallyDB vient de faire mon truc pour node js. Auparavant, je travaillais avec php et j'ai créé ma propre base de données de fichiers plats github.com/sguha-work/LifeDB
Angshu Guha

LocallyDB est bien pour les tests locaux ! Veuillez noter qu'il utilise le bloc IO. Ne pas l' utiliser dans la production.
Junle Li

1
Le lien ne fonctionne pas. C'est une page de parking de domaine.
rsp

Lien @rsp corrigé, consultez http://boutglay.com/locallydb/
Wael Boutglay

Dernier commit le 1 août 2016.
Deilan


1

J'ai écrit jaguarDb pour gérer certaines des choses que vous mentionnez car j'ai parfois besoin d'une "petite" base de données pour des projets de démonstration ou de test et je ne veux pas dépendre de mongoDB ou d'une autre base de données réelle.

https://github.com/hectorcorrea/jaguarDb


2
Dernier commit le 3 avril 2013.
Deilan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.