在上次的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](https://www.it2021.com/wp-content/themes/begin/img/loading.png)
嵌套数据结构
使用TcaplusDB的嵌套数据结构,有助于将关系型数据库使用时需要的多张表定义,转化为单张表定义。在解析数据时,对二进制数据进行遍历,根据tag信息解析各字段的field number及value数据。在数据打包时,遍历各字段,根据字段field number,类型,value数据,打包tag及value数据到指定的buffer里。在遇到解析的value为嵌套数据结构时,则根据元数据的定义,将value按照tag、length、value进行逐个字段遍历及解析,实现嵌套数据结构的读写能力。
![[TcaplusDB知识库]TcapRecord引擎计算层的介绍-图片2](https://www.it2021.com/wp-content/themes/begin/img/loading.png)
TcaplusDB君本次的知识库分享就到这里结束啦,后续我们将揭开更多TcaplusDB设计的特殊奥秘。

日本 1F
看不太懂,有人能简单说说这玩意儿有啥用吗?
山东省泰安市 2F
感觉讲得有点抽象,要是配个实际用例就好理解了🤔
内蒙古 3F
之前用过类似架构,key-value转换这块确实挺关键的
上海市 4F
所以这个TcapRecord主要是做数据格式转换的?
江苏省泰州市 B1
@ 20 说白了就是把复杂数据转成KV对吧?
浙江省宁波市 5F
嵌套结构那部分没太明白,tag解析效率怎么样?
北京市 B1
@ 风吹过的足迹 tag解析这块实际跑起来延迟高不高啊?
浙江省金华市 6F
技术文章写成这样已经不错了,至少把逻辑讲清楚了
北京市 B1
@ 酱油瓶里的哲学家 讲得清楚是真清楚,就是图可以再细点
北京市 7F
图里那几个buf是做什么的?感觉示意图可以再详细点
江苏省无锡市 8F
这种底层设计文章对我们开发挺有帮助的,收藏了
吉林省辽源市 9F
嵌套数据结构能减少表数量这点确实实用,之前项目就遇到过类似问题
广西 10F
引擎计算层这概念在别的数据库里好像叫查询处理器?
韩国 11F
我们之前做游戏服也这么干,用key打散玩家数据
广东省广州市 12F
这架构跟Mongo的文档模型有点像?
山东省 13F
要是能出个性能对比测试就更硬了
日本 14F
buf(3)那块是不是存的是嵌套子结构啊?
广东省茂名市 15F
刚入坑TcaplusDB,看着懵但感觉挺强的
四川省成都市 16F
key-value的映射这块讲得挺清楚
河南省郑州市 17F
嵌套结构这块的设计逻辑蛮实用
北京市 18F
上次用TXHDB时就被这设计惊艳过一次
湖南省郴州市 19F
讲引擎计算层,那读写性能咋样?
宁夏银川市 B1
@ 梨香院主 读写性能优化得不错,后续文章会详细讲讲。
江苏省南京市 20F
不是特别懂存储层,但这转换思路听着蛮巧妙的
辽宁省锦州市 21F
我之前搞微服务拆表就头疼死了,这方案倒是省事
辽宁省葫芦岛市 22F
key-value转表结构这块,实操起来难不?
宁夏银川市 B1
@ 国庆礼花 实际操作起来文档和工具都挺全的,上手还蛮快。
浙江省嘉兴市 23F
666,催更下期!