base de datos node.js

Estoy buscando una base de datos para emparejar con una aplicación node.js. Supongo que un db de json / nosql sería preferible a un DB relacional [puedo hacerlo sin ningún desajuste de impedancia json / sql]. Estoy considerando:

¿Alguien tiene alguna opinión / historia de guerra en relación con la compatibilidad / implementación de lo anterior con node.js? ¿Algún favorito claro?

Soy el desarrollador del controlador mongodb para node.js. Estoy usando mongodb para mis propios proyectos y estoy muy contento con el rendimiento de mongodb.

Controlador Mongodb para node.js

(Enchufe descarado) No dude en hacer cualquier pregunta sobre el conductor en

Grupo de Google para el controlador mongodb.

o aquí en Stackoverflow

Diviértete con node.js. Me encanta la plataforma: D

Aunque su elección depende en gran medida de las características que desea utilizar, realmente aprecio a CouchDB por su entorno de JavaScript nativo. Tanto los datos como las vistas están escritos en JavaScript, por lo que se ajusta muy bien a node.js en mi opinión.

También hay diferentes bibliotecas de clientes disponibles, algunas son de bajo nivel, otras realmente muy abstractas.

Pero como dije, también debería pensar en las características que necesita para su base de datos.

Redis es una opción popular. Lo que buscas es un controlador de base de datos que no se bloquee.

Las bases de datos que listaste son todas muy diferentes. Redis toma la idea de los almacenamientos de valor-clave y los ejecuta, agregando una variedad de tipos de datos y formas de consulta de datos. La gente a menudo nota que el redis se reduce muy bien también; lo que significa que tiene una sobrecarga muy baja a pesar de tener la capacidad de realizar.

Aquí hay una lista de los módulos de base de datos disponibles: http://wiki.github.com/ry/node/modules#database

Realmente me gusta CouchDB. Es una pequeña curva de aprendizaje, pero las vistas son realmente poderosas una vez que entiendes cómo usarlas. Hay un módulo llamado cuna en github y npm que es realmente fácil de trabajar. No he podido probar qué tan rápido es, pero es realmente flexible (también puede acceder a sus datos en un navegador si lo desea).

El principal problema aquí es qué diseño de base de datos tiene sentido para su aplicación. ¿Tiene datos que son en gran medida clave-valor en la naturaleza? Si es así, usa Redis. ¿Tiene datos donde no todos los documentos tienen necesariamente los mismos campos? Si es así, use una base de datos NoSQL como CouchDB.

Lo siguiente peor al usar una base de datos de locking es usar la base de datos incorrecta para sus datos. CouchDB es administrado por Apache, por lo que sabe que es de buena calidad, pero no tiene sentido usarlo si sus datos tienen más sentido en una tabla SQL o en un simple almacén de valores clave.

Piensa en tu caso de uso. ¿Es más probable que desee realizar una búsqueda de texto completo, solo obtener datos por clave u obtener rangos de documentos que tengan atributos similares?

Es posible que desee revisar el sistema de persistencia , persistencia de alto nivel / base de datos para node.js.

de thechangelog.com :

Persistence es un proyecto para permitir una API de alto nivel para la persistencia de datos entre procesos ejecutados. El objective es admitir backends que sean fáciles de usar, potentes, flexibles o todos los anteriores, si es posible.

Las bases de datos compatibles incluyen:

  • PostgreSQL – Una base de datos relacional de nivel empresarial. El controlador se implementa en JavaScript puro y se comunica a través de TCP utilizando el protocolo de conexión de PostgreSQL.
  • Sqlite3: una base de datos relacional simple, rápida y sin servidor. Este controlador es un contenedor alrededor del progtwig sqlite3 de línea de comandos. Requiere sqlite3 para estar en el camino. La comunicación es extremadamente rápida, pero los tipos no son muy precisos. Solo hay cadenas y nulos devueltos.
  • MongoDB: una base de datos orientada a documentos escalable, de alto rendimiento, de código abierto, sin esquema. Este controlador también implementa el protocolo de conexión en JavaScript y se comunica con el servidor a través de TCP.
  • JSON-DB: una base de datos orientada a documentos y libre de esquemas del sistema local que utiliza archivos planos simples que contienen objetos JSON. Esto no tiene requisitos en absoluto, excepto el nodo y un sistema de archivos. El rendimiento se determinará una vez que se haya implementado completamente.

Descargo de responsabilidad: Soy el autor.

Tal vez echar un vistazo a BarricaneDB anunciado aquí .

No estoy seguro de que la solución correcta sea centrarse únicamente en asignar una base de datos a su stack web, sino también en considerar los requisitos específicos de la aplicación.

¿Está analizando feeds de Twitter u otros datos de gran volumen en busca de patrones, pero no necesita soporte transaccional? Entonces elige algo realmente rápido.

¿Desea almacenar información realmente básica en algunas tablas y actualmente no es una aplicación “enfocada en la empresa”? Luego elige algo bueno para aprender.

Tal vez va a almacenar datos que son realmente importantes para un cliente, robustos, deben ser transaccionales, y tener replicación en vivo en instalaciones de alojamiento remoto, etc. Entonces, tal vez vea algo como postgresql. No se reflejaría también, pero el controlador node.js funciona bastante bien y, si no tienes mucho miedo de tener SQL, obtiene lo que quieres de forma muy sencilla.

En cuanto a mi propia opinión, creo que ir con una stack más nueva como node.js (frente a los marcos tradicionales en php / java) está agregando suficiente complejidad “nueva” para que no se puedan agregar capas adicionales de una vez. Este es un buen artículo que discute que:

http://nodeguide.com/convincing_the_boss.html

Hablaré desde mi experiencia: CouchDB viene con una curva de aprendizaje definida, mientras que MongoDB me pareció muy fácil de aprender y configurar. Nunca he usado redis. Sugiero MongoDB, pero tal vez un fanboyismo descarado, no tengo números, je, solo afirmaciones de facilidad de uso.

dirty es otro almacén de valor-clave de archivo plano. Como su nombre lo indica, es una solución rápida y sucia pero eficaz para casos simples. No soy el autor 🙂

Algunos más a considerar:

Globales: http://globalsdb.org

GT.M (consulte https://github.com/robtweed/node-mwire para obtener un punto de partida)

M / DB (un clon de código abierto de SimpleDB): https://github.com/robtweed/node-mdb y puede usar el cliente Node.js SimpleDB para acceder a él: https://github.com/rjrodger/simpledb

Encontré CouchDB muy fácil de dominar. Hay muchos libros electrónicos disponibles en Internet que le enseñarán cómo usar CouchDB con Node.js.

Encontré este libro muy útil para aprender CouchDB.

Para usar CouchDB con Node.js, uso el módulo NANO .

CouchDB se puede alojar en Iriscouch o Cloudant .