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

枫少@KillBoy
枫少@KillBoy
管理员
220
文章
0
粉丝
资源分享284,538字数 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
评论  28  访客  26  作者  2
    • 旧巷旧时光
      旧巷旧时光 0

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

      • 夜月星辉
        夜月星辉 1

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

        • 不瘦十斤不改名
          不瘦十斤不改名 1

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

          • 20
            20 0

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

              • 圆滚滚
                圆滚滚 1

                @ 20 说白了就是把复杂数据转成KV对吧?

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

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

                  • BumbleBeacon
                    BumbleBeacon 0

                    @ 风吹过的足迹 tag解析这块实际跑起来延迟高不高啊?

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

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

                    • 沙漠旅人
                      沙漠旅人 0

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

                      • 冰雹纷飞
                        冰雹纷飞 1

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

                        • SupernovaWarden
                          SupernovaWarden 0

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

                          • 书吏谢
                            书吏谢 0

                            引擎计算层这概念在别的数据库里好像叫查询处理器?

                            • 数字星河
                              数字星河 0

                              我们之前做游戏服也这么干,用key打散玩家数据

                              • 无尽的黑夜
                                无尽的黑夜 1

                                这架构跟Mongo的文档模型有点像?

                                • 暗影潜行者
                                  暗影潜行者 1

                                  要是能出个性能对比测试就更硬了

                                  • 嘉荫堂前
                                    嘉荫堂前 0

                                    buf(3)那块是不是存的是嵌套子结构啊?

                                    • 烟火人间客
                                      烟火人间客 0

                                      刚入坑TcaplusDB,看着懵但感觉挺强的

                                      • 荒漠游魂
                                        荒漠游魂 1

                                        key-value的映射这块讲得挺清楚

                                        • 深海蓝
                                          深海蓝 1

                                          嵌套结构这块的设计逻辑蛮实用

                                          • 密码锁匠
                                            密码锁匠 0

                                            上次用TXHDB时就被这设计惊艳过一次

                                            • 梨香院主
                                              梨香院主 1

                                              讲引擎计算层,那读写性能咋样?

                                                • 枫少@KillBoy
                                                  枫少@KillBoy

                                                  @ 梨香院主 读写性能优化得不错,后续文章会详细讲讲。

                                                • 社恐小猫猫
                                                  社恐小猫猫 0

                                                  不是特别懂存储层,但这转换思路听着蛮巧妙的

                                                  • 夜刃幽魂
                                                    夜刃幽魂 0

                                                    我之前搞微服务拆表就头疼死了,这方案倒是省事

                                                    • 国庆礼花
                                                      国庆礼花 1

                                                      key-value转表结构这块,实操起来难不?

                                                        • 枫少@KillBoy
                                                          枫少@KillBoy

                                                          @ 国庆礼花 实际操作起来文档和工具都挺全的,上手还蛮快。

                                                        • 墨影流年
                                                          墨影流年 0

                                                          666,催更下期!

                                                        匿名

                                                        发表评论

                                                        匿名网友

                                                        拖动滑块以完成验证