Banco de dados Javascript leve para uso no Node.js [fechado]

130

Alguém conhece um banco de dados leve e durável, escrito em Javascript, que pode ser usado com o Node.js.

Não quero o 'peso' de (ótimas) soluções como Mongo ou Couch. Um banco de dados JS simples, na memória, com a capacidade de persistir no disco como um arquivo seria suficiente. Eu o usaria apenas para armazenar pequenas quantidades de dados.

Requisitos:

  • pode ser executado em processo com um aplicativo de servidor node.js.
  • pode salvar todo o banco de dados em disco e recuperar após uma falha
  • NÃO há necessidade de gravações atômicas ou suporte a transações
  • consultas rápidas e classificação seria bom
  • precisa apenas suportar pequenos volumes de dados, até 1 MB no total

Encontrei o TAFFY db até agora, mas ele realmente não parece otimizado para uso no Node.js. Alguém viu o que estou procurando por aí?

obrigado

ConfusedNoob
fonte
Tente usar github.com/rvagg/node-levelup
hellboy

Respostas:

6

Estou familiarizado apenas com Mongo e Couch, mas há também um chamado Persistence .

Steve
fonte
14
Você ainda consideraria isso uma solução? O último commit foi realizado há 7 anos.
Mjwrazor
3
Última confirmação em 31/03/2010
Deilan
1
Eu acho que você está procurando as mais recentes PersistenceJS
Chamilyan
1
como é que isso é melhor? @Chamilyan
Zee
103

Eu tinha os mesmos requisitos que você, mas não consegui encontrar um banco de dados adequado. O nStore era promissor, mas a API não estava completa o suficiente e não era muito coerente.

Foi por isso que criei o NeDB , um banco de dados incorporado sem dependência para projetos Node.js. Você pode usá-lo com um simples require(), é persistente e sua API é o subconjunto mais comumente usado da muito conhecida API MongoDB.

https://github.com/louischatriot/nedb

Louis Chatriot
fonte
8
O nedb é ótimo, mas saiba que você não pode usá-lo em vários processos - cada um obtém sua própria cópia na inicialização.
Meekohi 18/03/14
12
Como um alerta, parece que o NeDB pode ter sido abandonado.
Guy
3
Não entendo por que o último commit 1,5 anos atrás significa que o projeto foi abandonado. Ele absolutamente não é, ele só atingiu seu objetivo e eu não vejo qualquer valor no recurso de fluência ...
Louis Chatriot
7
Considere ter um script simples que atualize o README a cada 3 meses, substituindo a última linha que diz "Este projeto ainda está ativo como <data de hoje> - NeDB (c) 2013- <ano de hoje> Louis Chatriot"; a mensagem de confirmação deve ser algo como "declarando que o projeto ainda está ativo a partir de <data de hoje>", que será a primeira coisa que as pessoas verão no topo do github.
Giacomo Lacava 28/03
6
@LouisChatriot Eu tenho que concordar. Você tem 107 problemas, 32 relações públicas e a última alteração no código ocorreu há 3 anos. Só de ver isso, é um software que eu não quero trazer e lidar com incompatibilidades (3 anos em js dev é uma eternidade), problemas que são ignorados etc. A quantidade certa de estrelas, mas não parece muito nova.
Carles Alcolea
18

O NeDB parece ser o que você está procurando. A partir da sinopse:

Banco de dados persistente incorporado para Node.js, escrito em Javascript, sem dependência (exceto os módulos npm, é claro). Você pode pensar nisso como um projeto SQLite para Node.js., que pode ser usado com uma instrução simples simples. A API é um subconjunto do MongoDB. Você pode usá-lo como um armazenamento de dados persistente ou apenas na memória.

Christof Jans
fonte
@ Deilan Eu não entendo por que o último commit 1,5 anos atrás significa que o projeto foi abandonado. Ele absolutamente não é, ele só atingiu seu objetivo e eu não vejo qualquer valor no recurso de fluência ...
Louis Chatriot
@LouisChatriot Concordo que geralmente estou errado com qualquer julgamento até agora. Então eu o removi dos meus comentários iniciais.
Deilan
16

Lokijs : um armazenamento de dados rápido e orientado a documentos na memória para node.js, navegador e cordova.

  • Armazenamento de dados Javascript na memória com persistência
  • Banco de dados NoSQL db com sincronização e persistência
  • uma loja de estilo Redis e uma instalação de npm
  • DB NoSQL persistente para Cordova
  • Banco de dados NoSQL incorporável com persistência para node-webkit

LokiJS para ser a solução ideal:

  • Aplicativos móveis - especialmente baseados em HTML5 (Cordova, Phonegap etc.)
  • Armazenamento de dados incorporado Node.js. para aplicativos de pequeno a médio porte
  • Incorporado no aplicativo de desktop com o Node Webkit

https://github.com/techfort/LokiJS

Damodaran
fonte
meus dados no lokiJS seriam limpos se eu limpar meu armazenamento local?
HIRA THAKUR
@LeonardoDaCodinchi - Depende de como você o usa, mas no Node ele salva em um arquivo json para persistência.
BryanGrezeszak 15/09/16
O banco de dados ainda está armazenado na memória na inicialização. Pelo que eu vim a entender.
Mjwrazor # 8/17
14

Dê uma olhada em http://www.tingodb.com . Eu acredito que faz o que você está procurando. Além disso, é totalmente compatível com a API do MongoDB. Isso reduz os riscos de implementação e oferece a opção de mudar para uma solução pesada à medida que o aplicativo cresce.

https://github.com/sergeyksv/tingodb

Sergey Korotkov
fonte
1
A compatibilidade total com o MongoDB é um recurso muito interessante - desenvolva seu aplicativo para trabalhar com um banco de dados local pequeno e, se necessário, dimensione para o MongoDB .... Obrigado!
Brad Parks
... mas definitivamente não se esqueça de comparar com nedb , que também é MongoDB compatível, e ver o que funciona para você
Brad Parks
Última confirmação em 26 de dezembro de 2016.
Deilan
9

Experimente o nStore, parece um bom db leve e com baixo valor de chave / valor para o nó. Consulte https://github.com/creationix/nstore

Guy Korland
fonte
1
Última confirmação em 2 de abril de 2013.
Deilan
8

Eu tive problemas com SQLite3, nStore e Alfred.

O que funciona para mim é nó sujo :

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
fonte
Obrigado pela participação, estou procurando algo assim há algum tempo. Isso em combinação com sites pequenos funciona muito bem!
Dieterg 18/01/14
1
@DieterGoetelen você é bem-vindo! I também foi recentemente muito feliz usando um EJDB mais poderoso que tem um MongoDB-como sintaxe e tem ligações em Node.js e além github.com/Softmotions/ejdb-node
Radek
5

Talvez você deva experimentar o LocallyDB , é fácil de usar e leve, além do sistema de seleção avançado semelhante à expressão condicional de javascript ...

https://github.com/btwael/locallydb

Wael Boutglay
fonte
Obrigado Wael Amine Boutglay LocallyDB acabou de fazer minha coisa pelo nó js. Anteriormente eu estava trabalhando com php e eu criei o meu próprio banco de dados de arquivo plano github.com/sguha-work/LifeDB
Angshu Guha
LocallyDB é bom para testar localmente ! Observe que ele usa o bloco IO. Você não usá-lo em produção.
Li '10:
1
O link não funciona. É uma página de estacionamento de domínio.
Rsp
O link do @rsp foi corrigido, verifique http://boutglay.com/locallydb/ #
Wael Boutglay
Última confirmação em 1 de agosto de 2016.
Deilan
1

Eu escrevi o jaguarDb para lidar com algumas das coisas que você está mencionando, já que às vezes também preciso de um "pequeno" banco de dados para projetos de demonstração ou teste e não quero depender do mongoDB ou de outro banco de dados real.

https://github.com/hectorcorrea/jaguarDb

Hector Correa
fonte
2
Última confirmação em 3 de abril de 2013.
Deilan