NoSQL 数据库如何实现比某些关系数据库更好的写入吞吐量?
How can NoSQL databases achieve much better write throughput than some relational databases?
这怎么可能? NoSQL 的写入吞吐量比某些 RDBMS 更高的原因是什么?它是否归结为可扩展性?
一些没有SQL 的系统基本上只是持久性key/value 存储(例如伏地魔计划)。如果您的查询属于 "look up the value for a given key" 类型,这样的系统将(或至少应该)比 RDBMS 更快,因为它只需要具有更小的功能集。
另一种流行的无SQL 系统类型是文档数据库(如 CouchDB)。这些数据库没有预定义的数据结构。他们的速度优势在很大程度上依赖于非规范化和创建一个数据布局,该布局是为您将 运行 对其进行的查询量身定制的。例如,对于博客,您可以将博客 post 与其评论一起保存在文档中。这减少了连接和查找的需要,使您的查询更快,但它也可能降低您在查询方面的灵活性。
周围有很多不SQL的解决方案,每一个都有自己的长处和短处,因此必须对以下内容有所保留。
但本质上,许多 NoSQL 数据库所做的是依赖非规范化并尝试针对非规范化情况进行优化。例如,假设您正在阅读博客 post 及其在面向文档的数据库中的评论。通常,评论将与 post 本身一起保存。这意味着将它们全部一起检索会更快,因为它们存储在同一个地方并且您不必执行连接。
当然,你也可以在SQL中做同样的事情,当需要性能时,反规范化是一种常见的做法。只是许多 NoSQL 解决方案从一开始就设计为始终以这种方式使用。然后你会得到通常的权衡:例如,在上面的例子中添加评论会更慢,因为你必须用它保存整个文档。一旦你进行了非规范化,你就必须注意在你的应用程序中保持数据的完整性。
此外,在许多 NoSQL 解决方案中,不可能进行任意连接,因此无法进行任意查询。一些数据库,如 CouchDB,要求您提前考虑您需要的查询并在数据库中准备它们。
总而言之,它归结为期望非规范化模式并针对该情况优化读取,这适用于关系不高度相关且需要读取的数据远多于写入的数据。
This link 进一步解释了很多地方:
RDBMS -> 数据完整性是一个关键特性(它可以减慢一些操作,比如写)
否SQL -> 速度和水平可扩展性是必要的(所以速度真的很高)
AAAND... 关于 NoSQL 的事情是,NoSQl 不能以任何方式与 SQL 进行比较。 NoSQL 是所有非 SQL 的持久性技术的名称。文档数据库、键值数据库、事件数据库都是NoSQL。它们在几乎所有方面都是不同的,无论是保存数据的结构、查询、性能还是可用的工具。
希望对理解有用
In summary, NoSQL databases are built to easily scale across a large number of servers (by sharding/horizontal partitioning of data items), and to be fault tolerant (through replication, write-ahead logging, and data repair mechanisms). Furthermore, NoSQL supports achieving high write throughput (by employing memory caches and append-only storage semantics), low read latencies (through caching and smart storage data models), and flexibility (with schema-less design and denormalization).
发件人:
Open Journal of Databases (OJDB)
Volume 1, Issue 2, 2014
www.ronpub.com/journals/ojdb
ISSN 2199-3459
https://estudogeral.sib.uc.pt/bitstream/10316/27748/1/Which%20NoSQL%20Database.pdf - 第 19 页
这怎么可能? NoSQL 的写入吞吐量比某些 RDBMS 更高的原因是什么?它是否归结为可扩展性?
一些没有SQL 的系统基本上只是持久性key/value 存储(例如伏地魔计划)。如果您的查询属于 "look up the value for a given key" 类型,这样的系统将(或至少应该)比 RDBMS 更快,因为它只需要具有更小的功能集。
另一种流行的无SQL 系统类型是文档数据库(如 CouchDB)。这些数据库没有预定义的数据结构。他们的速度优势在很大程度上依赖于非规范化和创建一个数据布局,该布局是为您将 运行 对其进行的查询量身定制的。例如,对于博客,您可以将博客 post 与其评论一起保存在文档中。这减少了连接和查找的需要,使您的查询更快,但它也可能降低您在查询方面的灵活性。
周围有很多不SQL的解决方案,每一个都有自己的长处和短处,因此必须对以下内容有所保留。
但本质上,许多 NoSQL 数据库所做的是依赖非规范化并尝试针对非规范化情况进行优化。例如,假设您正在阅读博客 post 及其在面向文档的数据库中的评论。通常,评论将与 post 本身一起保存。这意味着将它们全部一起检索会更快,因为它们存储在同一个地方并且您不必执行连接。
当然,你也可以在SQL中做同样的事情,当需要性能时,反规范化是一种常见的做法。只是许多 NoSQL 解决方案从一开始就设计为始终以这种方式使用。然后你会得到通常的权衡:例如,在上面的例子中添加评论会更慢,因为你必须用它保存整个文档。一旦你进行了非规范化,你就必须注意在你的应用程序中保持数据的完整性。
此外,在许多 NoSQL 解决方案中,不可能进行任意连接,因此无法进行任意查询。一些数据库,如 CouchDB,要求您提前考虑您需要的查询并在数据库中准备它们。
总而言之,它归结为期望非规范化模式并针对该情况优化读取,这适用于关系不高度相关且需要读取的数据远多于写入的数据。
This link 进一步解释了很多地方: RDBMS -> 数据完整性是一个关键特性(它可以减慢一些操作,比如写) 否SQL -> 速度和水平可扩展性是必要的(所以速度真的很高)
AAAND... 关于 NoSQL 的事情是,NoSQl 不能以任何方式与 SQL 进行比较。 NoSQL 是所有非 SQL 的持久性技术的名称。文档数据库、键值数据库、事件数据库都是NoSQL。它们在几乎所有方面都是不同的,无论是保存数据的结构、查询、性能还是可用的工具。
希望对理解有用
In summary, NoSQL databases are built to easily scale across a large number of servers (by sharding/horizontal partitioning of data items), and to be fault tolerant (through replication, write-ahead logging, and data repair mechanisms). Furthermore, NoSQL supports achieving high write throughput (by employing memory caches and append-only storage semantics), low read latencies (through caching and smart storage data models), and flexibility (with schema-less design and denormalization).
发件人:
Open Journal of Databases (OJDB) Volume 1, Issue 2, 2014 www.ronpub.com/journals/ojdb ISSN 2199-3459
https://estudogeral.sib.uc.pt/bitstream/10316/27748/1/Which%20NoSQL%20Database.pdf - 第 19 页