OceanBase 是一个金融级分布式关系数据库,在经过多年的双十一大促和大规模商用场景的考验后,于 2021 年 6 月份正式 开放源代码。开源范围包含数据库内核、分布式组件和接口驱动,并提供完整的 SQL 引擎、事务引擎和存储引擎,支持多副本、分布式事务、高性能、扩展能力、故障恢复、优化器、多活容灾、语法兼容等核心技术,共有 300 万行的核心代码。为了帮助大家更好的理解 OceanBase 开源代码存储层的实现,OBKV 团队计划推出一系列的博文,做一个存储层源码解读的专栏,同时也基于这样的一个渠道,和大家更畅快的交流讨论数据库存储技术。
专栏作者介绍
我们是 OBKV 开发团队,由锡林、颂乐、公祺、力虾、飞驰等小伙伴组成,我们的技术栈主要包括多模型数据库、分布式存储、数据库高可用技术、后端服务器开发等方面。OBKV 是基于 OceanBase 构建的分布式 NOSQL 数据库,OBKV 的代码后续也会慢慢开源出去。
你能获得什么
通过本系列的存储层源码解读文章,您可以了解到 OceanBase 存储层的具体代码实现、背后的设计思路,以及深层的思考,这对您学习其他数据库也有帮助。其次,在熟悉了 OceanBase 存储层代码之后,如果有需要,您可以直接在未来的工作中使用我们的代码,或者为 OceanBase 贡献您的代码。
系列内容提要
本系列的内容主要集中在 OceanBase 存储层的代码解读,主要包括如下几篇文章:
1.微块的存储格式:微块编码格式代码解读。
2.宏块的存储格式:宏块在存储层的作用和编码格式。
3.SSTable 的存储格式:SSTable 的组织形式,以及和分区的关系。
4.宏块的回收原理:SSTable 中不再使用的宏块是怎么回收的。
5.Dag调度器原理:有向无环图任务调度模型。
6.Compaction 的实现:包括各级 SSTable的转储、合并的实现。
7.Redo log 的实现原理:Redo log 的作用及实现。
8.其他相关内容。
写在最后
如果您对我们的文章任何建议或反馈,欢迎提出来帮助我们改善。我们的邮箱是 open_docs@oceanbase.com,欢迎来撩。如果您有什么特别想了解的,也请告诉我们。我们可能会在下期翻牌子噢~~当然阅读本系列文章和直接阅读源码的体感还是不一样的。本系列文章旨在帮助您更好地理解源码,但是却不能代替源码。如果想深入学习 OceanBase,欢迎阅读源码和参与贡献,OceanBase 社区在大门永远向爱好者敞开。
最后的最后:如果您有任何疑问,可以通过以下方式与我们进行交流:
钉钉群:33254054
微信群:扫码添加小助手,将拉你进群哟~