最近,我读了很多有关不同NoSQL数据库的资料,以及一些主要网站如何有效地部署它们的资料。我正在启动一个项目,在该项目中,我认为数据库(如MongoDB)的无模式性质将非常有用。尽管我读过的所有内容似乎都表明NoSQL数据库的主要优点是可伸缩性。为无模式设计选择NoSQL数据库是否与可伸缩性设计一样是合法的设计决策?
是的,尽管有很多方法可以容纳用户定义的字段(请参阅XML数据类型,EAV设计模式或仅具有备用的通用列),但有时RDBMS并不是最佳的解决方案,有时无模式的数据库是一个不错的选择。
但是,在选择使用文档数据库之前,您需要确定需求,因为您将失去使用关系模型可能会使用的许多功能。
例如…
如果您否则将在RDBMS数据库中有多个表,则需要研究MongoDB为您提供的功能以满足这些需求。
如果您将需要以特定方式查询数据,则再次需要研究MongoDB为您提供的内容。
我不会认为NoSQL可以代替RDBMS,而是一种略有不同的工具,它具有自己的优点和缺点,使其比其他项目更适合某些项目。
(这两种数据库在某些情况下都可能使用。同样,如果您决定沿用MongoDB的方法,一旦研究了网站并提出了更具体的问题,就可以访问Freenode IRC#mongodb频道)