资源描述
Hbase和MongoDB,HBASE AND MONGODB,目录,1,非关系型数据库,为什么选用NoSQL?,01,02,03,04,05,海量数据的查询,关系型数据库性能很低,关系型数据库难以横向扩展,能够处理,存储的数据规模有限,关系型数据库表结构修改困难难以适应频繁变更的业务需求,关系型数据库难以应对高并发的读写请求,关系型数据库授权和扩展成本高,非关系型数据库分类,01,键值型数据库,02,文档型数据库,03,列存储数据库,04,图数据库,非关系型数据库设计原则,在分布式系统中的所有数据备份,在同一时刻是否同样的值。 (所有节点访问同一份最新的数据副本) ),一致性(Consistency),在集群中一部分节点故障后,集群整体还能响应客户端的读写请求。(对数据更新具备高可用性),可用性(Availability),分区容错性,是指由于节点之间的网络问题,即使一些消息延迟,整个系统能继续提供服务(提供一致性或者可用性)。,分区容忍性(Partition tolerance),CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance),这三个要素最多只能同时实现两点,不可能三者兼顾。,CAP原则,为什么三者不能同时满足?,在分区存在的时间内 如果想要保证一致性(C), 那么必然会出现在某一段时间内,系统是不可用的,即不满足A(可用性) 如果想要保证即使在分区时间内,系统可用,那么久不等保证分布式系统所有数据备份,同一时刻的值相同, 即不满足C(一致性),非关系型数据库,非关系型数据库,单一的数据中心,不涉及到分区, 所以满足C(一致性) A(可用性)即可,误区 : 3选2?,CAP理论并不是说简单的三者选择两者。首先,虽然只要是分布式系统,就可能存在分区,但分区出现的概率是很小的(否则就需要去优化网络或者硬件),CAP在大多数时候允许完美的C和A;只有在分区存在的时间段内,才需要在C与A之间权衡。其次,一致性和可用性都是一个度的问题,不是0或者1的问题,可用性可以在0%到100%之间连续变化,一致性分为很多级别。因此,当代CAP实践的目标应该是针对具体的应用,在合理范围内最大化数据一致性和可用性的效力。另外 :分区是一个相对的概念,当超过了预定的通信时限,即系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择,2,Hbase与MongoDB对比,对比维度,数据模型对比,系统架构对比,实际操作对比,数据模型对比,01,02,Hbase Row,系统架构对比-HBase,系统架构对比-MongoDB,实际操作对比环境搭建,HBase,搭建一个分布式Hbase集群,你至少需要做如下工作:1. 安装Java2. 配置SSH免密登录3. 配置NTP时钟同步 4. 安装匹配版本的Hadoop5. 安装匹配版本的Zookeeper6. 安装HBase,总结 : 可以说是简单和炼狱级别的对比,尤其对于大数据的新手来说,一个Hadoop集群的搭建就足够让人崩溃 很多想学习Hbase的人在搭建环境的第一关就已经缴械投降了,实际操作对比可视化工具,HBase,Hbase目前没有很成熟的可视化工具, 目前受到广泛认可的是squirrel, 通过大数据组件Phoenix,对HBase表格进行映射,将Hbase复杂的shell语法转换成类似sql的语句,以减少使用者的学习成本但该工具配置相对复杂,并且对HBase的操作有很多限制, 使用体验一般,总结 : 毫无疑问,这一轮又是MongoDB完胜,一款优秀的可视化工具可以极大限度的减少不必要的操作开销,提升使用者的工作效率,Robomongo, Studio 3T都是很成熟的 可视化工具,无论是界面,流畅度,还是 软件功能,都很不错,使用体验很棒,实际操作对比使用语法,Hbase,总结 : MongoDB语法要求相对来说更加宽松,而且语法本身更容易理解 Hbase语法要抽象很多, 但是Hbase可以在脚本里直接使用部分java api来进行操作 总体上 MongoDB这回合小胜一筹,建表和插入数据语法,建表和插入数据语法,Shell脚本直接使用java API,性能对比 查询,总结 : 无论是灵活性, 还是适用范围,Mongo在查询方面做的明显更好, 但在某些特殊场景下,HBase会是一个很不错的选择,性能对比写入,总结 : 写入性能HBase吊打Mongo,适用场景对比-HBase,适用场景对比-MongoDB,感谢聆听,
展开阅读全文