Js 数据库

我正在寻找一个数据库,以配对一个 node.js 应用程序。我假设 json/nosql DB 比关系数据库更好[我可以不使用任何 json/sql 阻抗不匹配]。我在考虑:

  • couchdb
  • MonGodb
  • redis

有人对上面的视图/战争故事与 node.js 的兼容性/可部署性有什么看法吗? 有什么明确的偏好吗?

47947 次浏览

Redis 是一个很受欢迎的选择,您所追求的是一个不会阻塞的数据库驱动程序。

你列出的数据库都很不一样。Redis 采用键值存储的思想,并使用它运行,添加了各种数据类型和查询数据的方法。人们经常注意到重排也可以很好地缩小; 这意味着尽管有执行能力,但是它的开销非常低。

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

尽管您的选择在很大程度上取决于您所要寻找的特性,但是我真的很欣赏 CouchDB 的原生 JavaScript 环境。数据和视图都是用 JavaScript 编写的,所以在我看来,它非常适合 node.js。

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

但是正如我所说的,您还应该考虑数据库所需的特性。

我是 node.js 的 mongodb 驱动程序的开发者。我在自己的项目中使用 mongodb,并且对 mongodb 的性能非常满意。

用于 node.js 的 Mongodb 驱动程序

(无耻的插头)随时可以问任何关于司机的问题

Mongodb 驱动程序的谷歌群组

或者在 Stackoverflow

祝你在 node.js 上玩得开心,我非常喜欢这个平台: D

可能需要检查一下用于 node.js 的高级持久性/数据库系统 Persistence

来自 Thechangelog.com:

持久性是一个允许 用于持久化数据的高级 API 在流程运行之间。目标是 支持易于使用的后端, 强大的,灵活的,或所有的 如有可能,以上。

Supported databases include:

  • PostgreSQL-企业级 relational database. The driver is 用纯 JavaScript 和 方法通过 TCP 进行通信 PostgreSQL 连接协议。
  • Sqlite3 - 一种简单、快速、无需服务器的关系 这个驱动程序是一个包装器 围绕命令行 sqlite3 program. It requires sqlite3 to be in 这条路,这种交流 速度非常快,但类型不是很 precise. There are only strings and 一无所获。
  • MongoDB - A 可扩展的,高性能的,开放的 源代码,无模式,面向文档 此驱动程序还实现 JavaScript 中的连接协议和 communicated with the server over TCP.
  • JSON-DB-一个自主开发的无模式、面向文档的系统 使用简单平面文件的数据库 包含 JSON 对象 除了节点和一个 性能 一旦实施就决定了 完全。

免责声明: 我是作者。

也许看看 BarricaneDB宣布的 here

我真的很喜欢 CouchDB。这有点像一个学习曲线,但是一旦你知道如何使用视图,它就会变得非常强大。有一个称为 在 Github 上的摇篮和 npm 的模块,它非常容易使用。我还不能测试它有多快,但它真的很灵活(如果你愿意,你也可以在浏览器中访问你的数据)。

这里的主要问题是哪种数据库设计对应用程序有意义。你是否有大部分关键价值的数据?如果是这样,使用 Redis。您是否拥有并非所有文档都必须具有相同字段的数据?如果是这样,使用像 CouchDB 这样的 NoSQL 数据库。

使用阻塞数据库的下一个更糟糕的事情是对数据使用错误的数据库。CouchDB 由 Apache 管理,因此您知道它的质量很好,但是如果您的数据在 SQL 表或简单的键值存储中更有意义,那么使用它就没有意义了。

Think of your use case. Will you be more likely to want to do a full-text search, just get data by key, or get ranges of documents that have similar attributes?

我不确定仅仅将数据库映射到 Web 栈是否是正确的解决方案,而是考虑特定于应用程序的需求。

您是否在分析 twitter 提要或其他大容量数据以获得模式,但不需要事务支持?那就快点选。

你只是想存储一些真正的基本信息在几个表格和它目前不是一个“企业为重点”的应用程序?那就选一些很酷的东西来学。

也许你要存储的数据对客户端来说真的很重要,健壮,需要是事务性的,并有活的复制到远程托管设施,等等。然后再看看后期。它不会镜像,但 node.js 驱动程序工作得非常好,如果你不是非常害怕 sql,它可以很容易地得到你想要的东西。

至于我个人的观点,我认为使用像 node.js 这样的新堆栈(相对于 php/java 中的传统框架)增加了足够的“新”复杂性,因此不应该一次性添加额外的层。这是一篇讨论以下问题的好文章:

Http://nodeguide.com/convincing_the_boss.html

Ty 是另一个平面文件键值存储。顾名思义,对于简单的情况,它是一个快速、肮脏但高效的解决方案。我不是作者

Some more to consider:

Globals: http://globalsdb.org

GTM (起点见 https://github.com/robtweed/node-mwire)

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

根据我的经验: CouchDB 具有明确的学习曲线,而 MongoDB 非常容易学习和设置。我从来没有使用过重排。我建议使用 MongoDB,不过可能有点不知羞耻的狂热,我没有数字,呵呵,只是声称易于使用。

我发现 CouchDB很容易掌握。互联网上有很多电子书可供选择,它们会教你如何在 Node.js中使用 CouchDB。

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

对于与 Node.js 一起使用 CouchDB,我使用 NANO模块。

CouchDB 可以驻留在 爱尔兰沙发云雾剂上。