为什么选择使用NoSQL数据库开发如此困难?

Posted GitChat精品课

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么选择使用NoSQL数据库开发如此困难?相关的知识,希望对你有一定的参考价值。

这是我再一次评估NoSQL数据库,我知道选择很困难,但是我还是必须要做出选择。


我最后一次评估NoSQL数据库,我坚持以关系数据库将它完成。今天,我再次对他进行评估,这一次,我知道我必须要做出至少一个选择。但是,选择却是如此困难。


传统观念中NoSQL数据库非常适合某些数据类型,如:非关系数据源。同时,NoSQL被吹捧为最适合Web应用程序的优秀平台。然而他适合大多数数据,特别是web应用程序的数据是相关型。那么,这是否可以给你一个坚持使用RDMS的理由呢?也不一定,即使很困难,我们还是要做出选择。

评估NoSQL是一个很茅盾的理论,一些人认为,应该将所有文档数据存储在一个文档中,做链接代码就是亵渎神明。另外一部分人认为,存储应用文档,加入代码,才是合理选择。与此同时,不同的数据库,需要在文档中限制嵌套数据数量。有的人会鼓励文档引用。这是NoSQL数据模型的基本部分,也没有一个明确的共识。

曾经有一篇很热的帖子"Why you should never use XYZ",我想,读到这里,一定会有人搜索这篇文章。当然,这种文章各式各样,太过于笼统的标题也没什么帮助。毫无疑问,会有人会搜索这个文章,然后再找到这个文章,进一步深入,找到该文章的方法远比成功(理解问题)的故事多。很难知道谁提供了一个有效的技术问题,谁又误读了这个问题(或者缺少证据证明其观点)。

有大量选择,RDBMS的世界,选择就很容易。你有4或5个目标,大家工作方式差不多,来选择环境、预算支持的平台。对于成熟的产品,风险比较小。NoSQL的世界,有很多数据库引擎功能选择。每一个有自己的独特优势,也有致命弱点。所以选择很难,NoSQL项目生命周期短,尝试新项目或者流行项目也会有风险。上次,我的的项目是在CouchDB上,而现在似乎停摆了。

做出这个痛苦决定的原因是,这可能是一个案例:你需要做一大堆工作,才能知道,你做出的选择对与错。你可以实体化你的数据模型,了解他与系统的工作情况,但是,这只有你正真撞到南墙,才可以找到裂缝(答案)。以我为例,我建的应用程序是关系数据库,移动文件存储的主要因素是,需要一个无模式设计来达到我的目标。使用NoSQL数据库存储关系型数据库并不是我们所常说的,虽然,这种事常常发生。

现在我在用Couchbase和MongoDB,Mongo对我没多大吸引力,不过鉴于他非常流行,对于引起来说,很有好处。当然,很多都可以以同样的方式流行。php很流行,因为他的易用性,而不是因为他很好。我现在在使用MongoDB和PHP,也在学习Couchbase,如果你有任何NoSQL平台的使用感想,欢迎交流。


以上是关于为什么选择使用NoSQL数据库开发如此困难?的主要内容,如果未能解决你的问题,请参考以下文章

MVCC 之传统数据库和NOSQL

除了SQL,你知道NoSQL吗?

为啥在物化视图上使用 NoSQL?

如何选择合适的NoSQL数据库

如何正确选择NoSQL数据库?选型要点有哪些?

市面上数据库种类那么多,如何选择?