3

最近我读了很多关于 noSQL DBMS 的文章。我了解 CAP 定理、ACID 规则、BASE 规则和基本理论。但是没有找到任何关于为什么 noSQL 比 RDBMS 更容易扩展的资源(例如,在需要大量数据库服务器的系统的情况下)?我猜想保持约束和外键会消耗资源,并且当 DBMS 被分发时,它要复杂得多。但我预计还有更多。

有人可以解释一下 noSQL/SQL 如何影响可伸缩性吗?

4

2 回答 2

4

这真的取决于您的问题,每种数据库类型都有其优势,而 Nether SQL 和 noSQL 更擅长扩展,它们是不同的。这完全取决于您拥有的数据,如果您的数据本质上是关系,那么 SQL 可能会更好,如果您的数据是基于文档的(没有定义的模式),那么 noSQL 可能会更好。我们在产品中使用这两种类型的数据库,我们有很多不同的数据,有些适合 SQL,有些适合 noSQL。

你在考虑什么样的规模?并行访问,处理大量查询还是处理非常大的数据?您的问题非常广泛,在不知道您要解决什么问题的情况下回答有点困难。

于 2013-04-08T20:28:26.503 回答
0

SQL/noSQL 的性能不是在概念级别上衡量的。事实上,当关系模型(比 SQL 更准确地说)问世时,它被认为是低效率的,然后它接管了世界。在计算机科学中,评估的是特定算法(使用特定结构)的时间复杂度。

在任何类型的数据库中,都使用具有多个操作(插入、删除、搜索)的多个数据结构。即使对相同数据结构的相同操作也可能使用不同的算法,从而提供不同的性能。不同的 RDBMS 可能使用不同的数据结构/算法或变体。

这对 noSQL 数据库更有效,其中有不同的类型 ( http://en.wikipedia.org/wiki/NoSQL )。

因此,我认为在如此高的水平上比较性能是没有意义的。您需要查看具体算法并根据问题的需要进行选择。

还要考虑一些人在 RDBM 中成功实现 noSQL,在无模式模型的意义上,有大量数据:http ://backchannel.org/blog/friendfeed-schemaless-mysql

最后,也许是更主观的意见,具体而言,我只知道当您必须更改架构时性能会有所不同。当表很大时,大多数 RDBM 都在努力进行更改。这并不是说它们在概念上存在问题或不如 noSQL。这不是问题,因为设计过去被认为是稳定的。

RDBMS 开始适应,参见例如。MariaDB 中的动态列:https ://kb.askmonty.org/en/dynamic-columns/

于 2013-04-08T21:54:57.070 回答