赞
踩
数据库高并发读写需求
海量数据的高效存储和处理
数据库高扩展性
编写数据库应用程序
分区
异步复制
BASE
CAP
NoSQL的共同特征
(1)不用预定义模式。
(2)无共享架构。
(3)弹性可扩展。
(4)分区。(5)异步复制。(6)BASE
列存储
文档存储
键值对存储
图形存储
列存储
文档存储
键值对存储
图形存储
列存储
文档存储
键值对存储
图形存储
高速产生
规模巨大
高密集价值数据
多样性
一致性
可用性
分布式
分区容忍性
NoSQL理论基础
CAP理论
对应一致性Consistency:
在分布式计算中,在执行某项数据的修改操作之后,所有节点在同一时间具有相同的数据,系统具有一致性。
可用性Availability:
在每一个操作之后,无论成功或失败,系统都要在一定时间内返回结果,保证每个请求不管成功或者失败都有响应。
分区容忍性Partition Tolerance:
系统中任意信息的丢失或失败不会影响系统的继续运行。
完整性
基本可用
最终一致性
软状态
BASE模型
Basically Available
--基本可用。
系统能够基本运行,一直提供服务。
Soft-state
--软状态/柔性事务。
"Soft state" 可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的;
系统不要求一直保持强一致状态。
Eventual Consistency
--最终一致性。
系统在某个时刻达到最终一致性,并非时时保持强一致。
最终一致性
(1)强一致性:
要求无论更新操作是在哪一个副本执行,之后所有的读操作都要能获得最新的数据。
(2)弱一致性:
用户读到某一操作对系统特定数据的更新需要一段时间,称这段时间为“不一致性窗口”。
(3)最终一致性:
弱一致性的一种特例,保证用户最终能够读取到某操作对系统特定数据
1:1
1:N
N:1
M:N
列存储数据库HBASE
简介
数据库中的数据模型给出了数据的表达方式,二维表是关系模型的数据结构,数据和数据之间的关系都在二维表中表示。
数据库以行、列的二维表的形式表示数据,以一维字符串的方式存储。
HBASE数据库
HBase全称是Hadoop Database, 是一个构建在Apache Hadoop上的列式数据库
HBase是一个开源的非关系型分布式数据库(NoSQL),实现的编程语言为 Java
local
admin
config
system
文档型数据库MongoDB
简介
文档是处理信息的基本单位。文档可以很长、很复杂、可以无结构。
一个文档对包含的数据类型和内容进行“自我描述”。XML文档、HTML文档和JSON文档。
每个文档的ID就是它唯一的键,是唯一的, 检索排序的ID性能好。ID在一个数据库“集合”中
MongoDB数据库
MongoDB 是基于分布式文件存储的开源数据库系统。将数据存储为一个文档,数据结构由键值对组成,字段值可以包含其他文档,数组及文档数组。
基本的概念是文档、集合、数据库。
文档是MongoDB中数据的基本单元
集合可以被看作没有模式的表
每个实例都可容纳多个独立数据库,每个数据库都有自己的集合和权限。
在Neo4J集群中,数据的写入是通过主服务器来完成的,数据的读取可以通过集群中的任意一个Neo4J实例来完成。v
图形数据库Neo4J
简介
图就是二元关系。利用一系列由线(称为边)或箭头(称为弧)连接的点(称为节点)。有向图:节点集合,弧集合--节点的有序对。
图的实现--两种。一种叫作邻接表,大致上与二元关系的实现方法类似。第二种叫作邻接矩阵,是一种表示二元关系的新方法,图的应用包括最短路径、可达集、各种搜索算法等。这些都给图的应用提供理论基础。
Neo4J图数据库
Neo4j是开源的用Java实现图数据库,有两种运行方式,一种是服务的方式,对外提供REST接口;另外一种是嵌入式模式,数据以文件的形式存放在本地,直接对本地文件进行操作。
每个实体都有ID(Identity)唯一标识,每个节点由标签(Lable)分组,每个关系都有一个唯一的类型,属性图模型的基本概念有:
实体(Entity)是指节点(Node)和关系(Relationship);
每个实体都有零个、一个或多个属性,一个实体的属性键是唯一的;每个节点都有零个、一个或多个标签,属于一个或多个分组;
每个关系都只有一个类型,用于连接两个节点;
路径(Path)是指由起始节点和终止节点之间的实体(节点和关系)构成的有序组合;
标记(Token)是非空的字符串,用于标识标签(Lable),关系类型(Relationship Type),或属性键(Property Key);
标签:用于标记节点的分组,多个节点可以有相同的标签,一个节点可以有多个Lable,Lable用于对节点进行分组;
关系类型:用于标记关系的类型,多个关系可以有相同的关系类型。
CAP是在分布式环境下设计和部署系统时的3个核心需求。v
CAP理论
对应一致性Consistency:
在分布式计算中,在执行某项数据的修改操作之后,所有节点在同一时间具有相同的数据,系统具有一致性。
可用性Availability:
在每一个操作之后,无论成功或失败,系统都要在一定时间内返回结果,保证每个请求不管成功或者失败都有响应。
分区容忍性Partition Tolerance:
系统中任意信息的丢失或失败不会影响系统的继续运行。
Redis复制主要包括RDB复制和AOF复制。v
键值对数据库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)
HBASE中的区域和表的关系是随着数据的增加动态变化的。v
HBase自动把表水平划分为 区域 (Region),每个区域都是有若干连续行构成的,一个区域由 所属的表、起始行、终止行(不包括这行) 三个要素来表示。
MongoDB的分片是将一个集合的数据分别存储在不同的节点上减轻单机压力。x
MongoDB分片的基本思想就是将集合切分成小块。
这些块分散到若干片里面,每个片只负责总数据的一部分。
应用程序不必知道哪片对应哪些数据,甚至不需要知道数据已经被拆分了。
所以在分片之前要运行一个路由进程,该进程名为mongos。
这个路由器知道所有数据的存放位置,所以应用可以连接它来正常发送请求。
对应用来说,它仅知道连接了一个普通的mongod。
路由器知道数据和片的对应关系,能够转发请求到正确的片上。
如果请求有了回应,路由器将其收集起来回送给应用。
Neo4j的数据物理存储主要分为节点、关系、节点或关系上属性这三类数据存储。x
NoSQL数据库分类的依据是对数据的操作方式。x
Redis数据库的底层实现是字典,对于数据库的增删改查操作都是通过对字典进行操作来实现的。v
HBASE中表定义中要说明行健和表中包含的列族,列不用定义。v
MongoDB复杂文档模型设计可以使用内嵌和引用的方法来解决。v
1.易于维护:都是使用表结构,格式一致;
2.使用方便: SQL语言易用,可用于复杂查询;
3复杂操作:支持SQL可用于一个表以及多个表之问非常复杂的查询。缺点: 1)读写性能比较差,尤其是海量数据的高效率读写; 2)固定的表结构,灵活度稍欠;3)高并发读写需求,传统关系型数据库来说,硬盘是一个很大的瓶颈。
4.键值数据库复述,Memcached,Riak 内容缓存,如会话,配置文件参数等;频繁读写,拥有简单数据模型的应用<heyvalue >键值对,通过散列表来实现扩展性好,灵活性好,大量操作时性能高,数据无结构化,通常只被当做宇符串或者二进制数据,只能通过键来查询值
5,列族数据库Bigtable HBase,卡桑德拉分布式数据存储与管理以列族式存储,将同一列数据存在一起可扩展性强,查找速度快,复杂性低功能局限不支持事务的强一致性。
6.文档数据库MongoDB,CouchDBweb应用,存储面向文档或类似半结构化的数据<kevvaluve>价值是JSON结构的文档数据结构灵活,可以根据价值构建索引,缺乏统一杳询语法。
7. 图形数据库 Neo4i.InfoGrid社交网络,推荐系统,专注构建关系图谱图结构支持复杂的图形算法复杂性高,只能支持一-定的数据规模。
8.MonaoDB提出的是文档, 集合的概念,使用BSON (JSON 作为其数据模型结构,其结构是面向对象的而不是二维表存储个用户在MongoDB中是这样子的。
9.游戏、物流、电商、内容管理、社交、物联网、视频直插等。
10.采用原生图存储和处理数据;提供最优化的关系遍历执行效率,比关系数据库的表连接快
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。