我知道这是一个大问题,不是一个是或否的答案,但是我们开发了Web应用程序,并且正在考虑将MongoDB用于我们的持久性解决方案。将MongoDB与NoRM结合起来进行对象存储。
我想问的是,从SQL切换到mongo有什么陷阱?什么时候mongo根本不是正确的解决方案,而mongodb的优势足以将开发从SQL转移到其他地方?
我认为在选择存储后端时,数据格式应该是首要考虑的问题。您是否具有关系相关的数据?如果是这样,可以对文档中的数据建模吗?数据建模在文档数据库中与在关系数据库中一样重要,只是做了不同的事情。您有几种类型的对象,它们之间有什么关系?Mongodb中的DBrefs可以解决问题吗?还是您会错过外键,这会很痛苦吗?您对数据的访问方式是什么?您是仅获取由字段值过滤的一种类型的数据,还是具有复杂的获取模式?
您需要ACID交易完整性吗?域是否对数据施加了很多约束?您是否需要文档数据库的可伸缩性因素,或者仅仅是“很酷”的事情?
您的一致性和数据完整性要求是什么?为了获得性能,某些NoSQL解决方案(尤其是MongoDB)在写入一致性方面过于宽松。NoSQL并非统一的环境,其他产品也不例外,例如CouchDB在该部门具有其他特征。有些也是可调的。
这些都是应该选择存储的所有问题。
一些经验