[TcaplusDB知识库]TcapRecord引擎计算层的介绍

枫少@KillBoy
枫少@KillBoy
管理员
215
文章
0
粉丝
资源分享93,809字数 630阅读2分6秒阅读模式
AI智能摘要
你是否好奇,数据库如何将复杂的表结构“翻译”成底层的Key-value存储?TcaplusDB的引擎计算层TcapRecord正是实现这一关键转换的核心。本文深度解析TcapRecord的设计逻辑,揭秘它如何通过表结构与嵌套数据结构的双重支持,屏蔽底层细节,实现灵活高效的数据映射。想理解数据库计算层如何赋能复杂数据操作?这篇文章给你答案。
— AI 生成的文章内容摘要

在上次的TcaplusDB知识库中,TcaplusDB君为大家讲解了TcaplusDB所用的基于HASH表的Key-value存储引擎TXHDB。存储引擎作为数据库的支撑底盘,其重要性无可置疑,而在本次的知识库系列分享中,TcaplusDB君要跟大家分享一个对于数据库而言也很重要的结构,引擎计算层。

下面我将介绍一下TcaplusDB所用的引擎计算层 TcapRecord的设计逻辑。

TcapRecord的设计逻辑

为灵活支持多种表类型及复杂数据存储,引擎计算层设计了TcapRecord对象来表达复杂数据记录对象,在引擎计算层将复杂数据对象转换成简单的key-value二进制数据记录,以对底层引擎屏蔽数据表描述等细节,实际底层只需实现key-value模型的通用存储接口。

TcapRecord支持两种结构,表结构和嵌套数据结构。

表结构

TcaplusDB底层是Key-value存储格式, 如何映射到用户的操作的类似Table的结构呢?

field1 field2 field3 field4 field5 field6 ….

一个表,有N多字段,在TcaplusDB中可以选定一个表的多个字段做为key,其他字段做为value来存储到TcaplusDB中。 用户还可以选定多个key字段中的部分字段来做索引(注意索引必须包含splittablekey — 依据该key来做数据分布)。

引擎计算层负责表结构到Key-value结构的映射. 本质上就是把所有的key字段根据表结构序列化为一个key, 所有的value字段根据表结构序列化为一个value, 如下图所示:

[TcaplusDB知识库]TcapRecord引擎计算层的介绍-图片1

嵌套数据结构

使用TcaplusDB的嵌套数据结构,有助于将关系型数据库使用时需要的多张表定义,转化为单张表定义。在解析数据时,对二进制数据进行遍历,根据tag信息解析各字段的field number及value数据。在数据打包时,遍历各字段,根据字段field number,类型,value数据,打包tag及value数据到指定的buffer里。在遇到解析的value为嵌套数据结构时,则根据元数据的定义,将value按照tag、length、value进行逐个字段遍历及解析,实现嵌套数据结构的读写能力。

[TcaplusDB知识库]TcapRecord引擎计算层的介绍-图片2


TcaplusDB君本次的知识库分享就到这里结束啦,后续我们将揭开更多TcaplusDB设计的特殊奥秘。

https://www.freebuf.com/sectool/265297.html

 
枫少@KillBoy
评论  9  访客  9
    • 旧巷旧时光
      旧巷旧时光 0

      看不太懂,有人能简单说说这玩意儿有啥用吗?

      • 夜月星辉
        夜月星辉 0

        感觉讲得有点抽象,要是配个实际用例就好理解了🤔

        • 不瘦十斤不改名
          不瘦十斤不改名 0

          之前用过类似架构,key-value转换这块确实挺关键的

          • 20
            20 0

            所以这个TcapRecord主要是做数据格式转换的?

            • 风吹过的足迹
              风吹过的足迹 0

              嵌套结构那部分没太明白,tag解析效率怎么样?

              • 酱油瓶里的哲学家
                酱油瓶里的哲学家 0

                技术文章写成这样已经不错了,至少把逻辑讲清楚了

                • 沙漠旅人
                  沙漠旅人 0

                  图里那几个buf是做什么的?感觉示意图可以再详细点

                  • 冰雹纷飞
                    冰雹纷飞 1

                    这种底层设计文章对我们开发挺有帮助的,收藏了

                    • SupernovaWarden
                      SupernovaWarden 0

                      嵌套数据结构能减少表数量这点确实实用,之前项目就遇到过类似问题

                    匿名

                    发表评论

                    匿名网友

                    拖动滑块以完成验证