116

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

  • 沙发数据库
  • mongodb
  • 雷迪斯

任何人都对以上与 node.js 的兼容性/可部署性有任何看法/战争故事?有什么明确的最爱吗?

4

11 回答 11

79

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

node.js 的 Mongodb 驱动程序

(无耻插件)有任何关于司机的问题都可以在

用于 mongodb 驱动程序的 Google 组

或者在这里 Stackoverflow

玩得开心 node.js。我非常喜欢这个平台:D

于 2010-05-24T17:17:05.233 回答
25

尽管您的选择很大程度上取决于您想要的功能,但我非常感谢 CouchDB 的原生 JavaScript 环境。数据和视图都是用 JavaScript 编写的,所以我认为它非常适合 node.js。

也有不同的客户端库可用,一些相当低级,另一些非常抽象。

但正如我所说,您还应该考虑数据库所需的功能。

于 2010-05-21T11:03:02.487 回答
18

Redis 是一个流行的选择。您所追求的是一个不会阻塞的数据库驱动程序。

您列出的数据库都非常不同。Redis 采用了键值存储的思想并与之一起运行,增加了多种数据类型和查询数据的方式。人们经常注意到 redis 也可以很好地缩小规模。这意味着尽管有执行能力,但它的开销非常低。

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

于 2010-05-02T17:28:51.063 回答
15

我真的很喜欢 CouchDB。这是一个学习曲线,但是一旦你了解了如何使用视图,它们就会变得非常强大。在 github和 npm 上有一个名为 cradle 的模块,它非常易于使用。我无法测试它有多快,但它非常灵活(如果你愿意,你也可以在浏览器中访问你的数据)。

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

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

想想你的用例。您是否更愿意进行全文搜索、仅通过键获取数据或获取具有相似属性的文档范围?

于 2011-03-21T18:14:19.530 回答
8

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

来自thechangelog.com

Persistence 是一个允许高级 API 在进程运行之间持久化数据的项目。目标是支持易于使用、功能强大、灵活的后端,或者在可能的情况下支持上述所有功能。

支持的数据库包括:

  • PostgreSQL - 企业级关系数据库。该驱动程序以纯 JavaScript 实现,并使用 PostgreSQL 有线协议通过 TCP 进行通信。
  • Sqlite3 - 一个简单、快速、无服务器的关系数据库。该驱动程序是命令行 sqlite3 程序的包装器。它要求 sqlite3 在路径中。通信速度极快,但类型不是很精确。只返回字符串和空值。
  • MongoDB - 一个可扩展、高性能、开源、无模式、面向文档的数据库。该驱动程序还使用 JavaScript 实现有线协议,并通过 TCP 与服务器通信。
  • JSON-DB - 一个自主开发的系统无模式、面向文档的数据库,它使用包含 JSON 对象的简单平面文件。除了节点和文件系统之外,这根本没有任何要求。性能将在完全实施后确定。
于 2010-09-10T03:57:53.140 回答
5

免责声明:我是作者。

也许看看BarricaneDB在这里宣布。

于 2011-03-04T13:14:03.960 回答
3

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

您是否正在分析 twitter 提要或其他大量数据的模式,但不需要事务支持?然后快速选择一些东西。

您是否只想在几张表中存储一些真正的基本信息,并且它目前不是“以企业为中心”的应用程序?然后选择一些很酷的东西来学习。

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

至于我自己的观点,我认为使用像 node.js 这样的更新堆栈(与 php/java 中的传统框架相比)会增加足够的“新”复杂性,以至于不应该一次添加额外的层。这是一篇很好的文章,它讨论了:

http://nodeguide.com/convincing_the_boss.html

于 2011-06-17T12:29:19.247 回答
2

我将根据我的经验来谈谈:CouchDB 具有明确的学习曲线,而我发现 MongoDB 非常容易学习和设置。我从来没有用过redis。我建议使用 MongoDB——但那可能是无耻的狂热——我没有数字,呵呵,只有易用性的说法。

于 2012-06-15T14:38:30.423 回答
1

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

于 2011-09-09T07:01:09.033 回答
1

还有一些需要考虑:

全局变量: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

于 2011-09-22T12:14:05.767 回答
0

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

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

为了将 CouchDB 与 Node.js 一起使用,我使用NANO模块。

CouchDB 可以托管在IriscouchCloudant上。

于 2012-08-10T18:54:59.867 回答