NoSQL综述

一.什么是NoSQL

1.NoSQL: not only SQL ,非关系型数据库
2.NoSQL是一个通用术语

  • 指不遵循传统RDBMS模型的数据库
  • 数据是非关系的,且不适用SQL作为只要查询语言
  • 解决数据库的可伸缩性和可用性问题
  • 不针对原子性或一致性问题

二.为什么使用NoSQL

互联网的发展,传统关系型数据库存在瓶颈

  • 高并发读写
  • 高存储量
  • 高可用性
  • 高扩展性
  • 低成本

三.NoSQL和关系型数据库的对比

主要有以下一些区别
在这里插入图片描述

四.NoSQL的特点

  1. 最终一致性
  2. 应用程序增加了维护一致性和处理事务等职责
  3. 冗余数据存储
  4. NoSQL !=大数据
    • NoSQL产品是为了帮助解决大数据的存储问题
    • 大数据不仅仅包含数据存储问题
      Hadoop
      Kafka
      Spark等

五.NoSQL三大基石:CAP,BASE,最终一致性

1.CAP理论

  • 数据库最多支持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

六.索引和查询

  • Indexing(索引)

    大多数NoSQL是按key进行索引
    大部分NoSQL允许二级索引
    Hbase使用HDFS,append-only
    批处理写入logged
    重新创建并排序文件

  • Query(查询)

    没有专门的查询语言,永昌使用脚本语言查询
    有些开始支持SQL查询
    有些可以使用MapReduce代码查询

  • MapReduce

    不是hadoop的MapReduce.概念相关
    可进行数据的处理查询

  • Sharding

    一种分区模式
    可以复制分片
    有利于灾难恢复

七.NoSQL分类

主要分为以下四类
在这里插入图片描述

  • 键值存储数据库(Key-Value)
    在这里插入图片描述
  • 列存储数据库
    在这里插入图片描述
  • 文档存储数据库
    在这里插入图片描述
  • 图数据库
    在这里插入图片描述