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

[TcaplusDB知识库]数据库支撑底盘引擎计算层介绍的更多相关文章

  1. 做优化的数据库工程师请参考!CynosDB的计算层设计优化揭秘

    本文由云+社区发表 本文作者:孙旭,腾讯数据库开发工程师,9年数据库内核开发经验:熟悉数据库查询处理,并发控制,日志以及存储系统:熟悉PostgreSQL(Greenplum,PGXC等).Terad ...

  2. 【TcaplusDB知识库】如何部署TcaplusDB Local 版

    [TcaplusDB知识库]部署TcaplusDB Local 版的准备操作 1. 版本介绍 TcaplusDB Local版,是为用户提供的一个满足本地开发调试的版本(基于Docker部署的可下载版 ...

  3. MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析

    文/何登成 导读:   来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...

  4. MySQL数据库InnoDB存储引擎中的锁机制

    MySQL数据库InnoDB存储引擎中的锁机制    http://www.uml.org.cn/sjjm/201205302.asp   00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...

  5. 1009MySQL数据库InnoDB存储引擎Log漫游

    00 – Undo Log Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atom ...

  6. mysql数据库各存储引擎比較

    mysql数据库差别于其它数据库的最重要的一个特点是其插件式的表存储引擎,存储引擎是基于表的.而不是数据库 InnoDB存储引擎:        支持事务,其设计目标主要面向在线事务处理(OLTP)的 ...

  7. 百万年薪python之路 -- MySQL数据库之 存储引擎

    MySQL之存储引擎 一. 存储引擎概述 定义: 存储引擎是mysql数据库独有的存储数据.为数据建立索引.更新数据.查询数据等技术的实现方法 ​ 首先声明一点: 存储引擎这个概念只有MySQL才有. ...

  8. mysql数据库之存储引擎

    mysql存储引擎概述 什么是存储引擎?                                                               MYSQL中的数据用各不相同的技术 ...

  9. [MySQL数据库之表的详细操作:存储引擎、表介绍、表字段之数据类型]

    [MySQL数据库之表的详细操作:存储引擎.表介绍.表字段之数据类型] 表的详细操作 存储引擎 mysql中建立的库======>文件夹 库中建立的表======>文件 用来存储数据的文件 ...

随机推荐

  1. nmon打开nmon文件出现 运行时错误13类型不匹配问题解决

    根据nmon工具安装及nmon analyser的使用 - 空谷幽兰LDD - 博客园 (cnblogs.com)文中,用nmon_analyse去打开监控到的nmon文件,出几个报错. 1 用WPS ...

  2. 保存TextBox中的文字为Path功能

    保存TextBox中的文字为Path功能 今天再设计一个我自己程序的Icon时使用了Path+textbox做了图形,我不想导出为PNG,因为颜色比较单一,我又想通过代码控制颜色,所以我想完整的保存为 ...

  3. ESP32构建系统(CMake版)

    ESP32 芯片是一款 2.4 GHz Wi-Fi 和蓝牙双模芯片,内置 1 或 2 个 32 位处理器,运算能力最高可达 600 DMIPS. ESP-IDF 即乐鑫物联网开发框架,可为在 Wind ...

  4. dev c++处理汉字

    工具--编译选项--编译器 在连接器命令行加入以下命令 -static-libgcc  -finput-charset=GBK  -fexec-charset=GBK 有些处理汉字的程序运行正常,但E ...

  5. M1卡分类

    M1卡复制前文说到,每一张M1卡的0扇区0块都是出厂时厂商赋予的绝对地址块,我们无法在M1卡内直接修改它. 说到这不得不提一下M1卡的复制子卡--UID卡,FUID卡,CUID卡. UID卡UID卡是 ...

  6. 从0到1认识XHTML

    XHTML概念 XHTML是一种可扩展超文本标记语言,与HTML(超文本标记语言)类似,不过在语法上更加严格.XHTML是以XML(是一种必须正确标记且格式良好的标记语言)应用方式定义的HTML,与h ...

  7. RPC远程协议之Thrift入门

    在上一篇文章<RPC远程协议之原理分析>中,我介绍了RPC的工作原理及欲实现RPC框架功能应该做哪些事情,因为要做的事情太多,完全由开发人员研发实现,不是很现实,所以市面上出现了诸多RPC ...

  8. ROS轮椅

  9. SpringBoot通过Ajax批量将excel中数据导入数据库

    Spring Boot通过Ajax上传Excel并将数据批量读取到数据库中 适合场景:需要通过excel表格批量向数据库中导入信息 操作流程 [1]前端上传一个excel表格 [2] 后端接收这个ex ...

  10. 微信小程序云开发-云函数-调用初始云函数获取openid

    一.调用初始云函数获取openid的两种方法 1.传统的success和fail 2.ES6的.then和.catch 3.编译结果 说明:初始云函数,是指刚创建完成的云函数.默认系统写的代码.