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”系统现在提供多文档甚至分布式事务,因此事务支持差异很大,应针对具体系统进行检查。