数据库第七章--NoSQL数据库

数据库第七章--NoSQL数据库

数据库第七章--NoSQL数据库
数据库第七章--NoSQL数据库
  • NoSQL数据库概述
    • 关系数据库的局限
      • 关系数据库特点是数据结构化、数据的共享性高、冗余度低、易扩充、数据独立性高,数据由数据库管理系统统一管理和控制等。
      •   优点是:容易理解,使用方便,易于维护,支持复杂查询。
      •   缺点是:不擅长大量数据的写入处理表结构变更、字段不固定时的应用和对简单查询需要快速返回结果的处理的应用。
    • NoSQL理论基础
      • CAP理论
        • 对应一致性Consistency:在分布式计算中,在执行某项数据的修改操作之后,所有节点在同一时间具有相同的数据,系统具有一致性。
        • 可用性Availability:在每一个操作之后,无论成功或失败,系统都要在一定时间内返回结果,保证每个请求不管成功或者失败都有响应。
        • 分区容忍性Partition Tolerance:系统中任意信息的丢失或失败不会影响系统的继续运行。
      • BASE模型
        • Basically Available --基本可用。系统能够基本运行,一直提供服务。
        • Soft-state--软状态/柔性事务。"Soft state" 可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的;系统不要求一直保持强一致状态。
        • Eventual Consistency --最终一致性。系统在某个时刻达到最终一致性,并非时时保持强一致。
      • 最终一致性
        • (1)强一致性:要求无论更新操作是在哪一个副本执行,之后所有的读操作都要能获得最新的数据。
        • (2)弱一致性:用户读到某一操作对系统特定数据的更新需要一段时间,称这段时间为“不一致性窗口”。
        • (3)最终一致性:弱一致性的一种特例,保证用户最终能够读取到某操作对系统特定数据的更新
    • NoSQL基本概念
      • NoSQL含义
        • NoSQL是Not Only SQL的缩写,意即“不仅仅是SQL”,即对关系型SQL数据库系统的补充。
        • NoSQL并不单指一个产品或一种技术,它代表一族产品,以及一系列不同的、有时相互关联的、有关数据存储及处理的概念。
      • NoSQL的共同特征
        • (1)不用预定义模式。
        • (2)无共享架构。
        • (3)弹性可扩展。
        • (4)分区。
        • (5)异步复制。
        • (6)BASE。
      • NoSQL采用的技术
        • (1)简单数据类型:模型中每个记录拥有唯一的键,系统只需支持单记录级别的原子性,不支持外键和跨记录的关联
        • (2)元数据和应用数据的分离
        • (3)弱一致性:系统通过复制应用数据来达到一致性,减少同步开销,用最终一致性和时间一致性来满足用户对数据一致性的要求。
      • NoSQL的数据库分类
        • (1)列存储(Column Family)方式:将同一列的数据存储在一起,可以存储结构化和半结构化数据。
        • (2)键值对(Key-Value)存储方式:存储的数据是有键(key)和值(value)两部分组成,通过key快速查询到其value,value的格式可以根据具体应用来确定。
        • (3)文档(Document)存储方式:存储的内容是文档型的,可以用格式化文件(类似json、XML等)的格式存储。
        • (4)图形(Graph)存储方式:数据以有向加权图方式进行存储。
      • NoSQL的整体框架
        • 接口层
        • 数据逻辑模型层
        • 数据分布层
        • 数据持久层
  • 列存储数据库HBASE
    • 简介
      • 数据库中的数据模型给出了数据的表达方式,二维表是关系模型的数据结构,数据和数据之间的关系都在二维表中表示。
      • 数据库以行、列的二维表的形式表示数据,以一维字符串的方式存储
    • HBASE数据库
      • HBase全称是Hadoop Database, 是一个构建在Apache Hadoop上的列式数据库
      • HBase是一个开源的非关系型分布式数据库(NoSQL),实现的编程语言为 Java
  • 键值对数据库Redis
    • 简介
      • KV:Key-Value(键值)存储模型是NoSQL中最基本的数据存储模型,KV类似于哈希表,在键和值之间建立映射关系,键值模型极大的简化了关系数据模型,具有高效灵活的特点。
      • 1.数据结构:键值模型(Key-Value模型),每行记录由主键和值两个部分组成,值可以是各种类型的数据。
      • 2.数据操作:Get( key )、Set( key, value )、Delete( key )等。
      • 3.数据完整性:针对单个键的操作才区别“一致性”。
    • Redis数据库
      • Redis 是Remote Dictionary Server的缩写,开源的KV数据库。
      • Redis支持Value类型:字符串类型(String)哈希表类型(Hash)链表类型(List)集合类型(Set)有序集合类型(order set)
  • 文档型数据库MongoDB
    • 简介
      • 文档是处理信息的基本单位。文档可以很长、很复杂、可以无结构。
      • 一个文档对包含的数据类型和内容进行“自我描述”。XML文档、HTML文档和JSON文档。
      • 每个文档的ID就是它唯一的键,是唯一的, 检索排序的ID性能好。ID在一个数据库“集合”中
    • MongoDB数据库
      • MongoDB 是基于分布式文件存储的开源数据库系统。将数据存储为一个文档,数据结构由键值对组成,字段值可以包含其他文档,数组及文档数组。
      • 基本的概念是文档、集合、数据库
      • 文档是MongoDB中数据的基本单元
      • 集合可以被看作没有模式的
      • 每个实例都可容纳多个独立数据库,每个数据库都有自己的集合和权限。
  • 图形数据库Neo4J
    • 简介
      • 图就是二元关系。利用一系列由线(称为边)或箭头(称为弧)连接的点(称为节点)。有向图:节点集合,弧集合--节点的有序对。
      • 图的实现--两种。一种叫作邻接表,大致上与二元关系的实现方法类似。第二种叫作邻接矩阵,是一种表示二元关系的新方法,图的应用包括最短路径、可达集、各种搜索算法等。这些都给图的应用提供理论基础。
    • Neo4J图数据库
      • Neo4j是开源的用Java实现图数据库,有两种运行方式,一种是服务的方式,对外提供REST接口;另外一种是嵌入式模式,数据以文件的形式存放在本地,直接对本地文件进行操作。
      • 每个实体都有ID(Identity)唯一标识,每个节点由标签(Lable)分组,每个关系都有一个唯一的类型,属性图模型的基本概念有:
      • 实体(Entity)是指节点(Node)和关系(Relationship);
      • 每个实体都有零个、一个或多个属性,一个实体的属性键是唯一的;每个节点都有零个、一个或多个标签,属于一个或多个分组;
      • 每个关系都只有一个类型,用于连接两个节点;
      • 路径(Path)是指由起始节点和终止节点之间的实体(节点和关系)构成的有序组合;
      • 标记(Token)是非空的字符串,用于标识标签(Lable),关系类型(Relationship Type),或属性键(Property Key);
      • 标签:用于标记节点的分组,多个节点可以有相同的标签,一个节点可以有多个Lable,Lable用于对节点进行分组;
      • 关系类型:用于标记关系的类型,多个关系可以有相同的关系类型。