主要类别:
键值数据存储模式
文档数据存储模式
列族数据存储模式
图数据存储模式
其他数据存储模式
尤其键值存储模式是Redis 数据库的基础;文档存储模式是MongoDB数据库的基础。
数据库的主要功能是存储和处理数据,由此NOSQL也不列外
一、键值数据存储模式(Redis)
键值数据库(Key Value Database)是一类轻量级结合内存处理为主的NOSQL数据库。说它轻量级,指的是它的存储数据结构特别简单,数据库系统本身规模也比较小;说它以内存为主的运行处理,设计目的是为了更快地实现对大数据的处理。(数据存储结构最简单的一类NOSQL数据库)
(1)键(Key)
键起唯一索引值的作用,确保一个键值结构里数据记录的唯一性,同时也起信息记录的作用。
(2)值(Value)
值是对应键相关的数据,通过键来获取,可以存放任何类型的数据。
键值数据库的值由BLOB(Binary Large object,二进制大对象)进行存储,这意味着任何类型的数据都可以保存,键值数据库无预先定义数据类型的要求。而预先定义存储数据类型在传统关系数据库里是强制要求的。
(3)键值对(Key-Value Pair)
键和值的组合就形成了键值对,它们之间的关系是一对一映射的关系。
(4)命名空间Namespace桶(Bucket)
命名空间是由键值对所构成的集合。通常由一类键值对数据构成一个集合
NOSQL的键值数据库有了数据存储结构及对应的数据,就需要考虑对数据的基本读、写、删除操作要求。这跟传统数据库里的Select、Insert、Update、Delete是一个道理。但是NOSQL数据库没有SQL概念,它们对数据操作的实现是通过Put、Get和Delete实现的。
1、键值存储设计优点:
①简单
②快速
③高效计算
2、缺点:
①对值进行多值查找功能很弱
②缺少约束,意味着更容易出错
③不容易建立复杂关系
二、文档数据存储模式(MongoDB)
文档数据库与传统关系数据库一样,主流的也是建立在对磁盘的读写的基础上,对数据进行各种操作。
文档数据库的设计思路是针对传统数据库低效的操作性能,首先考虑的是读写性能,为此需要去掉各种传统数据库规则的约束。
TRDB与文档数据存储模式的区别:
TRDB:设计目标,追求ACID严格约束
1.严格的表结构预定义。
2.严格的写入检查。
3.严格的多表关系约束
文档数据存储模式:设计目标,追求大数据环境下,数据操作性能的最大化
1.无需数据存储结构预定义
2.数据库无严格是写入检查
3.多存储结构无严格的关系约束
注:一条文档记录,内含若干个成对的键值对。该数据格式叫JSON
文档数据库存储结构基本要素:
注:在MongoDB数据库里将得到完整体现
基本数据操作方式:
注:非常类似SQL语句,非常简单
1、文档存储的优点
①简单
②相对高效
③文档格式处理
④查询功能强大
⑤分布式处理
2、文档存储的缺点
①缺少约束
②数据出现冗余
③相对低效
三、列族数据库(Hbase)
列族数据库为了解决大数据存储问题,引入了分布式处理技术,为了提高数据操作效率,针对传统数据库的弱点,采用了去规则去约束化的思路。
1、列族数据库实现基本原理
2、列族数据库存储结构基本要素
命名空间(NameSpace)
命名空间是列族数据库的顶级数据库结构。相当于传统关系型数据库的表名。
行键(Row Key)
行键用来唯一确定列族数据库中不同行数据区别的标识符。
列族(Column Family)
由若干个列所构成的一个集合叫列族。
列(Column)
列是列族数据库里用来存放单个数值的数据结构。
列的每个值(Value)都附带时间戳(Time Stamp)。通过时间戳来区分值的不同版本。
四、图数据存储模式
这里的”图”是指数学里的”图论(Graph Theory)”
节点(Node)代表一个个事物实体,如上述的各个城市名称;
边(Edge)就是连接各个城市之间的铁路,表明实体之间的关系;
所谓无向,指铁路是可以双向通行的,不受方向限制,相关的边就是无向边(Undirected Edge);相对无向边,就是有向边(Directed Edge),
节点、边,都可以附加属性(Attribute)。
图存储是一个包含若干个节点、节点之间存在边关系,节点和边可以附加相关属性的结合系统,简称图(Graph)。