【发布时间】:2012-01-01 05:16:14
【问题描述】:
我正在使用 Node.JS 和 Express 创建一个社区站点,几乎所有快速教程或示例都使用 MongoDB,所以我检查了它。到目前为止,我使用的唯一数据库是 MySQL,但我对它不太熟悉,所以读 MongoDB 不会打扰我。 Mongo 看起来很不错,文档模型可能是有益的。有了猫鼬,它很容易使用。但是我有一些问题,所以如果 MongoDB 根本不适合我,我不会花很多时间学习使用它:
我了解到,如果您只在一台机器上使用 MongoDB,它是不可靠的,您可能会遇到数据丢失。那正确吗?这个项目并没有那么大,我买不起另一台服务器,数据丢失是绝对不行的!想象一下,一些论坛帖子消失了。但我想如果发生这种情况人们不会使用它。
该站点将包含一个自建论坛,我不确定关系数据库是否会更好。但是,您可以使用嵌入式帖子等保存线程。但是不知道如何搜索,因为 Mongo 不支持全文搜索。你怎么看?
什么时候在 Mongo 中使用嵌入文档?示例:用户可以在 Twitter 上发布状态更新。您会将这些更新保存在用户文档中吗?可以更新很多。还是每次更新的文档并将其链接到用户 ID? 3.1 以及如何跨多个文档进行查询?您想获取朋友的最近 10 次状态更新。您可以使用 MySQL 中的 JOIN 来做到这一点。
有没有办法像 MySQL 那样对文档使用自动增量 ID?例如,用户应该有一个唯一的整数键,但我不想要像 Mongo 那样的随机数,以保持用户 ID 较小。
如何处理猫鼬中的竞争条件?您从数据库加载文档,编辑某些内容并稍后保存。但也许同时它已经改变了。
【问题讨论】:
-
如果你不知道mongoDB,为什么不学习呢? :-)
-
其他人已经回答了您的问题 - 我只是想建议您尝试一下 MongoDB,因为它可以呼吸新鲜空气并且使用起来非常愉快。