分析型数据库:分布式分析型数据库

news2024/10/5 19:18:42

分析型数据库的另外一个发展方向就是以分布式技术来代替MPP的并行计算,一方面分布式技术比MPP有更好的可扩展性,对底层的异构软硬件支持度更好,可以解决MPP数据库的几个关键架构问题。本文介绍分布式分析型数据库。

— 背景介绍—

目前在分布式分析型数据库领域,学术界今年的研究不多,主要是工业界在推动相关的技术发展。分布式分析型数据库的存储层一般采用分布式存储或云存储,而计算引擎层采用独立的分布式计算引擎,而MPP数据库的存储层和计算层都是由多个数据库实例来承担的,这是两者最大的架构区别。

在Hadoop开始兴起的时候,分布式架构的可扩展性和弹性优势就逐渐显现出来,以HDFS为代表的大数据技术使大数据的处理在扩展性、弹性、容错性、成本等方面取得进步,但是却牺牲了传统SQL数据库例如事务、SQL语句、关系模型、安全管控等关键特性。SQL作为数据库领域的事实标准语言,相比较用API(如MapReduce API,Spark API等)来构建大数据分析的解决方案有着先天的优势。从2013年开始大量的SQL on Hadoop引擎的出现和快速成熟,并且在国内外企业获得了大量生产落地,充分说明了SQL的重要性。

分布式分析型数据库用于数据仓库的建设,就需要解决分布式事务以及高并发的批处理问题,因此需要重新构建分布式事务引擎和计算引擎。当前行业内不同的数据库采用的技术方案不尽相同,分布式事务引擎大多需要从0到1的构建,而分布式计算引擎有采用类似DAG的计算模型。

分布式数据库与MPP数据库的一个典型区别就是计算和存储的部分分离,也就是存储服务和计算服务不再绑定在一个进程中,数量可以不一致,这样就实现了计算的弹性。在真实生产业务中,计算的弹性需求比较大,而存储相当来说可预测性更强。一些厂商采用自研存储的方式如星环科技的ArgoDB,而另外部分企业就直接基于云存储的方式来构建其数据库,将目标市场直接定位在公有云端,如AWS Redshift、Snowflake和Databricks SQL。不过私有云和公有云场景下的分析型数据库的设计理念差异非常大,实际架构区别也非常明显,我们将在后续章节展开。

— 总体架构 

由于分布式数据库起步较晚,设计者在做架构设计的时候就能充分吸收MPP数据库和Hadoop等技术的优势,避开MPP数据库的架构缺陷,并且解决弹性化、多租户隔离等方面的各种问题。分布式分析型数据图的逻辑架构如下图所示,主要包含了服务层、SQL引擎、分布式事务引擎、分布式计算引擎和存储引擎。与MPP数据库的逻辑架构最主要的区别在于计算引擎和存储引擎独立,而MPP数据库底层基于某一种关系数据库,包含了SQL、事务、计算和存储能力。由于几个引擎相对独立,架构上的灵活性就保证了有多种方式可以解决原有MPP数据库的架构问题。

 

  • 分布式存储引擎

在分布式存储引擎这一层,目前行业内有比较多的基于Paxos或Raft协议打造的高可用的分布式存储。由于用于分析型场景,数据存储格式一般都采用列式数据存储,典型的实现有ORC和Parquet文件格式。在分析场景下仅读取需要的列数据而无需读取其他不相关列,节省了IO从而有很高的数据读吞吐;另外一个列的数据采用同样的编码方式(如RLE、Delta、字典编码等),因此数据有很高的数据压缩率,一般可以做到5~10x的压缩比。另外,由于不同的列已经分开存储,一般会设计并行读数据的API,每个线程读取不同的列数据,从而提高并行读数据能力。基于列式存储的另外一个好处就是更好的支持各种结构化和非结构化数据,从而可以在一个平台内支持多样的数据类型的数据分析。

 

列式存储对读数据有很大的性能优势,一般都会设计接口跟上层的计算层对接,提供读取、过滤下推、索引等读写接口。在支持数据写入的能力上,列式存储不如行式存储,一般需要通过在上层增加一个内存buffer的方式来加速,如MariaDB的Version Buffer。

另外分布式事务也是分布式存储的一个重要特性与要求,一般都采用MVCC和Compaction机制来实现。在列式存储中去修改给定一行的数据是比较复杂的,因此在实际操作每个事务操作并不会直接修改对应的字段的值,而是在生成一个新的版本,并在对应字段的block生成一个只包含要修改的数据的新版本的数据块。每个新版本操作就生成一个新数据块,在读取数据的时候,会根据有效的事务号来读取相关的数据块并和基础数据合并生成最终的数据值。随着数据库的版本增加,数据读的速度会下降,因此需要启动Compaction机制来合并,将大量的多版本文件合并为少量的文件,从而实现读写能力的有效平衡。

 

在实际功能中,还需要考虑关于分布式管理和运维方面的能力,包括对磁盘或节点的增删管理能力,数据迁移能力等。

  • 分布式计算引擎

分布式计算引擎是另外一个重要的组成,一个优秀的引擎包括计算框架、各种分布式计算的算子、优化器以及资源管理能力。在计算框架方面,一般选择DAG或MPP模式,根据不同的设计需求来选择。在计算算子方面,围绕着SQL的原语,可以设计大量的算子,譬如JOIN算法就可以有包括hash join、sort merge join、index scan join、skew scan join等多种不同的实现,并对接到CBO优化器来做自动化的选择。这个方向的长期演进方向就是自治数据库,通过大量的优化规则和机器学习能力来产生针对用户场景的更多优化规则,从而让数据库可以自动的选择最合适的执行计划,无需DBA的手工干预。

在资源管理方面,如果跟现有的资源管理框架有效结合也是分布式数据库的重要工作之一,包括YARN、Kubernetes以及各个公有云平台。无论是Spark、Flink等开源资源管理框架,还是各个商业的分析型数据库,都在大力的推动资源管理模式的优化,从而更好的支持多租户以及与云计算的结合。

  • 分布式事务引擎

在分布式数据库领域,分布式事务处理和优化是非常热门的关键技术,如何在复杂的系统架构和容错设计下保证数据的一致性,以及有多种事务隔离级别的支持(串行化、可重复度、Read committed等),能够拓展数据库去支撑更多的应用。两阶段提交(2PC)、MVCC、基于快照的事务隔离等都是重要的技术实现。由于分析型数据库主要处理低并发度的事务操作,比较多的都是批量的数据修改或插入,因此对事务的并发度要求不高。在实现中,甚至可以采用一些低并发度但是实现简单的算法,如两阶段封锁(2PL)等算法。

  • SQL引擎

SQL引擎为开发者提供SQL开发能力,是业务开发的核心接口,因此各个数据库都在努力提供完善的SQL支持,以及完整的SQL优化能力。由于Oracle、Teradata等数据库的SQL功能非常完善,提供Oracle与Teradata的数据库兼容性是个非常有挑战的工作,也需要长期持续的投入。

— 星环分析型数据库ArgoDB 

随着大数据技术在企业中应用得越来越深,国内的企业数据架构变得越来越复杂,主要体现在离线业务与在线业务并存,分析型业务与检索型业务并存,结构化数据与非结构化数据并存,对数据库性能、多租户服务能力的要求也越来越高。企业对性能要求超过弹性或者成本,因此亟需有极致性能的分布式分析型数据库,这也是私有云领域分析型数据库的主要发展方向。

软件的设计需要充分考虑硬件的特性,从SAS硬盘,到SATA SSD,到PCIE-SSD,再到Memory,性能都有着数量级的增长,也推动着数据库架构的重新设计。在应用需求和技术架构的双重推动下,星环科技从2014年即开始规划不依赖于Hadoop存储的分析型数据库,重用已有的SQL、事务和分布式计算引擎的能力,自研新一代的基于闪存的分布式存储,到2018年正式推出了闪存数据库ArgoDB,目标能够作为数据仓库、数据湖和数据集市的统一解决方案。

 

ArgoDB的架构如上图所示,主要的核心组件主要包括分布式计算引擎Crux、SQL编译器、分布式存储管理层TDDMS以及存储引擎Holodesk。

SQL编译器继承了Inceptor产品的优秀能力,实现了SQL 99的完整兼容性,支持PL/SQL以及DB2 SQL PL存储过程规范,并且原创的支持了Oracle、DB2和Teradata的方言。为了满足企业的数仓需求,ArgoDB也支持分布式事务管理和四种隔离级别。

ArgoDB在数据库内部实现了自己的资源调度以更好的支持不同业务的并发SQL任务,并与平台本身的调度系统结合,实现了两个层级的更加细化的资源管理和调度能力。首先ArgoDB有个常驻服务,数据库启动后就预先申请了CPU和内存资源,并将资源划分为多个资源池。除了基于FIFO或FAIR策略为每个SQL分配资源以外,ArgoDB还增加了一个Furion机制,基于一个树形的结构来资源管理,同一个树节点下的各个子节点允许资源互借资源,每个树节点允许不同的用户或者应用设定ACL或affinity,实际调度的时候,只要有一个CPU core资源空闲,就调度某个task,最大程度的让资源有效利用。为了更好的支持多业务,ArgoDB允许根据用户名、IP、业务类型、提交时间等特性来设定不同的优先级和调度策略,允许抢占式调度。另外每个资源池都保证最小的资源,从而避免饥饿调度问题。

 

ArgoDB将分布式存储引擎解构为通用分布式存储管理层TDDMS与底层存储引擎Holodesk两块。TDDMS将底层存储引擎抽象为一组接口,包括存储的读写操作接口、事务操作接口、计算引擎的优化接口等,任何实现这些接口的存储引擎都能以插件的形式接入ArgoDB。TDDMS基于分布式一致性协议Raft实现的存储引擎,利用它可以实现存储引擎管理的高可用和备份灾备能力,并且提供运维管理能力。由于TDDMS在设计上的使用了数据存储的引擎化管理,它能够接入新的专用存储,从而解决了对Hadoop生态技术的依赖问题。TDDMS在设计上可以接入多模态的存储,既而与上层计算引擎配合,实现多模态的统一存储和统一分析能力,在实际业务中是个重要的创新,避免每个数据库都要垂直的实现存储管理的工作。

 

Holodesk通过基于闪存的行列混合存储,针对闪存SSD强大的随机IO能力,以及优于普通HDD盘顺序读写能力,做了数据读写的专项优化,实现了数据快速的读写能力,进而可以是业务获得更优秀的分析能力。Holodesk也支持多种辅助索引技术,支持数据块级别的预先聚合,极大地增强了数据的检索性能,能更好地适配混合型的业务场景。但Holodesk并不仅仅只能使用SSD,也支持内存+闪存+磁盘的三级混合存储。多级存储使得用户可以更好的在性能和硬件预算间找到平衡点。

 

分布式计算引擎Crux是一个向量化的计算引擎,采用的基于DAG模式的计算框架,内部由多个无状态的执行器组成,可以根据业务负载来调整计算弹性化。计算引擎既可以快速读取批量存储文件,也可以高速地运行少量数据的简单查询和复杂查询。内存数据格式的设计与列式存储适配,最大程度地减少了数据在内存中转换的时间。同时,能够动态分析SQL结构,基于向量化的思想选取高效的运行时行列对象模型,在提升性能的同时显著节省内存使用。ArgoDB的整体的业务查询架构如下所示,用户的SQL业务经过SQL编译器生产执行计划和Runtime Context,然后发送给Crux Executor;Executor通过TDDMS来访问存储层的数据,其中F1/F2/F3/F4等都代表一个数据块,Holodesk默认采用3副本方式存储,然后经过TDDMS Tablet Server来访问本地文件系统上的存储的实际数据块。

 

Crux Executor和TDDMS存储是独立分层的,它们各自可以根据负载情况来独立的弹性扩缩容,因此解决了可扩展性问题,尤其是计算的可扩展。未来,我们计划将TDDMS Tablet Server与各个云平台对接,可以直接与云上的文件系统高速交互打造云上的数据分析能力,服务于公有云的企业客户。ArgoDB本身实现了数据库内的资源管理,底层基于容器技术和Kubernetes做系统层的资源调度,通过两层资源调度机制实现了非常好的多租户能力。

 

基于先进的架构设计与规划,ArgoDB在2年内也落地了大量的金融级生产案例。此外,在国际基准组织TPC的数据分析决策测试TPC-DS的测试中,星环Inceptor是国际上首个通过测试的产品,而ArgoDB是全球第四个,这也充分说明了整体架构的先进性。

— 小结—

本文介绍了分布式分析型数据库的架构原理,以及星环分析型数据库ArgoDB的核心能力。分布式数据库相比于MPP数据库能够实现存算分离,这样就能实现了计算的弹性。那么更进一步的,在传统的企业数据运用中,常常会出现企业的系统数据散落在各个数据存储中的状况,数据分析需求往往是跨库的,这类需求又该如何解决呢?下一篇将介绍数据联邦架构。

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

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

相关文章

人工智能前沿——「全域全知全能」人类新宇宙ChatGPT

🚀🚀🚀OpenAI聊天机器人ChatGPT——「全域全知全能」人类全宇宙大爆炸!!🔥🔥🔥 一、什么是ChatGPT?🍀🍀 ChatGPT是生成型预训练变换模型(Chat G…

springBoot --- mybatisPlus自动生成代码

mybatisPlus自动生成代码mybatisPlus自动生成代码pom.xmlapplication.yml自动生成代码测试主启动类生成目录结果使用插件 --- 版本要求:3.4.0 版本以上pom.xml更新mybatisplus插件版本mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.…

离散数学_九章:关系(2)

关系9.2 n元关系及其应用 1、n元关系,关系的域,关系的阶2、数据库和关系 1. 数据库 2. 主键 3. 复合主键 3、n元关系的运算 1. 选择运算 (Select) 2. 投影运算 (Project) 3. 连接运算 9.2 n元关系及其应用 n元关系:两个以上集合的元素间…

网络安全从业人员应该如何提升自身的web渗透能力?

前言 web 渗透这个东西学起来如果没有头绪和路线的话,是非常烧脑的。 理清 web 渗透学习思路,把自己的学习方案和需要学习的点全部整理,你会发现突然渗透思路就有点眉目了。 程序员之间流行一个词,叫 35 岁危机,&am…

Amazon SageMaker测评分享,效果超出预期

一、前言随着科技的进步和社会的发展,人工智能得到了愈加广泛的重视,特别是最近大火的Chatgpt,充分展现了研发通用人工智能助手广阔的研究和应用前景。让越来越多的组织和企业跟风加入到人工智能领域的研究中,但机器学习的实施是一…

项目---基于TCP的高并发聊天系统

目录 服务端 服务端视角下的流程图 一、数据库管理模块 1.1 数据库表的创建 1.2 .对于数据库的操作 1.2.1首先得连接数据库 1.2.2执行数据库语句 1.2.3 返回数据库中存放的所有用户的信息 1.2.4返回数据库中存放的所有用户的好友信息 二、用户管理模块 2.1、UserInfo类&…

深度学习和人工智能之间是什么样的关系?

深度学习与人工智能概念的潜在联系,我们依然借助维恩图来说明,如图4.1所示。 1、人工智能 “人工智能”这个概念新鲜时髦但又含混模糊,同时包罗万象。尽管如此,我们仍尝试对 人工智能进行定义:用一台机器处理来自其周围环境的信息,然后将这些…

学习系统编程No.10【文件描述符】

引言: 北京时间:2023/3/25,昨天摆烂一天,今天再次坐牢7小时,难受尽在不言中,并且对于笔试题,还是非常的困难,可能是我做题不够多,也可能是没有好好的总结之前做过的一些…

15.transformer全解

欢迎访问个人网络日志🌹🌹知行空间🌹🌹 文章目录1.基础介绍2.网络结构2.1 Input/Output Embedding2.2 自注意力机制 self-attention2.3 point-wise全连接层2.4 位置编码 Position Encoding3.输入处理过程示例4.代码实现1.基础介绍…

论文阅读和分析:Hybrid Mathematical Symbol Recognition using Support Vector Machines

HMER论文系列 1、论文阅读和分析:When Counting Meets HMER Counting-Aware Network for HMER_KPer_Yang的博客-CSDN博客 2、论文阅读和分析:Syntax-Aware Network for Handwritten Mathematical Expression Recognition_KPer_Yang的博客-CSDN博客 3、论…

自然语言处理(七): Deep Learning for NLP: Recurrent Networks

目录 1. N-gram Language Models 2. Recurrent Neural Networks 2.1 RNN Unrolled 2.2 RNN Training 2.3 (Simple) RNN for Language Model 2.4 RNN Language Model: Training 2.5 RNN Language Model: Generation 3. Long Short-term Memory Networks 3.1 Language M…

论文阅读【14】HDLTex: Hierarchical Deep Learning for Text Classification

论文十问十答: Q1论文试图解决什么问题? 多标签文本分类问题 Q2这是否是一个新的问题? 不是 Q3这篇文章要验证一个什么科学假设? 因为文本标签越多,分类就越难,所以就将文本类型进行分层分类,这…

【人工智能与深度学习】判别性循环稀疏自编码器和群体稀疏性

【人工智能与深度学习】判别性循环稀疏自编码器和群体稀疏性 判别类循环稀疏自编码器 (DrSAE)组稀疏组稀疏自编码器的问与答图像级别训练,无权重分享(weight sharing)的局域过滤器 (local filters)判别类循环稀疏自编码器 (DrSAE) DrSAE的设计结合了稀疏编码(稀疏自编码器)…

数据库并发控制基本概念和基本技术

并发控制与基本技术一、并发控制1. 概述2. 并发访问可能出现的问题二、并发控制的主要技术1、基本技术2、封锁及锁的类型2.1、什么是封锁2.2、基本封锁类型2.2.1、排它锁(Exclusive Locks,简记为 X 锁)2.2.2、共享锁(Share Locks&…

基于ArkUI框架开发-ImageKnife渲染层重构

ImageKnife是一款图像加载缓存库,主要功能特性如下: ●支持内存缓存,使用LRUCache算法,对图片数据进行内存缓存。 ●支持磁盘缓存,对于下载图片会保存一份至磁盘当中。 ●支持进行图片变换:支持图像像素源图…

【SSconv:全色锐化:显式频谱-空间卷积】

SSconv: Explicit Spectral-to-Spatial Convolution for Pansharpening (SSconv:用于全色锐化的显式频谱-空间卷积) 全色锐化的目的是融合高空间分辨率的全色(PAN)图像和低分辨率的多光谱(LR-MS&#xff…

【微服务】6、一篇文章学会使用 SpringCloud 的网关

目录一、网关作用二、网关的技术实现三、简单使用四、predicates(1) 网关路由可配置的内容(2) 路由断言工厂(Route Predicate Factory)五、filters(1) GatewayFilter(2) 给全部进入 userservice 的请求添加请求头(3) 全局过滤器 —— GlobalFilter(4) 过…

PX4从放弃到精通(二十七):固定翼姿态控制

文章目录前言一、roll/pitch姿态/角速率控制二、偏航角速率控制三、主程序前言 固件版本 PX4 1.13.2 欢迎交流学习,可加左侧名片 一、roll/pitch姿态/角速率控制 roll/pitch的姿态控制类似,这里只介绍roll姿态控制, 代码位置: …

如何确定NetApp FAS存储系统是否正常识别到了boot device?

近期处理了几个NetApp FAS存储控制器宕机的案例,其中部分有代表性的就是其实控制器并没有物理故障,问题是控制器里面的boot device的SSD盘出现了问题。这里给大家share一下如何确定系统是否成功识别到了boot device设备。 对于很多非专业人士来说&#…

mongodb使用docker搭建replicaSet集群与变更监听

在mongodb如果需要启用变更监听功能(watch),mongodb需要在replicaSet或者cluster方式下运行。 replicaSet和cluster从部署难度相比,replicaSet要简单许多。如果所存储的数据量规模不算太大的情况下,那么使用replicaSet方式部署mongodb是一个…