栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

开源数据库OceanBase源码解读(九):tableAPI和OB多模型

开源数据库OceanBase源码解读(九):tableAPI和OB多模型

在刚刚发布的 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高性能执行引擎

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584673.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号