1

我开始开发第一个带有 mongodb 的 node.js 应用程序,该应用程序将在未来发展为实时应用程序。

我被警告过,mongo 很容易走错路,文档混乱等等。

因此,为了缩小争论范围,我们可以谈谈 GNU/Linux 最新设置和 Node.js。请排除 RDBMS 与 NoSQL 的讨论。请包括使用 Mongo 设置的真实生活经验。

谢谢!

4

2 回答 2

3

这个列表是无穷无尽的,但这里有几点。

MongoDB 是网络规模

http://www.mongodb-is-web-scale.com/

始终嵌入从不关联

文档中实际支持的最大神话之一。

相反,您应该认真考虑嵌入,并且可能应该尽量避免嵌入超过 2 个嵌套级别,因为这会使您的生活变得困难,特别是如果您正在寻找对某些元素进行更新的原子性。

MongoDB 完全不受 SQL 注入的影响

不正确,您可以使 MongoDB 查询以不应该的方式运行:http: //docs.mongodb.org/manual/faq/developers/#how-does-mongodb-address-sql-or-query-injection

存储过程

MongoDB对此一无所知,而是依赖于您以这种方式设计数据库以避免像这样的微优化。

所以每次你:http ://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html你正在杀死一只小猫(尤其是用eval),停止杀死小猫。

加入

在这里都没有,停止尝试通过 Map Reduce 来完成它,而只是学习 NoSQL。

工作集和内存管理

当心你在记忆中的内容以及 LRU 是如何工作的。MongoDB 没有自己的内存管理。请注意 MongoDB 用于mmap内存映射您的数据。

官方名单

http://www.mongodb.org/display/DOCS/Gotchas

这也是一个问题,因为其中一些点实际上是错误的:

您不能对超过 256G 的现有集合进行分片。

这仅适用于旧的 MongoDB。

于 2013-01-04T11:40:29.357 回答
0

我发现在使用 Mongo 时,我不得不在我正常的数据库模式设计之外思考。您不应该试图将您对数据库的先验知识强加到 Mongo 上。

我知道您提到要排除 RDBMS 与 NoSQL,但无论如何我觉得这是一个有效的观点。

乐于改变:-),一旦我开始这样做,Mongo 对我来说似乎很自然。我真的很喜欢它的灵活性。

不要为适合 Mongo 做变通方法,按照 Mongo 的方式去做,你会发现它更容易。

于 2013-01-04T11:34:11.940 回答