11

最近有很多关于 NoSQL 的讨论。

我听说人们使用 NoSQL 的第一个原因是因为他们开始对 DBMS 数据进行如此多的反规范化,以提高性能,以至于他们最终只得到一张表,所有数据都在该表中。

但是,使用物化视图,您可以保持数据规范化,同时将其存储为单个表视图,原因与使用 NoSQL 的原因相同。

因此,为什么有人会在物化视图上使用 NoSQL?

4

3 回答 3

6

一个原因是物化视图在有大量 INSERT 与 SELECT 的 OLTP 情况下表现不佳。

每次插入数据时,物化视图索引都必须更新,这不仅会减慢插入速度,还会减慢选择速度。使用 NoSQL 的主要原因是性能。通过基本上是一个散列键存储,您可以获得非常快的读/写,但代价是对约束的控制较少,这通常必须在应用程序层完成。

因此,虽然物化视图可能有助于读取,但它们对加速写入没有任何作用。

于 2010-04-09T13:47:46.960 回答
4

NoSQL 并不是要从 SQL 数据库中获得更好的性能。当数据根本没有特别的原因在 SQL 中时,它是关于考虑默认 SQL 存储以外的选项。

如果您已经建立了具有良好设计架构的 SQL 数据库,并且您唯一的新要求是提高性能,那么添加索引和视图绝对是正确的方法。

如果您需要保存一个您知道只需要通过其键访问的用户配置文件对象,那么 SQL 可能不是最佳选择 - 您不会从具有各种您不会使用的查询功能的系统中获得任何收益,但是能够在提高您将使用的查询的性能的同时省略 ORM 层是非常有价值的。

于 2010-04-10T10:47:05.590 回答
0

另一个原因是 NoSQL 的动态特性。您创建的每个视图都需要事先创建,并“猜测”应用程序如何使用它。

使用 NoSQL,您可以随着数据的变化而变化;动态改变您的数据以适应应用程序。

于 2015-07-21T17:55:39.403 回答