在上次的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. Java 设置PDF跨页表格重复显示表头行

    在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好.下面分享一个方法如何在表格跨页是显示表格的表头内容,这里只需要简单使用方法 grid.set ...

  2. Robotframework学习笔记之一Common Resource导入的Library库显示红色(导入失败)

    第一次使用Robotframework,所以也遇到了很多的坑,导入项目后 ,一些自带的库显示红色,导入失败!(ps:自带的库也显示红色) Ride日志如下(Tools--view ride log): ...

  3. Vue3 + Cesium + Typescript 集成搭建的快速启动模板(包含示例数据)

    开门见山 项目地址:https://github.com/tanghaojie/vue3-cesium-typescript-start-up-template 好用的话给个star呗,有更新可以第一 ...

  4. java 语言知识

    1.javase 标准版主要用于桌面应用.控制台:javaee 企业版主要用于web应用:javame微缩版主要用于嵌入式. 2.jre是java程序的运行环境,包含jvm(java虚拟机).jdk是 ...

  5. 入门Kubernetes-minikube本地k8s环境

    前言: 在上一篇 结尾中使用到了minikube方式来做k8s本地环境来学习k8s. 那么这篇先了解下minikube及使用 一.Minikube 简介 minikube 在 macOS.Linux ...

  6. C语言:模拟密码输入显示星号

    一个安全的程序在用户输入密码时不应该显示密码本身,而应该回显星号或者点号,例如······或******,这在网页.PC软件.ATM机.POS机上经常看到.但是C语言没有提供类似的功能,控制台上只能原 ...

  7. Tutorial_6 运行结果

    1.buyer_favorites.txt 2.代码 package mapreduce; import java.io.IOException; import java.util.Iterator; ...

  8. 在 Intenseye,为什么我们选择 Linkerd2 作为 Service Mesh 工具(Part.1)

    在 Intenseye,我们 follow(跟随) trends(趋势) & hype(最被炒作) 的技术,并在使用时应用最佳实践. 我们在用 Scala.Go.Python 等编写的 Kub ...

  9. Appium - adb命令操作

    1.Android 调试桥adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调 ...

  10. js学习笔记之日期倒计时(天,时,分,秒)

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...