Ole*_*ehi 1 sql rdbms relational-database mongodb nosql
这怎么可能?NoSQL 是什么让它比某些 RDBMS 具有更高的写入吞吐量?是否归结为可扩展性?
总之,NoSQL 数据库的构建是为了轻松地跨大量服务器扩展(通过数据项的分片/水平分区),并且具有容错能力(通过复制、预写日志记录和数据修复机制)。此外,NoSQL 支持实现高写入吞吐量(通过使用内存缓存和仅附加存储语义)、低读取延迟(通过缓存和智能存储数据模型)和灵活性(通过无模式设计和反规范化)。
从:
开放数据库期刊 (OJDB) 第 1 卷,第 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 系统基本上只是持久的键/值存储(如 Project Voldemort)。如果您的查询属于“查找给定键的值”类型,那么这样的系统将(或至少应该)比 RDBMS 更快,因为它只需要具有更小的功能集。
另一种流行的 noSQL 系统是文档数据库(如 CouchDB)。这些数据库没有预定义的数据结构。它们的速度优势在很大程度上依赖于非规范化和创建适合您将在其上运行的查询的数据布局。例如,对于博客,您可以将博客文章及其评论保存在文档中。这减少了连接和查找的需要,使您的查询更快,但它也可能降低您在查询方面的灵活性。
周围有许多 NoSQL 解决方案,每个解决方案都有自己的优点和缺点,因此必须对以下内容持保留态度。
但本质上,许多 NoSQL 数据库所做的是依赖于非规范化并尝试针对非规范化情况进行优化。例如,假设您正在一个面向文档的数据库中阅读一篇博客文章及其评论。通常,评论会与帖子本身一起保存。这意味着将它们全部检索在一起会更快,因为它们存储在同一位置并且您不必执行联接。
当然,你也可以在 SQL 中做同样的事情,当需要性能时,反规范化是一种常见的做法。只是许多 NoSQL 解决方案从一开始就设计为始终以这种方式使用。然后你会得到通常的权衡:例如,在上面的例子中添加注释会更慢,因为你必须用它保存整个文档。一旦您进行了非规范化,您就必须注意保持应用程序中的数据完整性。
此外,在许多 NoSQL 解决方案中,不可能进行任意连接,因此无法进行任意查询。某些数据库(如 CouchDB)要求您提前考虑将需要的查询并在数据库内准备它们。
总而言之,它归结为期望非规范化模式并针对这种情况优化读取,这对于关系不是高度相关且需要读取多于写入的数据很有效。
这个链接还解释了很多地方:RDBMS -> 数据完整性是一个关键特性(它会减慢一些操作,比如写) NoSQL -> 速度和水平可扩展性是必要的(所以速度真的很高,这个必须的)
AAAND...关于NoSQL 的事情是NoSQl 不能以任何方式与SQL 进行比较。NoSQL 是所有非 SQL 的持久性技术的名称。文档数据库、键值数据库、事件数据库都是 NoSQL。它们几乎在所有方面都不同,无论是保存数据的结构、查询、性能和可用工具。
希望对理解有用
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |