<Zhuuu_ZZ>NoSQL

一 什么是NoSQL

  • NoSQL:not only SQL,非关系型数据库
  • NoSQL是一个通用术语
    • 指不遵循传统RDBMS模型的数据库
    • 数据是非关系的,且不使用SQL作为主要查询语言
    • 解决数据库的可伸缩性和可用性问题
    • 不针对原子性(字段可拆)或一致性问题

二 与传统数据库对比

  • 优势
    • 高并发读写
    • 高存储量
    • 高可用性
    • 高扩展性
    • 低成本
  • 区别
    <Zhuuu_ZZ>NoSQL

三 三大基石

1 CAP理论

<Zhuuu_ZZ>NoSQL

  • 数据库最多支持3个中的2个
    • Consistency(一致性)
    • Availability(可用性)
    • Partition Tolerance(分区容错性)
  • NoSQL不保证“ACID”
  • 提供“最终一致性

2 BASE

  • Basically Availble(基本可用)
    • 保证核心可用
  • Soft-state(软状态)
    • 状态可以有一段时间不同步
  • Eventual Consistency(最终一致性)
    • 系统经过一定时间后,数据最终能够达到一致的状态
  • 核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性

3 最终一致性

  • 最终结果保持一致性,而不是时时一致
  • 如账户余额,库存量等数据需强一致性
  • 如catalog等信息不需要强一致性
    • Causal consistency(因果一致性)
    • Read-your-writes consistency
    • Session consistency

四 NoSQL分类

<Zhuuu_ZZ>NoSQL

1 键值存储数据库(Key-Value)

<Zhuuu_ZZ>NoSQL

2 列存储数据库(Wide Column Store)

<Zhuuu_ZZ>NoSQL

3 文档型数据库(Document Store)

<Zhuuu_ZZ>NoSQL

4 图数据库(Graph Databases)

<Zhuuu_ZZ>NoSQL