新MongoDB用户最重要的警告是什么?

时间:2013-01-04 11:25:26

标签: mongodb warnings real-time

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

我被警告说,使用mongo很容易走错路,文档搞砸了等等。

因此,为了缩小我们可能谈论GNU / Linux最新设置和Node.js的论点。请排除讨论RDBMS与NoSQL。请在Mongo设置中包含现实生活体验。

谢谢!

2 个答案:

答案 0 :(得分: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),就停止杀死小猫。

的JOIN

这里没有,停止尝试通过Map Reduce来做,只学习NoSQL。

工作集和内存管理

要知道你在内存中的内容以及LRU的工作原理。 MongoDB没有自己的内存管理。请注意MongoDB使用mmap来存储您的数据。

官方列表

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

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

  

您无法在256G上对现有集合进行分片。

这仅适用于旧的MongoDB。

答案 1 :(得分:0)

我发现在使用Mongo时,我不得不考虑我的正常数据库架构设计的“外部”。您不应该尝试将您之前的数据库知识强加到Mongo上。

我知道你提到排除RDBMS与NoSQL,但我觉得这是一个有效的观点。

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

不要制作适合Mongo的变通方法,以Mongo的方式做,你会发现它很容易。