最近我读了很多关于noSQL DBMS的文章。我理解CAP定理,ACID规则,BASE规则和基本理论。但是没有找到任何关于为什么noSQL可以比RDBMS更容易扩展的资源(例如在系统需要大量数据库服务器的情况下)?我想保持约束和外键会花费资源,而且当DBMS分发时,它会复杂得多。但我希望有更多的东西。
有人可以解释noSQL / SQL如何影响可扩展性吗?
答案 0 :(得分:4)
这实际上取决于你的问题,每个数据库类型都有它的优点,而且SQL还没有noSQL在扩展方面更好,它们是不同的。这一切都取决于你拥有的数据,如果你的数据本质上是关系,那么SQL可能会更好,如果你的数据是基于文档的(没有定义的模式)那么noSQL可能会更好。我们在产品中使用这两种类型的数据库,我们有很多不同的数据,有些适合SQL,有些适用于noSQL。
你在考虑什么样的规模?并行访问,处理大量查询或非常大的数据处理?你的问题非常广泛,如果不知道你要解决什么问题就很难回答。
答案 1 :(得分:0)
SQL / noSQL的性能不是在概念级别上测量的。事实上,当关系模型(比SQL更正确地说)出现时,它被降级为非效率,然后它接管了世界。在计算机科学中,评估的是特定算法的时间复杂度(使用特定结构)。
在任何类型的数据库中,使用具有多个操作(插入,删除,搜索)的多个数据结构。即使相同数据结构的相同操作也可能使用不同的算法,因此提供不同的性能。不同的RDBMS可能使用不同的数据结构/算法或变体。
对于没有SQL数据库的情况更为有效,其中有不同的类型(http://en.wikipedia.org/wiki/NoSQL)。
因此,我认为比较如此高水平的表现是不合理的。您需要查看具体算法并根据问题的需要进行选择。
还要考虑一些人在RDBM中成功实现noSQL,在无模式模型的意义上,有大量数据:http://backchannel.org/blog/friendfeed-schemaless-mysql
最后,一个或许更主观的观点,具体而言,我只知道当你必须改变架构时,性能会有所不同。当表很大时,大多数RDBM都会遇到变化。这并不是说它们在概念上是错误的,或者说不如noSQL。这只是一个问题,因为设计过去被认为是稳定的。
RDBMSes开始适应,参见例如。 MariaDB中的动态列:https://kb.askmonty.org/en/dynamic-columns/