我正在寻找一个与node.js应用程序配对的数据库.我假设一个json/nosql数据库比关系数据库更好[我可以不用任何json/sql阻抗不匹配].我在考虑:
CouchDB的
MongoDB的
Redis的
任何人都有任何观点/战争故事与node.js的上述兼容性/可部署性?任何明确的收藏?
我是node.js的mongodb驱动程序的开发人员.我正在为自己的项目使用mongodb,并对mongodb的性能非常满意.
node.js的Mongodb驱动程序
(无耻插头)随意询问有关司机的任何问题
谷歌组为mongodb司机
或者在Stackoverflow
享受node.js的乐趣.我非常喜欢这个平台:D
虽然您的选择在很大程度上取决于您的目标,但我非常欣赏CouchDB的原生JavaScript环境.数据和视图都是用JavaScript编写的,所以我认为它非常适合node.js.
还有不同的客户端库可用,一些是相当低级别的,另一些非常抽象.
但正如我所说,您还应该考虑数据库所需的功能.
Redis是一个受欢迎的选择.你所追求的是一个不会阻塞的数据库驱动程序.
您列出的数据库都非常不同.Redis采用键值存储的概念并随之运行,添加了各种数据类型和查询数据的方法.人们经常注意到redis也很好地缩小了; 意味着尽管具有执行能力,但它的开销非常低.
以下是可用数据库模块的列表:http://wiki.github.com/ry/node/modules#database
我真的很喜欢CouchDB.这是一个学习曲线,但一旦你理解了如何使用它们,视图就会非常强大.在github和npm 上有一个名为cradle的模块,非常容易使用.我无法测试它的速度有多快,但它非常灵活(如果您愿意,也可以在浏览器中访问您的数据).
这里的主要问题是哪种数据库设计对您的应用程序有意义.您是否拥有主要是关键价值的数据?如果是这样,请使用Redis.您是否拥有并非所有文档必须具有相同字段的数据?如果是这样,请使用像CouchDB这样的NoSQL数据库.
使用阻塞数据库的下一个更糟糕的事情是使用错误的数据库来存储数据.CouchDB由Apache管理,因此您知道它的质量很好,但如果您的数据在SQL表或简单的键值存储中更有意义,那么使用它是没有意义的.
想想你的用例.您是否更有可能想要进行全文搜索,只是按键获取数据,或者获取具有相似属性的文档范围?
可能想要查看node.js的Persistence,高级持久性/数据库系统.
来自thechangelog.com:
持久性是一个允许高级API在进程运行之间持久保存数据的项目.目标是支持易于使用,强大,灵活或尽可能上述所有内容的后端.
支持的数据库包括
PostgreSQL - 企业级关系数据库.驱动程序以纯JavaScript实现,并使用PostgreSQL有线协议通过TCP进行通信.
Sqlite3 - 一个简单,快速,无服务器的关系数据库.该驱动程序是命令行sqlite3程序的包装器.它需要sqlite3在路径中.通信速度非常快,但类型不是很精确.只返回字符串和空值.
MongoDB - 一个可扩展,高性能,开源,无架构,面向文档的数据库.此驱动程序还在JavaScript中实现有线协议,并通过TCP与服务器通信.
JSON-DB - 一种自行开发的系统模式,面向文档的数据库,它使用包含JSON对象的简单平面文件.除了节点和文件系统之外,它根本没有任何要求.性能将在完全实施后确定.
免责声明:我是作者.
也许看看这里宣布的BarricaneDB.