数仓虚拟化技术:PieCloudDB 通过中国信通院 2023 「可信数据库」性能评测的强力支撑...

news2024/11/25 20:42:39

“可信数据库”是国内首个数据库的评测体系,被业界广泛认可为产品能力重要的衡量标准之一。PieCloudDB 在该评测中展现出卓越的数据处理速度、稳定性和可扩展性,为用户提供了强大的数据分析和查询能力。

6 月 15 ~ 16 日,中国信通院 2023 上半年“可信数据库”评测专家评审会圆满结束,经过现场测试、产品资料审核、测试报告审核、质询与答疑、集中评议等多个评审环节,共计 28 家企业的 33 款产品通过本次评审。 拓数派首款数据计算引擎 PieCloudDB 云原生虚拟数仓凭借优异的能力表现通过评测,获得分布式分析型数据库性能测试证书。

80052a7b-5685-5f96-2d46-68a03dac6662

云原生虚拟数仓 PieCloudDB 的性能创新之路

PieCloudDB 的卓越性能源于其创新的架构和先进的技术设计。PieCloudDB 实现了云上的存算分离、数仓虚拟化以及高性能的存储和计算能力,为用户提供了高效、可靠的海量数据处理、快速查询和分析的解决方案。

对于一款云原生虚拟数仓产品而言,性能是产品成功与否的一项非常重要的指标。PieCloudDB 团队开发了很多创新性技术,使得 PieCloudDB 不但具有云原生产品的灵活性和高可扩展性,而且在数据分析性能上也毫不逊色。

1 存储优化

PieCloudDB 在云上将元数据与用户数据分离,用户数据存放在公有云平台提供的对象存储(例如AWS S3),这样可以极大降低用户的数据存储成本。但是 S3 等对象存储存在局限性,例如读取数据的网络延时较大,不支持文件的随机读写等等。PieCloudDB 针对对象存储的优缺点重新设计了存储引擎简墨(JANM)。简墨的名字出自于“竹简墨书”,纵向的竹片被横向的连接起来,形成竹简,形象地说明了 PieCloudDB 行列混存的存储模式。简墨的独特设计既能利用 S3 的优势又通过一些措施克服了访问延迟和随机读写的劣势。

PieCloudDB 团队针对 OLAP 场景和云原生场景的特点对简墨进行了大量的优化。例如在数据块级别进行统计信息收集,在查询时可以利用统计信息实现 Data Skipping 和查询优化;针对 SUM、COUNT 等聚集函数进行预计算等;优化存储格式以实现透明数据加密(TDE)、高效数据压缩、Cache 友好等特性。

除了以上特性之外,简墨在设计过程中也充分考虑了如何利用现代 CPU 和 GPU 的架构特点,进一步支持 SIMD、SIMT 指令集来数据访问提高效率。

2 数据访问优化

简墨可以说是一款云原生数据存储引擎,对公有云平台的对象存储进行了大量的优化。但是在数据访问过程中,网络延迟一直是一个无法忽视的因素。如何提高数据的访问速度,这也是 PieCloudDB 架构设计过程中解决的一个重要问题。

PieCloudDB 针对数据访问加速做了大量的工作:

2.1 数据缓存

使用缓存是加速数据访问的常用措施,PieCloudDB 实现了本地缓存,更加高效的分布式缓存也在规划中;此外,PieCloudDB 还针对数据的访问频率对缓存实现了“冷”、“温”、“热”的分级管理。

2.2 使用一致性哈希算法提高缓存命中率

PieCloudDB 实现了本地缓存,因此可能会发生跨节点读取缓存数据情况,为了避免跨节点的缓存读写,PieCloudDB 实现了一致性 Hash 存储缓存文件,提高缓冲的命中率。

2.3 使用 Data Skipping 精确加载数据

Data Skipping(Block Skipping)可以跟进预先计算数据统计信息从而判断数据块中是否有需要的数据,从而跳过不包含所需数据的数据块。

2.4 S3 访问通用优化

并行化读取数据、预读取数据、异步读取数据等。

3 强大的查询优化器

如果说高效的数据访问是硬币的一面,那么强大的查询优化器则是硬币的另一面。对于一款云原生数仓产品来说,强大的查询优化器也是产品成功的一个重要方面。如何把用户复杂的 OLAP 场景的复杂 SQL 转换成高效的查询计划,是查询优化器的首要任务。

PieCloudDB 团队打造了分布式查询优化器”达奇”,对用户的 SQL 查询进行全链路优化。PieCloudDB 查询优化的处理过程一般被分为四个阶段:预处理阶段,扫描/连接优化阶段,扫描/连接之外的优化阶段,后处理阶段。

3.1 预处理阶段

在预处理阶段,化器「达奇」会通过逻辑上的等价变化,将查询树转换为更加简单高效的等式,除了常见的谓词下推之外,达奇优化器添加了大量的 SQL 语句改写,例如:

  • 把 IN, EXISTS 等类型的子查询转换为半连接
  • 把 FROM 关键字后面的子查询提升为 JOIN
  • 把外连接(OUTER JOIN)转换为内连接(INNER JOIN)/反连接(ANTI JOIN)
  • 分发约束条件
  • 构建等价类
  • 收集外连接信息
  • 消除无用连接
  • 简化表达式

3.2 扫描连接阶段

在这一阶段,优化器「达奇」的处理主要可以分为两步。首先会为基表生成扫描路径,并计算扫描路径的代价和结果集大小,从而获得后面连接操作的代价。第二个步骤中,「达奇」会搜索整个连接顺序空间,为连接操作生成最优的连接路径。这一步骤的复杂度非常高,PieCloudDB 采用了动态规划和遗传算法两个算法来进行处理,并根据 GUC 值进行算法选择。如果查询语句中涉及外连接,考虑到外连接对连接顺序的限制,无法像内连接那样随意切换连接顺序,会加大这一步骤的复杂度。

3.3 扫描/连接之外的优化阶段

这一阶段,「达奇」会先处理 GROUP BY、聚集、窗口函数、DISTINCT,再对集合操作进行处理,最后再处理 ORDER BY。以上的每一步操作都会产生一个或多个路径,「达奇」会对这些路径根据代价大小进行筛选,并为筛选出的路径添加 LockRows,Limit,ModifyTable。

3.4 后处理阶段

经过前面三个阶段,「达奇」已经生成了一个大概的查询计划。在后处理阶段,「达奇」会把选出的最优路径转换为查询计划,并对最优计划进行一些调整。

值得一提的是,拓数派凭借在云原生虚拟数仓的突出成果和优异表现, 参与了于 2023 可信数据库发展大会上发布的《数据库发展研究报告(2023)》的编写工作,并成功入选了《中国数据库产业图谱(2023)》。

ac37fa89-d255-89ae-dbf6-845e9f4a5fa0

数据库是复杂的系统软件,分布式数据库则更是让软件的复杂性“更上一层楼”,因此构建高效的分布式云原生数据库可以说是难上加难。PieCloudDB 获得的成绩充分说明了业界对 PieCloudDB 性能的认可。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/771570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3笔记-脚手架篇

第一章 基础篇 第二章 脚手架篇 vue2与vue3的一些区别 响应式系统: Vue 2 使用 Object.defineProperty 进行响应式数据的劫持和监听,它对数据监听是一项项的进行监听,因此,当新增属性发生变化时,它无法监测到&…

0719_rasa网站的一些介绍

it’s not a bot, it’s your brand rasa is the leading open generative conversational ai platform for creating and managing ai assistants at scale. learn more talk with sales top enterprises trust rasa american express adobe dell accenture report ho…

使用Canal同步mysql数据到es

一、简介 Canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x 二、工作原理 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记…

一篇文章带你用Jenkins和Kubernetes搭建DevOps平台

JenkinsKubernetes实现DevOps DevOps 介绍Jenkins环境准备准备JDK下载jdk安装jdk配置jdk环境变量 准备maven下载maven解压maven配置maven配置maven环境变量 安装Docker安装git 安装Jenkins初始化jenkins准备代码仓库和docker镜像仓库准备Kubernetes准备java项目搭建DevOps创建代…

ENSP实验一:防火墙基础配置

1、搭建拓扑图 配置client&#xff08;内网&#xff09;、FTP Server&#xff08;外网&#xff09;的IP地址 客户端设置&#xff1a; 服务端设置&#xff1a; 2、配置防火墙命名 进入防火墙&#xff0c;输入密码&#xff1a;默认为admin123 <USG6000V1>system-view /…

埃科光电在科创板上市:同创伟业、毅达资本为股东,实控人为董宁

7月19日&#xff0c;合肥埃科光电科技股份有限公司&#xff08;下称“埃科光电”&#xff0c;SH:688610&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;埃科光电的发行价为73.33元/股&#xff0c;发行数量为1700万股&#xff0c;募资总额约为12.47亿元&#xff…

Flutter 单线程模型保证UI运行流畅

Flutter 框架出色的渲染和交互能力。支撑起这些复杂的能力背后&#xff0c;实际上是基于单线程模型的 Dart。那么&#xff0c;与原生 Android 和 iOS 的多线程机制相比&#xff0c;单线程的 Dart 如何从语言设计层面和代码运行机制上保证 Flutter UI 的流畅性呢&#xff1f; 因…

❤️创意网页:HTML5 Canvas技术实现绚丽多彩的烟花特效教程

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

HhybridApp开发模式,你了解多少?

Hhybrid App顾名思义就是原生 App 与 Web App 的结合。它的壳是原生 App&#xff0c;但是里面放的是网页。 可以理解成&#xff0c;混合 App 里面隐藏了一个浏览器&#xff0c;用户看到的实际上是这个隐藏浏览器渲染出来的网页。 随着 Web 技术和移动设备的快速发展&#xff0…

长沙打造“全球研发中心城市”,智能网联产业如何交卷?

作者 | 魏启扬 来源 | 洞见新研社 知乎上有一个浏览超百万的热门问题——“大家怎么看待长沙这个城市&#xff1f;” 答主“星球研究所”的回答获得了高赞&#xff0c;“这是一个天性如火的城市”。 网红城市的外衣下&#xff0c;从湖南卫视的综艺节目&#xff0c;到网红美…

2023年牛客暑假多校-1 - J.Roulette题解

传送门&#xff08;lduoj&#xff09; 题目描述 Walk Alone is playing roulette, a kind of gambling. For simplification, we assume its rules and steps as follows: The whole gambling process composes of many turns.In the i-th turn:Walk Alone can choose an i…

ROS:nodelet

目录 一、前言二、概念三、作用四、使用演示4.1案例简介4.2nodelet 基本使用语法4.3内置案例调用 五、nodelet实现5.1需求5.2流程5.3准备5.4创建插件类并注册插件5.5构建插件库5.6使插件可用于ROS工具链5.6.1配置xml5.6.2导出插件 5.7执行 一、前言 ROS通信是基于Node(节点)的…

[RK3568] AMP架构

Rockchip 平台异构多系统 AMP &#xff08;非对称多核架构&#xff09;的开发软件包&#xff0c;支持 Linux(Kernel) 、 Standalone(Hal)、 RTOS(RT-Thread) 组合 AMP 构建形式。 Standalone(Hal) HAL&#xff1a;Hardware Abstraction Layer&#xff0c;硬件抽象层。 硬件抽…

抖音新号起号正确方法,如何操作?

抖音上有着越来越多的卖家注册账号&#xff0c;但刚开始在注册账号后&#xff0c;新号是没有什么流量的&#xff0c;所以想要获得更多的流量的话&#xff0c;在刚开始进行起号的时候就需要按照以下方式进行&#xff0c;下面就一起了解清楚。 第一个找对标内容&#xff0c;抖音…

Hadoop集群启动常见错误

错误一 &#xff1a; 配置文件错误 解决方案&#xff1a;检查配置文件&#xff0c;修改错误。重新分发&#xff08;同步&#xff09; 常见错误二 &#xff1a; 重复格式化 DataNode NameNode 在格式化时如果发现下面的提示说明重复格式化了 datanode和namenode的集群id…

KUKA机械臂的导纳控制

KUKA机械臂的导纳控制 在近期的实验中&#xff0c;需要根据传感器的给出的实时位置信息进行导纳控制&#xff0c;并实时改变导纳控制的参数。由于KUKA自带的实时导纳控制模型无法实时修改参数&#xff0c;因此尝试了自己实现导纳控制。网上这方面的资料比较少&#xff0c;整理…

Java阶段五Day09

Java阶段五Day09 文章目录 Java阶段五Day09网关Gateway跨域的问题熔断限流组件sentinel微服务场景熔断降级限流降级 sentinel学习案例sentinel介绍重要的核心概念准备一个测试的工程定义资源定义规则sentinel运行原理本地文件定义规则整合nacos实现规则的远程读取规则的内容详解…

【C++初阶】构造函数和析构函数

文章目录 一、类的六个默认成员函数二、构造函数三、析构函数 一、类的六个默认成员函数 &#x1f4d6;默认成员函数 用户没有显式实现&#xff0c;编译器会自动生成的成员函数&#xff0c;称为默认成员函数。 构造函数&#xff1a;完成对象的初始化工作。析构函数&#xff…

在dell server的UEFI mode下指定ISO安装Ubuntu

1.重启系统 在蓝色界面出现提示后选择F2进入 然后保存设置即可

Linux系统部署Nginx详细教程(图文讲解)

前言&#xff1a;本篇博客记录了我是如何使用Linux系统一步一步部署Nginx的完整过程&#xff0c;也是我学习之路上的一个笔记总结&#xff0c;每一行代码都进行了严格的测试&#xff0c;特此做一个技术分享&#xff01; 目录 一、安装依赖 二、安装Nginx 三、配置Nginx 四、…