key_value分布式存储系统查询速度快\存放数据量大\支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询.
数据存储形式为
consistency(一致性): 即数据一致性,简单的说,就是数据复制到了N台机器, 如果有更新,则N台机器上的数据同时更新;
availability(可用性): 好的响应性能,主要指的是速度;
partition tolerance(分区容错性) : 好的分区方法, 节点的可扩展性.
任何分布式系统都不能三者兼顾.
(1)Dynmo是亚马逊的key-value模式的存储平台,可用性和扩展性都很好,性能不错.
(2) 数据分区: 假设数据的key的范围是0-2的64次方,然后将key的范围分成k份, 然后将这k份均匀分配给s个节点,则每个节点负责的分区数就是k/s.
(1) bigtable是google设计的分布式数据存储系统,用来处理海量数据的一种非关系型的数据库.
(2) bigtable适合大规模海量数据,PB级数据;分布式/并发数据处理,效率高;适合于读操作,不适合写操作;适用于廉价设备;不适合传统关系数据库.
(3)bigtable是一个键值映射, 其键有三维,分别是行键/列键/时间戳; 可以用(row:string,column:string,timestamp:int)->string来表示一条键值对记录
(4) bigtable数据库的架构由主服务器和分服务器构成,将数据库看成是一张大表,可将其划分为许多基本的小表,小表称为tablet,是bigtable中最小的处理单位.主服务器负责将tablet分配到tablet服务器,检测新增和过期的tablet服务器,平衡tablet服务器之间的负载,数据模式改变等等操作.tablet服务器负责处理数据的读写,并在tablet规模过大时进行拆分.
(1) cassandra是一套开源分布式NoSQL数据库系统.是一个混合型的非关系的数据库;
(2) cassandra是由一堆数据库节点共同构成的一个分布式网络服务,对cassandra的一个写操作会被复制到其他节点上去,对cassandra的读操作,会被路由到某个节点上面去读取;扩展性比较强,只需要在集群中添加节点就行.
(1) zookeeper是一个分布式的,开放源码的分布式应用程序i协调服务,是google的chubby一个开源的实现,是hadoop和hbase的重要组件.
(2)zookeeper是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护/域名服务/分布式同步等;
(3) zookeeper的目标就是封装好复杂易出错的关键服务,将简单一用的接口和性能高效/功能稳定的系统提供给用户.
(4) zookeeper的基本运转流程: