NoSQL数据库如何实现比某些关系数据库更好的写入吞吐量?



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

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

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

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

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

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

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

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

此链接还解释了很多内容: RDBMS ->数据完整性是一个关键功能(可能会减慢某些操作,如写入) NoSQL -> 速度和水平可扩展性是必不可少的(所以速度真的很高)

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

希望理解有用

总之,NoSQL 数据库的构建是为了轻松跨大量服务器进行扩展(通过数据项的分片/水平分区),并且具有容错能力(通过复制、预写日志记录和数据修复机制)。此外,NoSQL 支持实现高写入吞吐量(通过使用内存缓存和仅追加存储语义)、低读取延迟(通过缓存和智能存储数据模型)和灵活性(通过无模式设计和非规范化)。

从:

Open Journal of Databases (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 页

更高的写入吞吐量也可以归功于为数据库存储引擎提供支持的内部数据结构。

尽管某些 RDBMS 使用的 B 树实现经受住了时间的考验,但某些键值数据存储中使用的 LSM 树通常写得更快:

1:当写入到来时,将其添加到内存中平衡树中,称为内存中平衡树,称为内存表。

2:当内存表变大时,它被刷新到磁盘上。

为了更好地理解这个数据结构,请查看这个视频和这个答案。

最新更新