Estou procurando um banco de dados para emparelhar com um aplicativo node.js. Estou assumindo que um banco de dados json / nosql seria preferível a um banco de dados relacional [posso fazer sem qualquer incompatibilidade de impedância json / sql]. Estou considerando:
- couchdb
- Mongodb
- redis
Alguém tem alguma visão / história de guerra sobre compatibilidade / implantabilidade do acima com node.js? Algum favorito claro?
Respostas:
Sou o desenvolvedor do driver mongodb para node.js. Estou usando o mongodb para meus próprios projetos e estou muito feliz com o desempenho do mongodb.
Driver Mongodb para node.js
(Plugue sem vergonha) Sinta-se à vontade para fazer qualquer pergunta sobre o driver em
Grupo do Google para o driver mongodb
ou aqui no Stackoverflow
Divirta-se com node.js. Eu absolutamente amo a plataforma: D
fonte
Embora sua escolha dependa muito dos recursos que você está procurando, realmente aprecio o CouchDB por seu ambiente JavaScript nativo. Tanto os dados quanto as visualizações são escritos em JavaScript, portanto, se encaixam muito bem no node.js na minha opinião.
Existem também diferentes bibliotecas-cliente disponíveis, algumas são de baixo nível, outras realmente muito abstratas.
Mas, como eu disse, você também deve pensar sobre os recursos necessários para o seu banco de dados.
fonte
Redis é uma escolha popular. O que você está procurando é um driver de banco de dados que não bloqueie.
Os bancos de dados que você listou são todos muito diferentes. O Redis pega a ideia de armazenamentos de valores-chave e executa com ela, adicionando uma variedade de tipos de dados e formas de consultar dados. As pessoas costumam notar que o redis diminui muito bem também; o que significa que tem sobrecarga muito baixa, apesar de ter a capacidade de executar.
Aqui está uma lista de módulos de banco de dados disponíveis: http://wiki.github.com/ry/node/modules#database
fonte
Eu realmente gosto do CouchDB. É um pouco uma curva de aprendizado, mas as visualizações são realmente poderosas quando você entende como usá-las. Existe um módulo chamado cradle no github e npm que é realmente fácil de trabalhar. Não consegui testar o quão rápido é, mas é muito flexível (você também pode acessar seus dados em um navegador se quiser).
O principal problema aqui é qual design de banco de dados faz sentido para sua aplicação. Você tem dados que são basicamente valores-chave por natureza? Nesse caso, use o Redis. Você possui dados em que nem todos os documentos têm necessariamente os mesmos campos? Nesse caso, use um banco de dados NoSQL como CouchDB.
A próxima coisa pior de usar um banco de dados de bloqueio é usar o banco de dados errado para seus dados. O CouchDB é gerenciado pelo Apache, então você sabe que é de boa qualidade, mas não faz sentido usá-lo se seus dados fizessem mais sentido em uma tabela SQL ou um armazenamento de valor-chave simples.
Pense em seu caso de uso. É mais provável que você queira fazer uma pesquisa de texto completo, apenas obter dados por chave ou obter intervalos de documentos com atributos semelhantes?
fonte
Pode querer verificar Persistência , persistência de alto nível / sistema de banco de dados para node.js.
de thechangelog.com :
fonte
Aviso: eu sou o autor.
Dê uma olhada no BarricaneDB anunciado aqui .
fonte
Não tenho certeza se a solução correta é focar exclusivamente no mapeamento de um banco de dados para sua pilha da web, mas considerando também os requisitos específicos do aplicativo.
Você está analisando feeds do Twitter ou outros dados de alto volume em busca de padrões, mas não precisa de suporte transacional? Em seguida, escolha algo muito rápido.
Você deseja apenas armazenar algumas informações realmente básicas em algumas tabelas e atualmente não é um aplicativo "voltado para a empresa"? Em seguida, escolha algo legal para aprender.
Talvez você vá armazenar dados que são realmente importantes para um cliente, robustos, precisam ser transacionais e ter replicação ao vivo para instalações de hospedagem remotas, etc. Então, talvez olhe para algo como postgresql. Ele não espelharia tão bem, mas o driver node.js funciona muito bem e se você não tem muito medo de sql, ele obtém o que deseja dentro / fora com bastante facilidade.
Quanto à minha própria opinião, acho que usar uma pilha mais recente como node.js (versus frameworks tradicionais em php / java) é adicionar complexidade "nova" o suficiente para que não se deva adicionar camadas extras de uma vez. Este é um bom artigo que discute que:
http://nodeguide.com/convincing_the_boss.html
fonte
Falarei com minha experiência: o CouchDB vem com uma curva de aprendizado definida, enquanto o MongoDB é muito fácil de aprender e configurar. Eu nunca usei redis. Sugiro MongoDB - mas talvez aquele fanboyismo sem vergonha - não tenho números, heh, apenas afirmações de facilidade de uso.
fonte
sujo é outro armazenamento de valor-chave de arquivo simples. Como o nome sugere, é uma solução rápida e suja, mas eficiente para casos simples. Eu não sou o autor :)
fonte
Mais alguns a considerar:
Globais: http://globalsdb.org
GT.M (consulte https://github.com/robtweed/node-mwire para um ponto de partida)
M / DB (um clone de código aberto do SimpleDB): https://github.com/robtweed/node-mdb e você pode usar o cliente Node.js SimpleDB para acessá-lo: https://github.com/rjrodger/simpledb
fonte
Achei o CouchDB muito fácil de dominar. Há um monte de ebooks disponíveis na internet que vai te ensinar como usar CouchDB com Node.js .
Achei este livro muito útil para aprender o CouchDB.
Para usar o CouchDB com Node.js, uso o módulo NANO .
O CouchDB pode ser hospedado em Iriscouch ou Cloudant .
fonte