【问题标题】:How can NoSQL databases achieve much better write throughput than some relational databases?NoSQL 数据库如何实现比某些关系数据库更好的写入吞吐量?
【发布时间】:2018-05-07 08:12:57
【问题描述】:

这怎么可能?是什么让 NoSQL 比某些 RDBMS 具有更高的写入吞吐量?它归结为可扩展性吗?

【问题讨论】:

标签: sql mongodb nosql relational-database rdbms


【解决方案1】:

一些 noSQL 系统基本上只是持久的键/值存储(如伏地魔项目)。如果您的查询属于“查找给定键的值”的类型,那么这样的系统将(或至少应该)比 RDBMS 更快,因为它只需要具有更小的功能集。

另一种流行的 noSQL 系统类型是文档数据库(如 CouchDB)。这些数据库没有预定义的数据结构。它们的速度优势在很大程度上依赖于非规范化和创建适合您将在其上运行的查询的数据布局。例如,对于博客,您可以将博客文章与其 cmets 一起保存在文档中。这减少了连接和查找的需要,使您的查询更快,但它也可能降低您在查询方面的灵活性。

周围有很多 NoSQL 解决方案,每个都有自己的优点和缺点,所以下面的内容必须持保留态度。

但本质上,许多 NoSQL 数据库所做的是依赖非规范化并尝试针对非规范化情况进行优化。例如,假设您在面向文档的数据库中阅读博客文章及其 cmets。通常,cmets 将与帖子本身一起保存。这意味着将它们全部一起检索会更快,因为它们存储在同一个位置,您不必执行连接。

当然,您可以在 SQL 中做同样的事情,当需要性能时,反规范化是一种常见的做法。只是许多 NoSQL 解决方案从一开始就被设计为始终以这种方式使用。然后你会得到通常的权衡:例如,在上面的例子中添加评论会更慢,因为你必须用它来保存整个文档。一旦你进行了非规范化,你必须注意在你的应用程序中保持数据的完整性。

此外,在许多 NoSQL 解决方案中,不可能进行任意连接,因此是任意查询。某些数据库(如 CouchDB)要求您提前考虑所需的查询并在数据库中准备它们。

总而言之,它归结为期望非规范化架构并针对这种情况优化读取,这对于不高度相关且需要读取比写入多得多的数据非常有效。

This link 还解释了很多: RDBMS -> 数据完整性是一个关键特性(它会减慢一些操作,如写入) NoSQL -> 速度和水平可扩展性是必要的(所以速度真的很高)

AAAND... 关于 NoSQL 的一点是 NoSQl 不能以任何方式与 SQL 进行比较。 NoSQL 是所有非 SQL 的持久性技术的名称。文档数据库、键值数据库、事件数据库都是 NoSQL。它们几乎在所有方面都不同,无论是保存数据的结构、查询、性能和可用工具。

希望对理解有用

【讨论】:

    【解决方案2】:

    总之,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 页

    【讨论】:

    • 您遗漏了最重要的部分。它们没有完全实现 ACID 属性,使用最终一致性来显着减少 DML 的开销。许多其他机制也被关系数据库使用。
    猜你喜欢
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2021-09-22
    • 2011-05-08
    • 2017-03-19
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    相关资源
    最近更新 更多