最近有很多关于NoSQL的讨论。
我听到人们使用NoSQL的第一个原因是因为他们开始非常规范化他们的DBMS数据,以提高性能,他们最终只得到一个表,其中包含该单个表中的所有数据。
但是,使用物化视图,您可以将数据标准化,但将其存储为单个表视图,原因与您使用NoSQL的原因相同。
因此,为什么有人会使用NoSQL而不是物化视图?
答案 0 :(得分:6)
一个原因是物化视图在OLTP情况下表现不佳,其中存在大量INSERT与SELECT。
每次插入数据时,必须更新实体化视图索引,这不仅会减慢插入速度,还会选择。使用NoSQL的主要原因是性能。通过基本上是一个散列密钥存储,你可以获得极其快速的读/写,代价是对约束的控制较少,这通常必须在应用层完成。
因此,虽然物化视图可能有助于读取,但它们无法加速写入。
答案 1 :(得分:4)
NoSQL不是要从SQL数据库中获得更好的性能。当数据没有特定原因在SQL中时,它是关于考虑除默认SQL存储之外的选项。
如果您已经建立了具有良好设计架构的SQL数据库,并且您唯一的新要求是提高性能,那么添加索引和视图绝对是正确的方法。
如果您需要保存一个您知道只需要通过其密钥访问的用户配置文件对象,SQL可能不是最佳选择 - 您不会从具有各种查询功能的系统中获得任何收益使用,但能够省略ORM层,同时提高您将使用的查询的性能是非常有价值的。
答案 2 :(得分:0)
另一个原因是NoSQL的动态特性。您创建的每个视图都需要事先创建,并“猜测”应用程序如何使用它。
使用NoSQL,您可以随着数据的变化而改变;动态改变您的数据以适应应用程序。