若 mongo 只创建一个索引,那么 mongo 索引锁占用的空间只是多了一点吧?
我大致看了 hbase 和 mongo 的分片原理,但也没发现可能的原因。 数据量过大时,读 /写请求都是会路由到某一个机器上去处理。 而在目标机器的单个分片中,hbase 采用 lsm 树,mongo 采用 b 树。
这些差别虽然有,但在对数据量的支持上,也不至于 hbase 比 mongo 高出一个数量级吧?
恳请大佬解惑!
1
vjnjc 2021-02-15 19:37:30 +08:00
个人看法:
“感觉对大数据的支持”这个意思是对分析型大数据的支持,对于分析型需求的话不需要查所有 column,hbase 是列存储天然支持这个场景。mongo 更多用在在线业务的后端上面,和分析型数据 query (大数据)需求场景不一样。 |
2
liprais 2021-02-15 19:48:03 +08:00
mongodb 是单机的
|
3
forPandaria OP @vjnjc 我表述有误,“大数据”只是单存地指数百 TB 以及 PB 级别的数据。
|
4
forPandaria OP @liprais mongodb 可以部署集群
|
5
YouLMAO 2021-02-15 20:14:58 +08:00 via Android
HBASE 我们家峰值几千万 QPS
|
6
vjnjc 2021-02-15 20:25:34 +08:00
@forPandaria 请问你们用上 tb/pb 级的数据了吗?这个量级的数据是无法做在线功能的
|
7
forPandaria OP @vjnjc 我只是好奇,但从原理上看 mongodb 也可以构建上百台机器的集群,存储数百 tb 的数据。
做好数据负载均衡,请求打到不同节点。这不应该是 hbase 能做到的,mongodb 一样做吗? 我只接触过 hbase 集群,没有接触过 mongodb 集群,在网上查看相关信息都是说 mongo 要做到这样很难,所以就很好奇 [阿里云上 mongo 好像也是比 hbase 要贵很多吧?] |
8
SingeeKing 2021-02-15 20:38:25 +08:00
这俩比较的话感觉就是因为列式存储
|
10
RedrumSherlock 2021-02-15 22:59:52 +08:00 via Android
等等这俩就不是一类吧,一个是 column 一个是 document,根本设计和应用场景就不一样怎么比? hbase 是针对单列查询才快,你拿复杂多列查询到 hbase 上跑它也一样慢
|
11
YouLMAO 2021-02-15 23:03:55 +08:00 via Android
@RedrumSherlock 嗯啥? HBASE 就是多列,几万列,稀疏的,即一行通常只有其中数列有值
|
12
RedrumSherlock 2021-02-15 23:53:22 +08:00 via Android
@YouLMAO 当然可以多列,但是只有按主列查询的时候才最快,如果想在别的列上加 filter 查询也会慢下来
|
13
forPandaria OP @RedrumSherlock 您说的主列,是指其作为 key 吧。
我前面有说“若 mongodb 只创建一个索引”。 我疑惑的是,这样来看 mongo 应该也能很好地支持 hbase 那样大的数据量,但网上都是说 hbase 支持的量级要大的多。 |
14
forPandaria OP @RedrumSherlock
我的理解是,hbase 能做到的,mongo 应该也一样可以做到。 但为什么数据量超大的情况下,却只能选 hbase ? 难道是在这种情况下 mongodb 性能退化严重吗? 除了 “hbase 可以更好地支持 mapreduce” 这个理由之外, 还有其他理由吗? |
15
RedrumSherlock 2021-02-16 01:03:54 +08:00
@forPandaria 对 HBase 不敢大放厥词,但是我觉得 Hbase 和 mangodb 底层的设计是大相径庭的,不像 postgres 和 mysql, oracle 那样都是一个框架下能够比较,就像你说的分片,hbase 是以列为最小粒度来分片的,mangodb 按我理解还是比较粗的来分片,这咋比?而且 mangodb 的索引和 hbase 的 row key 也不是一回事,所以这两者应用支持层面上比较一下还行,要来比较性能只能说 Hbase 天生就是给特定的大数据场景而设计的
|
16
sampeng 2021-02-16 03:34:39 +08:00 via iPhone
不用想你什么复杂的理由,一条就够了
在你需要扩容的时候,加一台机器即可。啥都不需要做。 |
17
vjnjc 2021-02-17 14:51:12 +08:00
@forPandaria 撇开 hbase 不计。光是 mongodb 就能满足很大规模的请求,用分库分表。
|
18
forPandaria OP |