node.js database



mongodb couchdb (8)

Je suis à la recherche d'une base de données pour jumeler avec une application node.js. Je suppose qu'un json / nosql db serait préférable à un DB relationnel [je peux faire sans json / sql impédance incompatibilité]. Je considère:

  • couchdb
  • mongodb
  • Redis

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

https://ffff65535.com


Bien que votre choix dépende beaucoup 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 y a aussi différentes bibliothèques client disponibles, certaines sont plutôt de niveau bas, d'autres vraiment très abstraites.

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


Disclaimer: Je suis l'auteur.

Peut-être jeter un oeil à BarricaneDB annoncé here .


J'aime vraiment CouchDB. C'est un peu une courbe d'apprentissage, mais les vues sont vraiment puissantes une fois que vous avez compris 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 à quelle vitesse c'est, mais c'est vraiment flexible (vous pouvez accéder à vos données dans un navigateur aussi si vous le souhaitez).

Le problème majeur ici est de savoir quelle conception de base de données a un sens pour votre application. Avez-vous des données qui sont en grande partie de valeur-clé dans la nature? Si oui, utilisez Redis. Avez-vous des données où tous les documents n'ont pas forcément les mêmes champs? Si c'est le cas, utilisez une base de données NoSQL comme CouchDB.

La pire chose à utiliser une base de données bloquante est l'utilisation de la mauvaise base de données pour vos données. CouchDB est géré par Apache, vous savez donc qu'il est de bonne qualité, mais cela n'a pas de 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 des données par clé ou d'obtenir des plages de documents ayant des attributs similaires?


Je ne suis pas sûr que la solution correcte consiste à se concentrer uniquement sur la mise en correspondance d'une base de données avec votre pile Web, mais également en tenant compte des exigences spécifiques à l'application.

Analysez-vous les flux Twitter ou d'autres données volumineuses pour les modèles, mais n'avez pas besoin de support transactionnel? Ensuite, choisissez quelque chose de très rapide.

Voulez-vous juste stocker des informations vraiment basiques dans quelques tables et ce n'est pas une application "axée sur l'entreprise"? Ensuite, choisissez quelque chose de cool pour 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. Puis peut-être regarder quelque chose comme postgresql. Cela ne se refléterait pas aussi bien, mais le driver node.js fonctionne plutôt bien et si vous n'avez pas peur de sql, vous obtiendrez facilement ce que vous voulez.

Pour ce qui est de ma propre opinion, je pense que le fait d'utiliser une nouvelle pile comme node.js (contrairement aux frameworks traditionnels en php / java) ajoute suffisamment de «nouvelle» complexité pour ne pas ajouter des couches supplémentaires en même temps. C'est un bon article qui traite de ceci:

http://nodeguide.com/convincing_the_boss.html


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


Peut-être voulez-vous vérifier la Persistence , le système de base de données / de persistance de haut niveau pour node.js.

de thechangelog.com :

Persistence est un projet permettant 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 supportées incluent:

  • PostgreSQL - Une base de données relationnelle au niveau de l'entreprise. Le pilote est implémenté en JavaScript pur et communique via TCP à l'aide du protocole fil PostgreSQL.
  • Sqlite3 - Une base de données relationnelle simple, rapide et sans serveur. Ce pilote est un wrapper autour du programme de ligne de commande sqlite3. 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 orientée document, open source, sans schéma, évolutive et performante. Ce pilote implémente également le protocole filaire en JavaScript et communique avec le serveur via TCP.
  • JSON-DB - Une base de données orientée document, sans schéma ni système, qui utilise des fichiers plats simples contenant des objets JSON. Cela n'a aucune exigence à l'exception du nœud et d'un système de fichiers. La performance doit être déterminée une fois qu'elle est entièrement mise en œuvre.

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 énumérées sont toutes très différentes. Redis prend l'idée des stockages de valeurs-clés et fonctionne avec, en ajoutant une variété de types de données et de façons d'interroger les données. Les gens remarquent souvent que redis redescend très bien aussi; ce qui signifie qu'il a des frais généraux très bas malgré sa capacité à effectuer.

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


dirty est encore un autre magasin de valeurs-clés à 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 :)





redis