为什么NoSQL数据库服务器可以比一些关系数据库实现更好的写吞吐量?

为什么NoSQL数据库服务器可以比一些关系数据库实现更好的写吞吐量?,sql,mongodb,nosql,relational-database,rdbms,Sql,Mongodb,Nosql,Relational Database,Rdbms,这怎么可能?NoSQL有什么比某些RDBMS更高的写入吞吐量?这取决于可伸缩性吗 一些noSQL系统基本上只是持久的键/值存储(如伏地魔项目)。如果您的查询属于“查找给定键的值”类型,那么这样的系统将(或至少应该)比RDBMS更快,因为它只需要拥有更小的功能集 noSQL系统的另一种流行类型是文档数据库(如CouchDB)。这些数据库没有预定义的数据结构。它们的速度优势在很大程度上依赖于非规范化和创建一个数据布局,该布局根据您将在其上运行的查询进行定制。例如,对于博客,您可以将博客文章及其评论保

这怎么可能?NoSQL有什么比某些RDBMS更高的写入吞吐量?这取决于可伸缩性吗

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

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

NoSQL解决方案有很多,每一种都有自己的优缺点,因此必须对以下内容持保留态度

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

当然,在SQL中也可以这样做,当需要性能时,反规范化是一种常见的做法。只是许多NoSQL解决方案从一开始就被设计为始终以这种方式使用。然后,您会得到通常的折衷:例如,在上面的示例中添加注释会比较慢,因为您必须用它保存整个文档。一旦实现了非规范化,就必须注意在应用程序中保持数据完整性

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

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

此外,还解释了以下方面: RDBMS->数据完整性是一个关键特性(它可以减慢某些操作,如写入) NoSQL->速度和水平可伸缩性是必不可少的(因此使用这种imperatve时速度非常高)

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


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

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

NoSQL解决方案有很多,每一种都有自己的优缺点,因此必须对以下内容持保留态度

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

当然,在SQL中也可以这样做,当需要性能时,反规范化是一种常见的做法。只是许多NoSQL解决方案从一开始就被设计为始终以这种方式使用。然后,您会得到通常的折衷:例如,在上面的示例中添加注释会比较慢,因为您必须用它保存整个文档。一旦实现了非规范化,就必须注意在应用程序中保持数据完整性

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

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

此外,还解释了以下方面: RDBMS->数据完整性是一个关键特性(它可以减慢某些操作,如写入) NoSQL->速度和水平可伸缩性是必不可少的(因此使用这种imperatve时速度非常高)

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

希望是有用的