共计 1519 个字符,预计需要花费 4 分钟才能阅读完成。
在刚刚公布的 OceanBase 社区版 3.1.1 中,OceanBase 凋谢了一组新的 API 叫做 Table API,hbase -> HBase。本文作为源码解读系列的第九篇,将介绍 Table API,hbase -> HBase 和 OceanBase 多模型,以及 tableAPI 相干代码。
Table API,hbase -> HBase 以 API 而非 SQL 的形式提供了一种新的拜访 OceanBase 数据的接口。相熟 MySQL 的同学,能够把它类比为 MySQL 的 sockethandler。不过 Table API,hbase -> HBase 提供的能力更弱小,它把 OceanBase 牢靠和可扩大的分布式存储层能力间接提供给应用程序,提供了灵便(非关系模型)和轻量的数据拜访接口(无连贯状态),应用程序能够把 Table API,hbase -> HBase 当做 key-value , table-store , hbase(咱们提供了兼容 hbase 的 API 和驱动)等多种数据模型的数据库来应用。在简略读写场景下,Table API,hbase -> HBase 比 SQL 也有肯定的性能劣势(响应延时)。
这是 OceanBase 凋谢生态的重要动作,第三方零碎能够绝对容易的在 OceanBase 的 Table API,hbase -> HBase 服务之上封装增值的数据服务。例如,咱们在蚂蚁团体外部宽泛部署的时序数据库 CeresDB 就是这么做的。
上面介绍一下 Table API,hbase -> HBase 相干代码。
Table API,hbase -> HBase 模块通过 obrpc 协定提供数据服务,他的服务端口和 observer 的 rpc 端口一样。服务端的主体代码位于 src/observer/table/。
下面文件中,叫做 xxx_processor 的,次要都是协定层的解决。
execute_processor 是单行操作的处理函数,batch_execute_processor 是批量多行操作的处理函数,query_processor 是扫描操作的处理函数。
主体的逻辑在 ob_table_service.h/cpp 中。通过学习 Table API,hbase -> HBase 的代码,能够疾速学习 OceanBase 存储层、事务层对 SQL 层提供的接口。
Table API,hbase -> HBase 的 rpc 申请和后果的数据结构,定义在 src/share/table 中。从 OceanBaseTableOperation 类的定义中,能够看到 Table API,hbase -> HBase 提供了单行的 insert, delete, insert or update(无索引时即 put), replace, retrieve(get), increment, append 以及他们任意组合的批量操作。通过 OceanBaseTableQuery 接口,提供了范畴扫描操作。
Table API,hbase -> HBase 以后有 Java 和 Rust 两种语言的驱动,对某个分区的查问由客户端发送到 leader 正本所在的 OceanBaseserver 上。如果产生了主备切换,须要驱动实现重试逻辑。
欢送大家在 Table API,hbase -> HBase 之上扩大更多利用。
附录:前八篇源码解读文章可供参考
1、OceanBase 数据库源码解读(一)引言
2、OceanBase 数据库源码解读(二)目录构造
3、OceanBase 源码解读(三)SQL 的毕生
4、OceanBase 源码解读(四)分区的毕生
5、OceanBase 源码解读(五)事务的毕生
6、OceanBase 源码解读(六)租户的毕生
7、OceanBase 源码解读(七)带你看透虚构表
8、OceanBase 源码解读(八)OB 高性能执行引擎