能否请何亮亮老师谈谈小米通过cp实现hbase二级索引的方案及遇到的问题呢?

问题背景、条件等详细信息...

heliangliang - heliangliang@{xiaomi, weibo, wechat}

赞同来自: rickyyang09 木舟 fish

首先我们目前只实现了region内部的二级索引。所以这里不涉及全局二级索引的问题,比如CAP问题(目前我们实现了全局事务,但是还没集成到我们的二级索引库,https://github.com/XiaoMi/themis)。   对于局部二级索引,大概几个方面吧: 1. 如何规范化数据模型和schema定义。我们参考了MySQL分表之后的数据模型以及Google Megastore的数据模型 2. 如何定义接口。为了接口清晰,我们复用了现有的put/delete/scan接口,没有增加额外的接口 3. 其他就是实现层面的问题,比如:  1) 正确性测试。需要满足用户的各种需求(集合数据类型索引,索引唯一性等),代码相对复杂。  2) 性能优化。没有花太多的时间在优化上,主要解决了一些主流程上的问题,比如java annotation反射的性能问题,如何根据查询的属性优化查询计划(如有多个CF都有同一属性的拷贝,如何选取最优的查询组合等)等问题。其他例如zero buffer copy之类的优化暂时没做。   总起来说实现上没有太大的困难,实现细节居多。感觉最重要的就是要定义一个清晰的数据模型。

要回复问题请先登录注册