web-dev-qa-db-fra.com

base de données node.js

Je recherche une base de données à coupler avec une application node.js. Je suppose qu'une base de données json/nosql serait préférable à une base de données relationnelle [je peux me passer de tout décalage d'impédance json/sql]. Je considère:

  • couchdb
  • mongodb
  • redis

Quelqu'un a-t-il des opinions/histoires de guerre concernant la compatibilité/déployabilité de ce qui précède avec node.js? Des favoris clairs?

115
Justin

Je suis le développeur du pilote mongodb pour node.js. J'utilise mongodb pour mes propres projets et j'ai été très satisfait des performances de mongodb.

pilote Mongodb pour node.js

(Prise sans vergogne) N'hésitez pas à poser des questions sur le conducteur à

groupe Google pour le pilote mongodb

ou ici à Stackoverflow

Amusez-vous avec node.js. J'adore la plateforme: D

79
christkv

Bien que votre choix dépende en grande partie des fonctionnalités que vous recherchez, j'apprécie vraiment CouchDB pour son environnement JavaScript natif. Les données et les vues sont écrites en JavaScript, donc cela correspond très bien à node.js à mon avis.

Il existe également différentes bibliothèques clientes disponibles, certaines sont de bas niveau, d'autres vraiment très abstraites.

Mais comme je l'ai dit, vous devez également penser aux fonctionnalités dont vous avez besoin pour votre base de données.

25
b_erb

Redis est un choix populaire. Ce que vous recherchez est un pilote de base de données qui ne bloque pas.

Les bases de données que vous avez répertoriées sont toutes très différentes. Redis prend l'idée des stockages de valeurs-clés et s'exécute avec, en ajoutant une variété de types de données et de façons d'interroger les données. Les gens notent souvent que le redis se réduit très bien aussi; ce qui signifie qu'il a des frais généraux très bas malgré sa capacité à performer.

Voici une liste des modules de base de données disponibles: http://wiki.github.com/ry/node/modules#database

18
Jökull

J'aime vraiment CouchDB. C'est un peu une courbe d'apprentissage, mais les vues sont vraiment puissantes une fois que vous comprenez comment les utiliser. Il y a un module appelé berceau sur github et npm qui est vraiment facile à utiliser. Je n'ai pas pu tester sa rapidité, mais c'est vraiment flexible (vous pouvez aussi accéder à vos données dans un navigateur si vous le souhaitez).

Le problème majeur ici est de savoir quelle conception de base de données convient à votre application. Avez-vous des données dont la valeur-clé est en grande partie de nature? Si c'est le cas, utilisez Redis. Avez-vous des données où tous les documents n'ont pas nécessairement les mêmes champs? Si c'est le cas, utilisez une base de données NoSQL comme CouchDB.

La prochaine pire chose à utiliser une base de données de blocage est d'utiliser la mauvaise base de données pour vos données. CouchDB est géré par Apache, vous savez donc que c'est de bonne qualité, mais cela n'a aucun sens de l'utiliser si vos données ont plus de sens dans une table SQL ou un simple magasin de valeurs-clés.

Pensez à votre cas d'utilisation. Serez-vous plus susceptible de vouloir effectuer une recherche en texte intégral, d'obtenir simplement des données par clé ou d'obtenir des plages de documents ayant des attributs similaires?

15
beatgammit

Pourrait vouloir vérifier Persistance , système de persistance/base de données de haut niveau pour node.js.

de thechangelog.com :

La persistance est un projet visant à autoriser une API de haut niveau pour la persistance des données entre les exécutions de processus. L'objectif est de prendre en charge des backends faciles à utiliser, puissants, flexibles ou tout ce qui précède si possible.

Les bases de données prises en charge comprennent:

  • PostgreSQL - Une base de données relationnelle au niveau de l'entreprise. Le pilote est implémenté en JavaScript pur et communique via TCP en utilisant le protocole de connexion PostgreSQL.
  • Sqlite3 - Une base de données relationnelle simple, rapide et sans serveur. Ce pilote est un wrapper autour du programme sqlite3 en ligne de commande. Il faut que sqlite3 soit dans le chemin. La communication est extrêmement rapide, mais les types ne sont pas très précis. Il n'y a que des chaînes et des valeurs nulles retournées.
  • MongoDB - Une base de données évolutive, hautes performances, open source, sans schéma et orientée document. Ce pilote implémente également le protocole Wire en JavaScript et communique avec le serveur via TCP.
  • JSON-DB - Une base de données orientée document, sans schéma de système local, qui utilise de simples fichiers plats contenant des objets JSON. Cela n'a aucune exigence, à l'exception du nœud et d'un système de fichiers. Les performances doivent être déterminées une fois qu'elles sont entièrement mises en œuvre.
8
Gary S. Weaver

Avertissement: je suis l'auteur.

Jetez un œil à BarricaneDB annoncé ici .

5
fadedbee

Je ne suis pas sûr que la bonne solution consiste à se concentrer uniquement sur le mappage d'une base de données à votre pile Web, mais plutôt à prendre en compte les exigences spécifiques à l'application.

Êtes-vous en train d'analyser des flux Twitter ou d'autres données à haut volume pour des modèles, mais n'avez pas besoin de support transactionnel? Ensuite, choisissez quelque chose de très rapide.

Voulez-vous simplement stocker des informations vraiment basiques dans quelques tableaux et ce n'est pas actuellement une application "axée sur l'entreprise"? Ensuite, choisissez quelque chose de cool à apprendre.

Peut-être que vous allez stocker des données qui sont vraiment importantes pour un client, robustes, doivent être transactionnelles et avoir une réplication en direct vers des installations d'hébergement à distance, etc. Ensuite, regardez peut-être quelque chose comme postgresql. Il ne refléterait pas aussi bien, mais le pilote node.js fonctionne plutôt bien et si vous n'avez pas peur de SQL, il obtient assez facilement ce que vous voulez.

Quant à ma propre opinion, je pense qu'aller avec une pile plus récente comme node.js (vs les frameworks traditionnels en php/Java) ajoute suffisamment de "nouvelle" complexité pour que l'on ne devrait pas ajouter de couches supplémentaires à la fois. Ceci est un bon article qui explique que:

http://nodeguide.com/convincing_the_boss.html

3
qooleot

Je vais parler de mon expérience: CouchDB est livré avec une courbe d'apprentissage définie, alors que MongoDB m'a semblé très facile à apprendre et à configurer. Je n'ai jamais utilisé de redis. Je suggère MongoDB - mais ce fanboyisme peut-être éhonté - je n'ai pas de chiffres, hé, seulement des revendications de facilité d'utilisation.

2

Un peu plus à considérer:

Globales: http://globalsdb.org

GT.M (voir https://github.com/robtweed/node-mwire pour un point de départ)

M/DB (un clone open source de SimpleDB): https://github.com/robtweed/node-mdb et vous pouvez utiliser le client Node.js SimpleDB pour y accéder: https://github.com/rjrodger/simpledb

1
Rob Tweed

dirty est encore un autre magasin de valeurs-clés de fichier plat. Comme son nom l'indique, c'est une solution rapide et sale mais performante pour les cas simples. Je ne suis pas l'auteur :)

1
nponeccop

J'ai trouvé CouchDB très facile à maîtriser. Il existe de nombreux livres électroniques disponibles sur Internet qui vous apprendront à utiliser CouchDB avec Node.js .

J'ai trouvé ce livre très utile pour apprendre CouchDB.

Pour utiliser CouchDB avec Node.js, j'utilise le module NANO .

CouchDB peut être hébergé sur Iriscouch ou Cloudant .

0
Shekhar