HBase概述
HBase是一个分布式存储、数据库引擎,可以支持千万的QPS、PB级别的存储,这些都已经在生产环境验证,并且在广大的公司已经验证。特别是阿里、小米、京东、滴滴内部都有数千、上万台的HBase集群。选择一个技术的首要条件是对齐大公司,大公司会投入大量的人力去维护、改进、贡献社区。
关于NewSQL与NoSQL的关系
技术总是不断向前发展的,如今都在提NewSQL,其实NewSQL在笔者看来是NoSQL之上的一个封装,一个子场景。NoSQL中的大表,典型就是提供了KV1V2……Vn,其中每个V可以是1b,也可以是100MB。可以说是一个元的存在,就类似于数字世界的01,可以任意组合。在以HBase为代表的NoSQL中,HBase可以组合出任意的场景,NewSQL可以是之上加了SQL层或者更近一层添加事务的子场景。
关于计算与存储分离
在云上,对于引擎最为核心的就是存储计算分离,存储可以按需计费,起码得弹性伸缩。计算则按节点存储提供。如果完全按照QPS计费,要么费用高得吓人,要么难以满足更多的场景,比如存储10M,到底算一次QPS,还是多少次。 由于HBase天生就是存储计算分离,天然比较适配云上的架构,可以说到了云上,HBase更加具有优势。
HBase场景
HBase可以说是一个数据库,也可以说是一个存储。拥有双重属性的HBase天生就具备广阔的应用场景。在最近的一些版本中,引入了OffHeap降低gc影响,优化链路延迟,提供Replica等可以满足在线的需求。引入MOB,可以存储10M左右的对象,完全适应了对象存储。另外由于自身的并发能力、存储能力,可以说是具有最为竞争力的引擎。
- 对象存储:我们知道不少的头条类、新闻类的的新闻、网页、图片存储在HBase之中,一些病毒公司的病毒库也是存储在HBase之中。
- 时序数据:HBase之上有OpenTSDB模块,可以满足时序类场景的需求。
- 推荐画像:特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase之上。
- 时空数据:主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在HBase之中,另外在技术所有大一点的数据量的车联网企业,数据都是存在HBase之中。
- CubeDB OLAP:Kylin一个cube分析工具,底层的数据就是存储在HBase之中,不少客户自己基于离线计算构建cube存储在hbase之中,满足在线报表查询的需求。
- 消息/订单:在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上。
- Feeds流:典型的应用就是xx朋友圈类似的应用。
- NewSQL:之上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求。