NoSQL综述

NoSQL

概述

一、什么是NoSQL

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

二、 为什么使用NoSQL

  • 互联网的发展,传统关系型数据库存在瓶颈
    高并发读写
    高存储量
    高可用性
    高扩展性
    低成本

三、NoSQL和关系型数据库对比
主要有以下一些区别
在这里插入图片描述

四、NoSQL的特点

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

NoSQL基本概念

  • 1、三大基石
    CAP、BASE、 最终一致性
  • 2、Indexing(索引)、Query(查询)
  • 3、MapReduce
  • 4、Sharding

三大基石

CAP理论

  • 1、数据库最多支持3个中的2个
    a)Consistency (一致性)
    b)Availability(可用性)
    c)Partition Tolerance(分区容错性)
  • 2、NoSQL不保证"ACID"
  • 3、提供"最终一致性"
    在这里插入图片描述

BASE

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

最终一致性

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

索引和查询

Indexing(索引)

  • 1、大多数NoSQL是按key进行索引
  • 2、部分NoSQL允许二级索引
  • 3、HBase使用HDFS,append-only
    a)批处理写入Logged
    b)重新创建并排序文件

Query(查询)

  • 1、没有专门的查询语言,通常使用脚本语言查询
  • 2、有些开始支持SQL查询
  • 3、有些可以使用MapReduce代码查询

MapReduce、Sharding

MapReduce

  • 1、不是Hadoop的MapReduce,概念相关
  • 2、可进行数据的处理查询

Sharding(分片)

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

NoSQL分类

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

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

  • 1、通常用hash table来实现
    可以通过key来添加、查询或者删除数据
  • 2、常应用于内容缓存
    储存用户信息,比如会话、配置文件、参数等等
  • 3、不适用场景
    需要事务支持场景

列存储数据库(Wide Column Store)

  • 1、将数据储存在列簇
    a)一个列簇存储经常被一起查询的相关数据
    b)每一个列簇包含kv键值对的“列”,可以随行变化
  • 2、应用于分布式数据存储与管理
  • 3、优点
    a)查找速度快
    b)可扩展性强
    c)容易进行分布式扩展

文档型数据库(Document Store)

  • 1、将数据以文档的形式存储
    a)文档通常为JSON对象,也可以使用XML
    b)每个文档都有属性和值
    c)值可以是简单数据类型或复杂数据类型
    数组、到其他数据库中的文档的链接或子文档
  • 2、应用
    存储、索引并管理面向文档的数据或类似的半结构化数据
  • 3、优点
    a)数据结构要求不严格,表结构可变
    b)可以使用它储存不同的信息

图数据库(Graph Databases)

  • 1、将数据以图的方式储存
  • 2、适用的场景
    在一些关系性强的数据中
    推荐引擎

NoSQL和BI、大数据的关系

  • 1、BI(Business Intelligence):商务智能
    a)它是一套完整的解决方案
    b)BI应用涉及模型,模型依赖于模式
    c)BI主要支持标准SQL,对NoSQL支持弱于关系型数据库
  • 2、NoSQL和大数据相关性较高 通常大数据场景采用列存储数据库 如:HBase和Hadoop