NoSQL
NoSQL解决大数据处理问题:
并行数据库:水平切分,分区查询
NoSQL数据库管理系统:非关系型模型,分布式,不支持ACID数据库设计范式
关系型数据库中的ACID:
Atomicity原子性,一个事物中所有操作都必须全部完成,要么全部不完成
Consistency一致性,事物在开始或结束时,数据库应该在一致状态
Isolation隔离性,事物将设定只有它自己操作数据库,彼此不知晓
Durability持久性:一旦事物完成,就不能返回
大数据分析处理:
MapReduce:映射成键值,分析在集合处理
CAP:任何分布式系统只能满足两种
Consistency:一致性
Availability:可用性
Partition tolerance:分区容错性
BASE:不同ACID模型,牺牲数据一致性,获得可用性或可靠性
Basically Available:基本可用性
Soft state:软状态 状态可以有一段时间不同步,异步
Eventually consistent:最终一致性,最终一致,不是实时一致
因果一致性
会话一致性
读 自己写一致性
单调读一致性
时间轴一致性
ACID对比BASE
ACID:强制一致性隔离性,采用悲观保守方法,难以变化
BASE:弱一致性,可用性优先,采用乐观的方法,适应变化,更简单,更快
数据一致性的实现技术:
NRW,2PC,Paxos,Vector Clock
NoSQL特点
简单数据模型(KEY,VALUE)结构
元数据和数据分离
弱一致性
高吞吐量
较高水平扩展能力
低端硬件群集
NoSQL缺点
功能太单一,没有统一查询模型
不支持ACID设计范式(对事物要求高的不要使用)
NewSQL
继承关系型数据库,NoSQL
比如:Clustrix,GenieDB,ScaleBase,NimbusDB,Drizzle
适用云环境都归类到NewSQL
元数据管理系统:DBaas
数据存储模型:
详键:http://www.nosql-database.org
列式存储模型:hadoop/Hbase,Hypertable
文档存储模型:mongoDB ElasticSearch
键值存储模型:redis,Berkeyley DB
图形数据模型:Noe4j,Sparksee
多维数据模型:ArangoDB,OrientDB
对象数据库:Versant,db4o
网格/云数据解决方法:GridGain
列式存储模型:
应用场景:在分布式文件系统之上支持随机读写分布式数据存储
典型产品:Hbase ,Hypertable,Cassandra
数据模型:以列为中心进行存储,将同一列数据存储在一起
优点:快速查询,高可扩展性强,易于实现分布式扩展
文档存储模型:
应用场景:非强事务需求的web应用
典型产品:mongoDB,ElasticSearch(通常存储日志),CouchDB,CounchDB Server
数据模型:键值模型,存储为文档
优点:数据模型无须实现定义
键值存储模型:
应用场景:用于内容缓冲,用于大量并行数据访问的高负载场景
典型产品:Redis,dynamoDB,Riakn,Memcachedb(不是memcached)
数据模型:基于哈希表实现的key-value模型
优点:查询/写入迅速,数据没有结构
图式存储模型:
应用场景:社交网络,推荐系统,管系统等,如位置定位
典型产品:Neo4j,infinite graph
数据模型:图式结构
优点:适用图式计算场景