Base de datos Javascript ligera para usar en Node.js [cerrado]

130

Alguien sabe de una base de datos ligera pero duradera, escrita en Javascript, que se puede usar con Node.js.

No quiero el 'peso' de soluciones (geniales) como Mongo o Couch. Una simple base de datos JS en memoria con la capacidad de persistir en el disco como un archivo sería suficiente. Solo lo usaría para almacenar pequeñas cantidades de datos.

Requisitos:

  • puede ejecutarse en proceso con una aplicación de servidor node.js
  • puede guardar toda la base de datos en el disco y recuperarse después de una falla
  • NO necesita escrituras atómicas ni soporte de transacciones
  • consultas rápidas y clasificación sería bueno
  • solo necesita admitir pequeños volúmenes de datos, hasta 1 MB en total

Me he encontrado con TAFFY db hasta ahora, pero realmente no parece optimizado para usar en Node.js. ¿Alguien ha visto lo que estoy buscando por ahí?

Gracias

Confundido
fuente
Intenta usar github.com/rvagg/node-levelup
hellboy el

Respuestas:

6

Solo estoy familiarizado con Mongo y Couch, pero también hay uno llamado Persistence .

Steve
fuente
14
¿Seguirías considerando esto como una solución? La última confirmación fue hace 7 años.
mjwrazor
3
Último commit el 31 de marzo de 2010.
Deilan
1
Creo que estás buscando el nuevo PersistenceJS
Chamilyan
1
¿cómo es eso posiblemente mejor @Chamilyan?
Zee
103

Tenía los mismos requisitos que usted, pero no pude encontrar una base de datos adecuada. nStore era prometedor, pero la API no estaba lo suficientemente completa y no era muy coherente.

Es por eso que hice NeDB , que es una base de datos incrustada sin dependencia para proyectos Node.js. Puede usarlo de forma simple require(), es persistente y su API es el subconjunto más utilizado de la muy conocida API MongoDB.

https://github.com/louischatriot/nedb

Louis Chatriot
fuente
8
nedb es excelente, pero tenga en cuenta que no puede usarlo en múltiples procesos: cada uno obtiene su propia copia al inicio.
Meekohi
12
Como aviso, parece que NeDB podría haber sido abandonado.
Chico
3
No entiendo por qué la última confirmación hace 1,5 años significa que el proyecto se ha abandonado. Absolutamente no lo es, acaba de lograr su objetivo y no veo ningún valor en el rasgo de características ...
Louis Chatriot
77
Considere tener un script simple que actualice el archivo README cada 3 meses, reemplazando la última línea que dice "Este proyecto todavía está activo como <fecha de hoy> - NeDB (c) 2013- <año de hoy> Louis Chatriot"; el mensaje de confirmación debería ser algo así como "indicando que el proyecto aún está activo a partir de <fecha de hoy>", que será lo primero que la gente verá en la parte superior de github.
Giacomo Lacava
66
@ LouisChatriot Tengo que estar de acuerdo. Tiene 107 problemas, 32 relaciones públicas allí y el último cambio de código fue hace 3 años. Solo viendo eso, es un software que no quiero traer y lidiar con incompatibilidades (3 años en js dev es una eternidad), problemas que se ignoran, etc. La cantidad correcta de estrellas pero no grita fresca.
Carles Alcolea
18

NeDB parece ser lo que estás buscando. De la propaganda:

Base de datos persistente integrada para Node.js, escrita en Javascript, sin dependencia (excepto los módulos npm, por supuesto). Puede considerarlo como un SQLite para proyectos Node.js, que se puede usar con una simple declaración require. La API es un subconjunto de MongoDB. Puede usarlo como un almacén de datos persistente o solo en memoria.

Christof Jans
fuente
@Deilan No entiendo por qué la última confirmación hace 1,5 años significa que el proyecto se ha abandonado. No lo es en absoluto, acaba de lograr su objetivo y no veo ningún valor en el arrastre de características ...
Louis Chatriot
@LouisChatriot Estoy de acuerdo en que, en general, estoy equivocado con cualquier juicio hasta ahora. Así que lo eliminé de mis comentarios iniciales.
Deilan el
16

Lokijs : un almacén de datos rápido y orientado a documentos en memoria para node.js, browser y cordova.

  • Almacén de datos Javascript en memoria con persistencia
  • In-Browser NoSQL db con sincronización y persistencia
  • una tienda de estilo Redis y una instalación npm de distancia
  • Persistente NoSQL db para Cordova
  • DB NoSQL incorporable con persistencia para el kit de web de nodo

LokiJS para ser la solución ideal:

  • Aplicaciones móviles, especialmente basadas en HTML5 (Cordova, Phonegap, etc.)
  • Almacén de datos integrado Node.js para aplicaciones pequeñas a medianas
  • Integrado en la aplicación de escritorio con Node Webkit

https://github.com/techfort/LokiJS

Damodaran
fuente
¿se borrarían mis datos en lokiJS si borro mi almacenamiento local?
HIRA THAKUR
@LeonardoDaCodinchi: depende de cómo lo use, pero en Node se guarda en un archivo json para su persistencia.
BryanGrezeszak
Sin embargo, la base de datos todavía se almacena en la memoria al inicio. Por lo que he llegado a entender.
mjwrazor
14

Echa un vistazo a http://www.tingodb.com . Creo que hace lo que buscas. Además, es totalmente compatible con la API MongoDB. Esto reduce los riesgos de implementación y le da la opción de cambiar a una solución pesada a medida que su aplicación crece.

https://github.com/sergeyksv/tingodb

Sergey Korotkov
fuente
1
La compatibilidad total con MongoDB es una característica muy agradable: desarrolle su aplicación para que funcione con una pequeña base de datos local, luego, si es necesario, escale a MongoDB ... ¡Gracias!
Brad Parks el
... pero definitivamente no te olvides de comparar con nedb , que también es compatible con MongoDB, y ver cuál funciona para ti
Brad Parks
Última confirmación el 26 de diciembre de 2016.
Deilan
8

Tuve problemas con SQLite3, nStore y Alfred.

Lo que funciona para mí es nodo sucio :

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
fuente
Gracias por compartir, he estado buscando algo como esto por un tiempo. ¡Esto en combinación con sitios web pequeños funciona bien!
Dieterg
1
@DieterGoetelen de nada! También estuve bastante contento recientemente usando un EJDB más potente que tiene una sintaxis similar a MongoDB y tiene enlaces en Node.js y más allá github.com/Softmotions/ejdb-node
Radek
5

Tal vez deberías probar LocallyDB , es fácil de usar y liviano además del sistema de selección avanzado similar a la expresión condicional de JavaScript ...

https://github.com/btwael/locallydb

Wael Boutglay
fuente
Gracias Wael Amine Boutglay LocallyDB acaba de hacer lo mío para el nodo js. Anteriormente estaba trabajando con php y creé mi propia base de datos de archivos planos github.com/sguha-work/LifeDB
Angshu Guha
¡LocallyDB es bueno para pruebas locales ! Tenga en cuenta que utiliza el bloque IO. No lo use en producción.
Junle Li
1
El enlace no funciona. Es una página de estacionamiento de dominios.
rsp
@rsp enlace fijo, consulte http://boutglay.com/locallydb/
Wael Boutglay
Última confirmación el 1 de agosto de 2016.
Deilan
1

Escribí jaguarDb para manejar algunas de las cosas que mencionas, ya que a veces también necesito una "pequeña" base de datos para proyectos de demostración o prueba y no quiero depender de mongoDB u otra base de datos real.

https://github.com/hectorcorrea/jaguarDb

Héctor Correa
fuente
2
Última confirmación el 3 de abril de 2013.
Deilan