NoSql 剖析 hbase,mongodb,redisITeye - 亚美娱乐

NoSql 剖析 hbase,mongodb,redisITeye

2019-01-12 01:02:03 | 作者: 半梅 | 标签: 数据,记载,支撑 | 浏览: 1924

hbase,mongodb,redis都归于nosql型存储计划。在实践的项目实践上看,他们的体系存储及处理的数量由大到小。 HBase依据列存储,供给 key, family:qualifier, timestamp 三项坐标方法定位数据,由于其qualifier的动态可扩展型(无需schema规划,可存储恣意多的 qualifier),特别适宜存储稀少表结构的数据(比方互联网网页类)。HBase不支撑二级索引,读取数据方面只支撑经过key或许key规模读 取,或许全表扫描。

 

 

MongoDb在类SQL句子操作方面现在比HBase具有更多一些优势,有二级索引,支撑比较于HBase更杂乱的调集查找等。BSON的数据结构使得处理文档型数据更为直接。MongoDb也支撑mapreduce,但由于HBase跟Hadoop的结合更为严密,Mongo在数据分片等mapreduce有必要的特点上不如HBase这么直接,需求额定处理。
HBase与Mongodb的读写功能正好相反,HBase写优于随机读,MongoDB好像写功能不如读功能。

Redis为内存型KV体系,处理的数据量要小于HBase与MongoDB

 

 

 

 

 

1.Mongodb bson文档型数据库,整个数据都存在磁盘中,hbase是列式数据库,集群布置时每个familycolumn保存在独自的hdfs文件中。 
2.Mongodb 主键是“_id”,主键上面能够不建索引,记载刺进的次序和寄存的次序相同,hbase的主键便是row key,能够是恣意字符串(最大长度是 64KB,实践运用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组。存储时,数据依照Row key的字典序(byte order)排序存储。规划key时,要充沛排序存储这个特性,将常常一同读取的行存储放到一同。 
字典序对int排序的结果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要坚持整形的天然序,行键有必要用0作左填充。 
3.Mongodb支撑二级索引,而hbase自身不支撑二级索引 
4.Mongodb支撑调集查找,正则查找,规模查找,支撑skip和limit等等,是最像mysql的nosql数据库,而hbase只支撑三种查找:经过单个row key拜访,经过row key的range,全表扫描 
5.mongodb的update是update-in-place,也便是原地更新,除非原地包容不下更新后的数据记载。而hbase的修正和增加都是 同一个指令:put,假如put传入的row key现已存在就更新原记载,实践上hbase内部也不是更新,它仅仅将这一份数据已不同的版别保存下来罢了,hbase默许的保存版别的前史数量是 3。 
6.mongodb的delete会将该行的数据标明为已删去,由于mongodb在删去记载时并不是真把记载从内存或文件中remove,而是将该删去 记载数据置空(写0或特别数字加以标识)一起将该记载地点地址放到一个list列表“开释列表”中,这样做的好便是便是假如有用户要履行刺进记载操作 时,mongodb会首先从该“开释列表”中获取size适宜的“已删去记载”地址回来,这种方法会提高功能(避免了malloc内存操作),一起 mongodb也运用了bucket size数组来界说多个巨细size不同的列表,用于即将删去的记载依据其size巨细放到适宜的“开释列表”中。Hbase的delete是先新建一个 tombstonemarkers,然后读的时分会和tombstonemarkers做merge,在 发作major compaction时delete的数据记载才会真真删去。 
7.mongodb和hbase都支撑mapreduce,不过mongodb的mapreduce支撑不行强壮,假如没有运用mongodb分片,mapreduce实践上不是并行履行的 
8.mongodb支撑shard分片,hbase依据row key主动负载均衡,这儿shard key和row key的选取尽量用非递加的字段,尽量用散布均衡的字段,由于分片都是依据规模来挑选对应的存取server的,假如用递加字段很简单热门server的 发生,由所以依据key的规模来主动分片的,假如key散布不均衡就会导致有些key根本就无法切分,然后发生负载不均衡。 
9.mongodb的读功率比写高,hbase默许适宜写多读少的状况,能够经过hfile.block.cache.size装备,该装备 storefile的读缓存占用Heap的巨细百分比,0.2表明20%。该值直接影响数据读的功能。假如写比读少许多,开到0.4-0.5也没问题。如 果读写较均衡,0.3左右。假如写比读多,决断默许0.2吧。设置这个值的时分,你一起要参阅 hbase.regionserver.global.memstore.upperLimit,该值是memstore占heap的最大百分比,两个参 数一个影响读,一个影响写。假如两值加起来超越80-90%,会有OOM的危险,慎重设置。 
10.hbase选用的LSM思维(Log-Structured Merge-Tree),便是将对数据的更改hold在内存中,到达指定的threadhold后将该批更改merge后批量写入到磁盘,这样将单个写变 成了批量写,大大提高了写入速度,不过这样的话读的时分就费力了,需求merge disk上的数据和memory中的修正数据,这明显降低了读的功能。mongodb选用的是mapfile+Journal思维,假如记载不在内存,先 加载到内存,然后在内存中更改后记载日志,然后隔一段时间批量的写入data文件,这样对内存的要求较高,至少需求包容下热门数据和索引。

 

 

http://blog.csdn.net/likika2012/article/details/38931345

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    Shell 练习题(append)ITeye

    实例,文件,上述
  • 2

    获取checkbox复选框的值ITeye

    依据,获取,拿到
  • 3

    Redis的耐久化机制ITeye

    耐久,方法,内存
  • 4
  • 5

    记一次线程池的运用ITeye

    线程,运用,行列
  • 6
  • 7
  • 8
  • 9
  • 10

    Digester 解析XMLITeye

    元素,参数,解析