Answers:
我是node.js的mongodb驱动程序的开发人员。我正在为自己的项目使用mongodb,并且对mongodb的性能非常满意。
(无耻的插头)请随时询问有关驱动程序的任何问题
或在这里Stackoverflow
玩转node.js。我绝对喜欢这个平台:D
Redis是一个流行的选择。您所追求的是一个不会阻塞的数据库驱动程序。
您列出的数据库完全不同。Redis想到了键值存储的想法并与之一起运行,从而增加了各种数据类型和查询数据的方式。人们经常注意到redis的缩放比例也很好。意味着尽管具有执行能力,但开销却非常低。
以下是可用数据库模块的列表:http : //wiki.github.com/ry/node/modules#database
我真的很喜欢CouchDB。这是一个学习曲线,但是一旦您了解了如何使用视图,它们就会非常强大。github和npm 上有一个名为cradle的模块,确实很容易使用。我还无法测试它的速度,但是它确实很灵活(您也可以在浏览器中访问数据)。
这里的主要问题是哪种数据库设计对您的应用程序有意义。您是否拥有本质上主要是键值的数据?如果是这样,请使用Redis。您是否有并非所有文档都必须具有相同字段的数据?如果是这样,请使用NoSQL数据库(例如CouchDB)。
使用阻塞数据库的下一个更糟糕的事情是为您的数据使用了错误的数据库。CouchDB由Apache管理,因此您知道它的质量很好,但是如果您的数据在SQL表或简单的键值存储中更有意义,那么使用它就没有意义。
考虑一下您的用例。您是否更可能希望进行全文搜索,仅通过键获取数据或获取具有相似属性的文档范围?
可能想签出Persistence,这是node.js的高级持久性/数据库系统。
持久性是一个允许高级API在流程运行之间持久化数据的项目。目标是支持易于使用,功能强大,灵活的后端,或者尽可能支持所有上述后端。
支持的数据库包括:
- PostgreSQL-企业级关系数据库。该驱动程序以纯JavaScript实现,并使用PostgreSQL有线协议通过TCP进行通信。
- Sqlite3-一个简单,快速,无服务器的关系数据库。该驱动程序是命令行sqlite3程序的包装。它要求sqlite3在路径中。通讯速度非常快,但是类型不是很精确。仅返回字符串和空值。
- MongoDB-一个可扩展的,高性能,开源,无模式,面向文档的数据库。该驱动程序还用JavaScript实现了有线协议,并通过TCP与服务器通信。
- JSON-DB-一种本地开发的,无模式的,面向文档的数据库,该数据库使用包含JSON对象的简单平面文件。除了节点和文件系统外,这根本没有要求。性能要在完全实施后才能确定。
免责声明:我是作者。
也许看看 这里宣布的BarricaneDB。
我不确定正确的解决方案是只专注于将数据库映射到您的Web堆栈,还是要考虑特定于应用程序的需求。
您是否正在分析Twitter提要或其他大量数据的模式,但不需要事务支持?然后快速选择一些东西。
您是否只想在一些表中存储一些真正的基本信息,而当前它不是“以企业为中心”的应用程序?然后选择一些很酷的东西学习。
也许您将存储对客户端真正重要的数据,健壮的数据,需要进行事务处理的数据以及实时复制到远程托管设施等的数据。然后也许考虑使用诸如postgresql之类的数据。它也不会镜像,但是node.js驱动程序工作得很好,如果您不死于sql,那么它很容易就能获得所需的内容。
就我个人的观点而言,我认为使用像node.js(相对于php / java中的传统框架)这样的较新堆栈会增加足够的“新”复杂性,因此不应一次添加所有额外的层。这是一篇很好的文章,讨论了以下内容:
还有更多需要考虑的问题:
全球人员: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