node.js数据库

我正在寻找一个数据库与node.js应用程序配对。 我假设一个json / nosql数据库将优于关系数据库[我可以做到没有任何JSON / SQL阻抗不匹配]。 我在考虑:

  • CouchDB的
  • MongoDB的
  • Redis的

任何人有任何意见/战争故事重新与上述node.js的兼容性/可部署性? 任何明确的最爱?

我是node.js的mongodb驱动程序的开发人员。 我正在使用mongodb进行自己的项目,并对mongodb的性能非常满意。

用于node.js的Mongodb驱动程序

(无耻的插头)随意问任何有关司机的问题

Google小组为mongodb驱动程序

或在这里在Stackoverflow

与node.js一起玩吧 我绝对喜欢这个平台:D

尽pipe您的select很大程度上取决于您要使用的function,但我真的很欣赏CouchDB的原生JavaScript环境。 数据和视图都是用JavaScript编写的,所以在我看来这很适合node.js。

也有不同的客户端库可用,有些是相当低的水平,其他真的非常抽象。

但正如我所说的,你也应该考虑你所需要的数据库function。

Redis是一个stream行的select。 你所追求的是一个不会阻塞的数据库驱动程序。

你列出的数据库都是非常不同的。 Redis采用键值存储的思路并运行,添加了各种数据types和查询数据的方式。 人们经常会注意到,redis也很好地缩小了。 这意味着尽pipe具有执行能力,但它具有非常低的开销。

以下是可用数据库模块的列表: http : //wiki.github.com/ry/node/modules#database

我真的很喜欢CouchDB。 这是一个学习曲线,但是一旦你了解如何使用它们,观点是非常强大的。 github上有一个叫cradle的模块,npm很容易使用。 我还没有能够testing它的速度,但它非常灵活(如果你愿意的话,你也可以在浏览器中访问你的数据)。

这里的主要问题是哪个数据库devise对您的应用程序有意义。 你有数据,在本质上主要是关键价值的? 如果是这样,请使用Redis。 你有没有数据不是所有的文件都必须有相同的字段? 如果是这样,请使用像CouchDB这样的NoSQL数据库。

使用阻塞数据库的下一个更糟糕的事情是使用错误的数据库来处理数据。 CouchDB由Apachepipe理,所以您知道它的质量很好,但如果数据在SQL表或简单的键值存储中更有意义,则使用它是没有意义的。

想想你的用例。 你会更可能想要做一个全文search,只是按键获取数据,或获得具有类似属性的文档的范围?

可能要检查持久性 ,node.js的高级别持久性/数据库系统。

来自thechangelog.com :

持久性是一个允许高级API在stream程运行之间保持数据的项目。 目标是支持使用简单,function强大,灵活或者以上所有可能的后端。

支持的数据库包括

  • PostgreSQL – 企业级关系数据库。 该驱动程序使用纯JavaScript实现,并使用PostgreSQL有线协议通过TCP进行通信。
  • Sqlite3 – 一个简单,快速,无服务器的关系数据库。 这个驱动程序是命令行sqlite3程序的一个包装。 它需要sqlite3在path中。 沟通非常快速,但types不是很精确。 只有string和空值返回。
  • MongoDB – 一个可扩展,高性能,开源,无模式,面向文档的数据库。 该驱动程序还在JavaScript中实现了有线协议,并通过TCP与服务器进行通信。
  • JSON-DB – 使用简单的包含JSON对象的平面文件的本地系统模式,面向文档的数据库。 除了节点和文件系统外,没有任何要求。 性能是完全实施后才能确定的。

免责声明:我是作者。

也许看看BarricaneDB 在这里宣布。

我不确定正确的解决scheme是专注于将数据库映射到您的Web堆栈,而是也考虑特定于应用程序的需求。

您是否正在分析Twitter Feed或其他大量数据的模式,但不需要事务性支持? 然后挑选一些真的很快。

你只是想在一些表格中存储一些真正的基本信息,而现在它不是一个“以企业为中心”的应用程序? 然后挑一些很酷的东西来学习。

也许你要存储对客户来说真正重要的数据,健壮的,需要事务处理的,并且可以远程复制到远程主机设备等等。然后可能看起来像postgresql。 它不会反映,但node.js驱动程序工作得很好,如果你不是死死的害怕sql,它很容易得到你想要的内容。

至于我自己的看法,我认为像node.js这样的更新的堆栈(vs php / java中的传统框架)增加了足够的“新”复杂性,不应该一次添加额外的层。 这是一篇很好的文章,讨论如下:

http://nodeguide.com/convincing_the_boss.html

我将从我的经验中发言:CouchDB带有一个明确的学习曲线,而MongoDB我发现非常容易学习和设置。 我从来没有使用过Redis。 我build议MongoDB – 但那也许是无耻的fanboyism – 我没有数字,呃,只有易用性的要求。

脏是又一个平面文件键值存储。 顾名思义,对于简单的情况来说,这是一个快速,肮脏但高性能的解决scheme。 我不是作者:)

还有一些要考虑:

全局: http : //globalsdb.org

GT.M(请参阅https://github.com/robtweed/node-mwire作为起点);

M / DB(SimpleDB的开源克隆): https : //github.com/robtweed/node-mdb ,你可以使用Node.js SimpleDB客户端来访问它: https : //github.com/rjrodger/simpledb

我发现CouchDB很容易掌握。 在互联网上有很多电子书可以教你如何使用CouchDB和Node.js。

我发现这本书对于学习CouchDB非常有用。

为了在Node.js中使用CouchDB,我使用了NANO模块。

CouchDB可以托pipe在Iriscouch或Cloudant上 。