ScholarGate
助手

NoSQL数据存储

NoSQL数据存储是非关系型数据库——包括键值、文档、宽列和图数据库——它们采用灵活的数据模型和分布式策略,以实现水平扩展和高可用性,但会牺牲一些关系型数据库的保证。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

NoSQL数据存储是一种偏离关系模型的数据库,它将数据组织为键值对、文档、宽稀疏列或图,并且通常通过复制和放宽一致性将其分布在集群中,以实现可伸缩性和可用性。

Scope

本主题涵盖NoSQL系统的主要类别及其数据模型:用于简单查找的键值存储、用于嵌套记录的文档存储、用于稀疏大型表的宽列存储,以及用于高度互联数据的图数据库。它讨论了这些系统常见的架构选择——分片、复制和可调一致性——以及每种模型适合的访问模式。它不包括广泛的一致性理论(CAP定理和一致性模型)和处理框架,这些是相关但独立的主题。

Core questions

  • 每种NoSQL类别(键值、文档、宽列、图)提供什么数据模型?
  • 哪些访问模式和工作负载适合每种类别?
  • NoSQL存储如何分片和复制数据以实现扩展性和可用性?
  • 它们放宽了哪些关系型特性(连接、事务、模式),以及为什么?
  • 可调一致性设置如何让应用程序平衡延迟和数据新鲜度?

Key concepts

  • 键值存储
  • 文档存储
  • 宽列存储
  • 图数据库
  • 分片和复制
  • 可调一致性
  • 模式灵活性
  • 非规范化访问模式

Key theories

键值和宽列模型
键值存储将不透明的键映射到值,以实现简单、快速的查找,而宽列存储将数据组织成具有灵活、稀疏列族的行;两者都以Dynamo和Bigtable为代表,通过分片和复制扩展到大型集群。
文档和图模型
文档存储保存自描述的嵌套记录(通常是JSON),并支持对其结构进行查询,而图数据库将实体和关系建模为节点和边,针对高度互联数据的遍历进行了优化。
为扩展性放宽保证
为了实现水平扩展和保持可用性,许多NoSQL存储放宽了模式、放弃了多行事务和连接,并提供了可调或最终一致性,将部分数据完整性责任转移给应用程序。

Clinical relevance

NoSQL存储是互联网服务广泛使用的构建模块:键值和宽列存储以大规模支持会话状态、目录和时间序列数据;文档存储适用于灵活的应用程序数据;图数据库为推荐和欺诈检测系统提供支持,因此了解其模型对于数据工程至关重要。

History

NoSQL运动源于互联网公司需要超越单节点关系型数据库的扩展需求。谷歌的Bigtable(2006/2008)引入了宽列模型,亚马逊的Dynamo(2007)引入了高可用、最终一致的键值模型;这些有影响力的设计在2000年代末和2010年代催生了新一代开源键值、文档、宽列和图数据库。

Key figures

  • Werner Vogels
  • Jeffrey Dean
  • Sanjay Ghemawat

Related topics

Seminal works

  • decandia2007
  • chang2008

Frequently asked questions

我如何在键值、文档、宽列和图存储之间进行选择?
根据访问模式选择模型:键值存储适用于通过已知键进行简单查找;文档存储适用于通过其字段查询的自包含嵌套记录;宽列存储适用于非常大、稀疏且具有可预测行键访问的表;图存储适用于以关系和遍历为主的数据,例如社交网络或推荐系统。
NoSQL存储是否支持事务?
历史上,许多NoSQL存储只提供单键原子操作,没有多记录事务,以换取可伸缩性。这种情况已经改变:许多现代NoSQL和“NewSQL”系统现在提供多文档甚至分布式事务,因此事务支持差异很大,应针对具体系统进行检查。

Methods for this concept

Related concepts