广告
返回顶部
首页 > 资讯 > 精选 >mongodb和hbase的区别
  • 931
分享到

mongodb和hbase的区别

2024-04-02 19:04:59 931人浏览 独家记忆
摘要

mongoDB和HBase的区别:1、monGodb bson属于文档型数据库,而hbase是列式数据库;2、mongodb主键是“_id”,而hbase主键是row key,能够是任意字符;3、mongodb支持二级索引,而hbase本身

mongoDBHBase的区别:1、monGodb bson属于文档型数据库,而hbase是列式数据库;2、mongodb主键是“_id”,而hbase主键是row key,能够是任意字符;3、mongodb支持二级索引,而hbase本身不支持二级索引;4、mongodb支持多种查找方法,而hbase仅只支持三种查找方法;5、两者之间的修改命令不同,mongodb使用update命令,而hbase的修改和添加都是put命令;6、两者之间的delete命令操作流程不同;7、mongodb支持shard分片,而hbase则是根据row key自动负载均衡;8、读写效率不同,mongodb中读效率比写高,而hbase默认适合写多读少情况;9、思想不同,mongodb采用的是mapfile+Journal思想,而hbase采用的是LSM思想。

mongodb和hbase的区别

具体内容分析如下:

Mongodb bson文档型数据库,整个数据都存在磁盘中,hbase是列式数据库,集群部署时每个familycolumn保存在单独的hdfs文件中。

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作左填充。

Mongodb支持二级索引,而hbase本身不支持二级索引

Mongodb支持集合查找,正则查找,范围查找,支持skip和limit等等,是最像MysqlNoSQL数据库,而hbase只支持三种查找:通过单个row key访问,通过row key的range,全表扫描

mongodb的update是update-in-place,也就是原地更新,除非原地容纳不下更新后的数据记录。而hbase的修改和添加都是同一个命令:put,如果put传入的row key已经存在就更新原记录,实际上hbase内部也不是更新,它只是将这一份数据已不同的版本保存下来而已,hbase默认的保存版本的历史数量是3。

mongodb的delete会将该行的数据标示为已删除,因为mongodb在删除记录时并不是真把记录从内存或文件中remove,而是将该删除记录数据置空(写0或特殊数字加以标识)同时将该记录所在地址放到一个list列表“释放列表”中,这样做的好就是就是如果有用户要执行插入记录操作时,mongodb会首先从该“释放列表”中获取size合适的“已删除记录”地址返回,这种方法会提升性能(避免了malloc内存操作),同时mongodb也使用了bucket size数组来定义多个大小size不同的列表,用于将要删除的记录根据其size大小放到合适的“释放列表”中。Hbase的delete是先新建一个tombstonemarkers,然后读的时候会和tombstonemarkers做merge,在 发生major compaction时delete的数据记录才会真真删除。

mongodb和hbase都支持mapReduce,不过mongodb的mapreduce支持不够强大,如果没有使用mongodb分片,mapreduce实际上不是并行执行的

mongodb支持shard分片,hbase根据row key自动负载均衡,这里shard key和row key的选取尽量用非递增的字段,尽量用分布均衡的字段,因为分片都是根据范围来选择对应的存取server的,如果用递增字段很容易热点server的产生,由于是根据key的范围来自动分片的,如果key分布不均衡就会导致有些key根本就没法切分,从而产生负载不均衡。

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的风险,谨慎设置。

hbase采用的LSM思想(Log-Structured Merge-Tree),就是将对数据的更改hold在内存中,达到指定的threadhold后将该批更改merge后批量写入到磁盘,这样将单个写变成了批量写,大大提高了写入速度,不过这样的话读的时候就费劲了,需要merge disk上的数据和memory中的修改数据,这显然降低了读的性能。mongodb采用的是mapfile+Journal思想,如果记录不在内存,先加载到内存,然后在内存中更改后记录日志,然后隔一段时间批量的写入data文件,这样对内存的要求较高,至少需要容纳下热点数据和索引。

--结束END--

本文标题: mongodb和hbase的区别

本文链接: https://www.lsjlt.com/news/109379.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mongodb和hbase的区别
    mongodb和hbase的区别:1、mongodb bson属于文档型数据库,而hbase是列式数据库;2、mongodb主键是“_id”,而hbase主键是row key,能够是任意字符;3、mongodb支持二级索引,而hbase本身...
    99+
    2022-10-21
  • mongodb和hbase的区别有哪些
    mongodb和hbase的区别有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。没什么有个h...
    99+
    2022-10-18
  • redis和hbase的区别是什么
    小编给大家分享一下redis和hbase的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!HBase和Redis的功能上...
    99+
    2022-10-18
  • HBase和Redis的区别是什么
    这篇文章给大家分享的是有关HBase和Redis的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。HBase和Redis的功能上比较相似。都是nosql类型的数据库。但是...
    99+
    2022-10-18
  • hbase和mysql的区别有哪些
    本篇内容主要讲解“hbase和mysql的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hbase和mysql的区别有哪些”吧! ...
    99+
    2022-10-19
  • HIVE和HBASE的区别有哪些
    这篇文章给大家分享的是有关HIVE和HBASE的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 两者分别是什么?       Apache Hive是一...
    99+
    2023-06-03
  • MySQL 和 MongoDB 的区别
    MySQL 是一个关系数据库。 MongoDB 是 NoSQL 数据库。以下是 MySQL 和 MongoDB 之间的重要区别。高级。号键MySQLMongoDB1拥有/开发者MySQL 归 Oracle 所有。MongoDB 由 Mong...
    99+
    2023-10-22
  • redis和mongodb的区别
    redis和mongodb的区别:1、在TPS方面redis性能要比mongodb大;2、redis操作更加便利,拥有较少的网络IO次数;3、mongoDB适合大数据量的存储,而redis能够存储的数据比mongoDB要少点;4、redis...
    99+
    2022-10-20
  • mongodb和sqlite的区别
    mongodb和sqlite的区别:1、mongodb是一个非关系型数据库,而sqlite是基于文件的关系型数据库;2、mongodb只能按key进行读写,而sqlite能够支持sql进行读写操作;3、sqlite非常灵巧轻量、性能好,而m...
    99+
    2022-10-19
  • mongodb和NoSql的区别
    mongodb和NoSql的区别:两者没有什么区别可言,mongodb属于NoSql的一种,NoSql是指非关系型数据库的意思,而在mongodb是一个介于关系数据库和非关系数据库之间的产品,其中非关系数据库当中功能最丰富,因此mongod...
    99+
    2022-10-04
  • mongodb和oracle的区别
    mongodb和oracle的区别:1、mongodb是面向文档的数据库,而oracle是一种多模型数据库管理系统;2、在mongodb中数据以document和Field的形式存储在集合,而oracle的数据则是以传统的RDBM方式存储;...
    99+
    2022-10-09
  • mongodb和mysql的区别
    mongodb和mysql的区别:1、数据模型,MongoDB是面向文档的数据库,MySQL是关系型数据库;2、查询语言,MongoDB使用MongoDB查询语言,MySQL是类似于JSON查询的语言;3、扩展性和性能,MongoDB使用可...
    99+
    2023-07-18
  • RDBMS 和 MongoDB 之间的区别
    RDBMSRDBMS 代表关系数据库管理系统。它将数据以实体形式存储为表。它提供多层信息安全。每个表可能有也可能没有主键(用于唯一标识表中的记录)和外键(用于标识两个表之间的关系)。 RDBMS 使用 SQL 语言来查询数据库。流行的 RD...
    99+
    2023-10-22
  • NoSQL数据库Cassandra和HBase与MongoDB在处理故障时候有哪些区别
    NoSQL数据库Cassandra和HBase与MongoDB在处理故障时候有哪些区别,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  当...
    99+
    2022-10-18
  • HBase与Hive的区别是什么
    这篇文章主要介绍“HBase与Hive的区别是什么”,在日常操作中,相信很多人在HBase与Hive的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HBase与Hive的区别是什么”的疑惑有所帮助!...
    99+
    2023-06-03
  • mysql和mongodb的区别是什么
    类型区别MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库,可以存放xml、json、bson类型的数据。存储方式mongodb是以JSON类文档的格式进行存储;而mysql中不同的...
    99+
    2022-10-22
  • MongoDB和MySQL的区别有哪些
    这篇文章主要讲解了“MongoDB和MySQL的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB和MySQL的区别有哪些”吧! ...
    99+
    2022-10-19
  • MongoDB和Redis有什么区别
    这篇文章主要介绍MongoDB和Redis有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MongoDB 更类似 MySQL,支持字段索引、游标操作,其优势在于查询功能比较强...
    99+
    2022-10-18
  • redis和mongodb有什么区别
    这篇文章主要介绍redis和mongodb有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! RedisRedis是一个开源的使用ANSI C语言编写、支持网络、可基...
    99+
    2022-10-18
  • mongodb和CouchDB有什么区别
    mongodb和CouchDB的区别有:1、mongodb比CouchDB速度快;2、CouchDB比mongodb安全一些;3、在mongodb中不可使用触发器,而在CouchDB中可以;4、mongodb将JSON数据序列化为BSON,...
    99+
    2022-10-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作