NoSQL-列式模型
数据库排名:https://db-engines.com/en/ranking
实例 | 应用场景 | 数据模型 | 优点 | 缺点 | |
---|---|---|---|---|---|
k-v模型 | Radis;Memcached | 内容缓存,主要用于处理大数据的高访问负载 | key-value键值对 | ||
列式模型 | Hbase(Hadoop Database);BigTable(Google);Cassandra(Twitter) | 分布式文件系统 | 以列存储,将同一列数据存储在一起 | ||
文档模型 | MongoDB;CouchDB | Web应用 | JSON格式的文档 | ||
图形模型 | Neo4j | 社交网络 | 节点+边 |
HBase
https://www.cnblogs.com/JamesXiao/p/6202372.html
https://www.cnblogs.com/nexiyi/p/hbase_shell.html
https://www.cnblogs.com/steven-note/p/7209398.html
1)特点
分布式面向列的数据库
横向扩展性好
随机读写
容错能力
伸缩性好
稀疏性
2)组成
HMaster服务器群:负责Region的分配及数据库的创建和删除等操作。
HRegioServer服务器群:负责数据的读写服务 。
ZooKeeper:作为HDFS的一部分 ,负责维护服务器集群的状态(某台服务器是否在线,服务器之间数据的同步操作及master的选举等)。
Client访问HBase上的数据并不需要HMaster参与,寻址访问ZooKeeper和HRegionServer,数据读写访问HRegionServer,
HMaster仅仅维护Table和Region的元数据信息,Table的元数据信息保存在ZooKeeper上,负载很低。HRegionServer存取一个子表时,会创建一个HRegion对象,然后对表的每个列簇创建一个Store对象,每个Store都会有一个MemStore和0或多个StoreFile与之对应,每个StoreFile都会对应一个HFile,HFile就是实际的存储文件。因此,一个HRegion有多少列簇就有多少个Store。
Table在行的方向上分割为多个HRegion,每个HRegion分散在不同的RegionServer中 ,但同一个HRegion是不会拆分到多个HRegionServer上的。HRegion按大小分割,每个表一般只有一个HRegion,随着数据不断插入表,HRegion不断增大,当HRegion的某个列簇达到一个阀值(默认256M)时就会分成两个新的HRegion。这个过程由HRegionServer管理,而HRegion的分配由HMaster管理。
每个HRegion由多个Store构成,每个Store由一个MemStore和0或多个的StoreFile组成,每个Store保存一个列簇
MemStore 是放在内存里的,保存修改的数据即keyValues。当MemStore的大小达到一个阀值(默认64MB)时,MemStore会被Flush到文件,即生成一个快照。
MemStore内存中的数据写到文件后就是StoreFile ,StoreFile底层是以HFile的格式保存。
3)模型
Region数据模型
定位数据:行键 ;
行键+时间戳 ;
行键+列族列 ;
Region物理存储模型