若 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 
                    
                    F281M6Dh8DXpD1g2      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   PRO 这俩比较的话感觉就是因为列式存储 
                 | 
            
     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  |