首页 > 其他分享 >云时代已至,新一代数据分析平台是如何实现的?

云时代已至,新一代数据分析平台是如何实现的?

时间:2023-12-02 11:31:36浏览次数:42  
标签:数据分析 事务 已至 PieCloudDB 查询 新一代 集群 数据 分布式

2023年5月,由 Stackoverflow 发起的2023年度开发者调查数据显示,PostgreSQL 已经超越 MySQL 位居第一,成为开发人员首选。PostgreSQL 在国内的热度也越来越高。6月17日,PostgreSQL 数据库技术峰会在成都顺利召开。本次大会以“新机遇、新态势、新发展”为主题,邀请众多行业大咖参与本次活动。PieCloudDB 产品总监陈金豹也受邀在大会中发表演讲《云原生虚拟数仓 PieCloudDB 的架构和关键模块实现》。 

随着云计算时代的到来,云平台提供了近似无限丰富的计算资源,同时也使得计算成本极大的降低,释放出数据计算产生智能的更多机会。早在2019年,Gartner 便做出预测:数据库市场的未来在云上。随着云计算技术的发展,企业也都在向这一趋势靠拢,越来越多的将自己的业务数据往云上迁移。我们相信数据库的未来在云上,这也是我们打造 PieCloudDB Database 这款云原生数据仓库的原因。

PieCloudDB 于2022年10月正式问世。它是一款云原生分布式数据仓库,提供完备的 SQL 语言支持,高效的分布式计算能力和完备的事务支持。同时又实现了单一数据集的多集群,秒级的弹性和只为必要的计算和存储付费的能力。 



1. Why We Need PieCloudDB?

1.1 NoSQL 和数据湖已不能满足用户的分析需求

在过去的很长一段时间里,NoSQL + 数据湖解决方案在数据分析领域占据了主流市场,而 Hadoop、HDFS 等 NoSQL 数据库也是主要的数据分析平台。然而,随着 Cloudera 宣布停止对 CDH 技术支持,对 Hadoop 等 NoSQL 平台的质疑声音也越来越大。

这一现象正是因为 NoSQL + 数据湖体系在复杂查询支持、高并发隔离性和一致性等重要数据分析特性方面存在明显不足,现有基于标准 SQL 的 BI 工具难以集成,且 NoSQL 本身对高级分析(如图形分析、地理信息分析等)的支持较弱。因此,NoSQL 开始被人们贴上“过时”的标签,不再占据数据分析领域的主要市场份额。 

此外,基于 NoSQL 和数据湖的基础设施所需的分析工具不容易集成和部署。使用数据湖进行数据分析需要整合部署多个组件,而这需要大量的开发工作。由于缺乏对 ANSI SQL 的支持,用户通常需要具备专门的技术技能,并且需要承担较高的技术和成本要求。此外,平台所需的专用引擎/工具(如图形数据库)往往难以与记录系统集成,降低了数据分析的可操纵性和创新性。

这些限制和挑战推动了对更强大、更易于集成、更易于使用的数据分析平台的需求。企业和组织越来越倾向于采用基于标准 SQL 的分析平台,这些平台能够满足用户广泛的分析功能、易于集成和部署等需求,并且与现有的数据存储和处理技术相兼容,对技术和成本的要求更低。

1.2 以关系型数据库为基础的数据仓库很难适应云环境

包括 Teradata、Greenplum 等众多主流传统数据仓库都是以关系模型来组织数据的关系型数据库。这些数据仓库具有许多优点,包括良好的 SQL 兼容性、高效运行复杂查询以及支持事务 ACID 特性。然而,这些传统的 MPP 数据库也存在一些缺陷,例如弹性性能较差、高可用性方面不够满足要求、数据孤岛等问题。

这些问题导致传统的数据仓库在云环境中无法充分利用公有云的优势。公有云相对于私有环境具有许多优势,其中最显著的两个是:

  • 近乎无限的弹性计算资源:公有云提供了弹性计算资源,用户可以根据实际需求按需分配资源,并根据需要进行弹性扩缩容。用户可以根据业务需求申请所需的计算资源,而不需要维护和管理自己的硬件基础设施。
  • 廉价且无限容量的对象存储:公有云提供廉价且具有几乎无限容量的对象存储。对象存储的价格相对较低,可以为用户提供大规模的存储容量,帮助用户降低成本并提高效率。 

为了更好地适应云环境并充分利用公有云的优势,新一代的数据仓库逐渐崛起。新一代云原生数据仓库具有云原生的架构设计,能够更好地利用公有云的弹性计算和对象存储能力。它们可以在公有云中快速部署和扩展,并提供高性能的数据处理和分析能力,以满足现代数据分析的需求。 

1.3 一个兼顾关系型数仓和公有云优势的产品

用户需要一个能够兼顾关系型数仓和公有云优势的产品,来适应云时代的到来。计算引擎方面,需要具有关系型数仓的众多优势,能够具备支持完备的 SQL 语言,具有高效的分布式计算能力,且能够具有完备的事务 ACID 特性。公有云特性方面,实现存算分离,提供弹性的计算集群,让用户得以只为必要的计算付费,充分利用公有云带来的优势。这就是 PieCloudDB 的设计目标。



2. PieCloudDB 能给用户带来什么?

作为新一代的云原生数据仓库,PieCloudDB 实现了云上数仓计算与存储的分离,兼顾了传统关系型数仓的众多优势和公有云带来的众多利好。

2.1 对 SQL 的完备支持

PieCloudDB 进行了重大改进,实现了分布式计算和存算分离的功能。并对锁、事务、日志、系统表和用户表的存储等模块进行了彻底重写,带来了颠覆性的变革。同时,PieCloudDB 也支持完整的 SQL 标准,包括复杂查询如聚合(Agg)、子计划(Subplan)、子链接(Sublink)、外连接查询(Outer Join)、窗口聚合函数(Window agg)和物化视图(Materialized View)等。这些改进使得 PieCloudDB 能够提供更高效、更强大的查询功能,同时保持与 SQL 标准的兼容性。

2.2 高效的查询优化和与之匹配的执行器

PieCloudDB 实现了专为复杂查询设计的优化器和与之匹配的高效执行器。

  • 专为复杂查询设计的优化器

PieCloudDB 的优化器提供了一系列全面的逻辑优化功能,其中包括谓词下推、子查询子连接提升和外连接消除等。此外,优化器基于纯粹的代价模型进行深度优化,在多阶段聚集过程中对每个节点进行代价估算,并利用动态规划等算法生成多条路径,最终选择代价最低的路径来执行查询。这些功能旨在提高查询性能和效率,从而优化 PieCloudDB 的查询执行过程。

作为一款分布式数据库,PieCloudDB 需要实现众多分布式运算,包括多次数据重分布(reshuffle)和分布式聚合运算(agg)。为了能够在跨表查询时进行高效的分布式表连接,PieCloudDB 的优化器需要全面描述数据分布特性,以便进行分布式代价估算。

通过全面的数据分布特性描述,PieCloudDB 的优化器能够考虑到数据在不同节点上的分布情况,从而更准确地估算跨表查询的代价。这使得优化器能够生成高效的查询计划,避免不必要的数据重分布操作,提高查询性能和效率。

  • 分布式环境高效执行器

为了配合专为复杂查询设计的优化器,PieCloudDB 实现了高效的执行器,以在分布式环境下执行查询操作。通过采用多组别多阶段执行模型,并进行大量的数据交换,PieCloudDB 的执行器能够在分布式环境下高效地执行查询操作。这种执行模型可以充分利用分布式系统的计算资源,并提高查询的并行性和整体性能。同时,通过与优化器的紧密配合,PieCloudDB 可以根据优化器生成的查询计划特性来优化执行器的执行策略,进一步提高查询性能和效率。

2.3 对事务(ACID)的完备支持

PieCloudDB 提供了对事务的完备支持,包括事务的 ACID 特性:原子性、一致性、隔离性和持久性。

  • 原子性(Atomicity):PieCloudDB 确保事务中的操作要么全部成功完成,要么全部失败回滚。如果一个事务中的某个操作失败,那么该事务中的所有操作都将被回滚,数据库状态会回到事务开始之前的状态,保持数据的一致性。
  • 一致性(Consistency):PieCloudDB 在事务提交之前,会检查事务的操作是否符合预定义的约束和规则,以确保数据库的一致性。如果事务执行完成后,数据库仍然保持一致性,那么该事务被认为是成功的。
  • 隔离性(Isolation):PieCloudDB 支持两个常用的隔离级别:Read Committed(读提交)和 Repeatable Read(可重复读)。在 Read Committed 级别下,事务只能看到其他事务已经提交的修改,而在 Repeatable Read 级别下,事务在整个事务过程中能够看到一个一致的快照,不受其他并发事务的修改影响。
  • 持久性(Durability):PieCloudDB 确保一旦事务提交成功,其对数据库的修改将永久保存,即使发生系统故障或崩溃。这是通过将事务日志记录在稳定的存储介质上来实现的,以便在恢复过程中可以重放事务日志。

通过提供对事务 ACID 特性的完备支持,PieCloudDB 提供了可靠和一致的数据管理机制。无论是在并发环境中还是在面临故障的情况下,PieCloudDB 都能确保数据的完整性和可靠性。

2.4 极致的计算集群弹性

PieCloudDB 具备极致的计算集群扩缩容能力,能够实现计算集群快速的扩展和收缩操作。PieCloudDB 的 Executor 节点并不持有持久化的数据,扩展和收缩操作不涉及数据的移动。此外,Executor 节点也不直接访问系统表、事务和锁。在进行计算集群的扩展时,PieCloudDB 只需要在新的虚拟机节点上部署二进制并向元数据服务注册。这样的设计确保了扩缩容操作的高效性。

PieCloudDB 为用户提供了一个独立的计算池,该计算池是为了支持快速的扩缩容而准备的。在这个计算池内,PieCloudDB 可以在一定范围内实现秒级的扩容和收缩操作。这意味着当用户需要增加计算资源时,PieCloudDB 可以迅速添加新的计算节点,使得整个集群能够处理更多的并发请求。反之,当用户需要减少计算资源时,PieCloudDB 也能够快速地收缩计算节点,以节省成本和资源。

云时代已至,新一代数据分析平台是如何实现的?_公有云

2.5 多集群与高可用

PieCloudDB 支持多集群。用户可以在同一个数据集上起多个集群。在生产环境中,常常会遇到不同的部门对集群大小的需求不一样。这种情况下,如果只有单集群,就需要根据最大的集群需求来创建集群,造成资源的浪费。在多集群场景下,不同部门可根据自身需求创建不同大小的集群,任务结束时可以关闭集群,多个集群访问同一个数据集,并共享同一个 ACID 特性。

由于 PieCloudDB Executor 是无状态的,当某个 Executor 出现故障,Coordinator 会执行下个 Query 时,由剩下的 Executor 来执行任务。此过程中,用户无感知,不会对业务产生影响。

通过这些特性,PieCloudDB 在 OLAP 场景下,可以让用户只需为已经发生的计算和存储付费。用户可以按需启动和关闭多个不同大小的集群,以适应不同类型的任务,从而取得性能和开发效率的平衡。



3. PieCloudDB 云原生架构的实现

为了适应云环境,PieCloudDB 实现了弹性伸缩的集群和多集群这两个主要的云原生特性,打造了完全无状态的 Executor 节点、独立的系统表和分布式的锁。

3.1 虚拟数仓

PieCloudDB 为了实现在扩缩容过程中无需移动数据,将用户数据分离到对象存储中。此外,Executor 节点上不存储系统表、事务和锁信息,而是依赖 Coordinator 来解决这些问题,从而使 Executor 节点成为无状态的节点,实现秒级扩缩容。

为了实现 Multi-master 架构,并实现有状态的 Coordinator 节点,PieCloudDB 使用元数据服务来完成这些功能。系统表以 Key-Value 的形式存储在 KV 数据库 FoundationDB 中,并通过 FoundationDB 的短时间、小体量的事务特性,实现了分布式锁和分布式事务。这样,PieCloudDB 能够在Coordinator 节点上处理分布式锁和事务,并保证系统的一致性和可靠性。

通过这一系列的设计和操作,PieCloudDB 实现了完全无状态的虚拟数仓。用户可以根据需要创建和关闭虚拟数仓,而在扩缩容过程中无需移动数据,并且能够快速进行节点的扩展和收缩。这使得 PieCloudDB 能够高效地适应不同规模和负载的需求,并提供灵活的数据存储和计算资源管理。

  • 系统表:mStore

PieCloudDB 将元组以 Key-Value 的形式存储到 FoundationDB 中,并利用FoundationDB Key 的自然排序来实现索引。在 PieCloudDB 中,每个元组都被编码为一个 Key-Value 对,其中 Key 表示元组的索引信息,而 Value 则包含了元组的数据内容。通过利用 FoundationDB Key 的自然排序,可以高效地进行范围查询和索引查找,从而实现快速的数据检索和访问。

为了实现多版本并发控制,PieCloudDB 使用了 Xmin、Xmax 和 cid 等机制。Xmin 和 Xmax 记录了事务对元组的可见性信息,其中 Xmin 表示最早可见的事务,而 Xmax 表示最晚可见的事务。cid(Commit ID)则表示事务的提交标识。通过这些机制,PieCloudDB 可以实现并发事务的隔离性和一致性,并支持多版本的查询和回滚操作。

通过将元组存储为 Key-Value 对,利用 FoundationDB 的自然排序和采用 MVCC 机制,PieCloudDB 能够高效地处理数据的存储、索引和并发访问,从而提供高性能和可靠的数据库服务。

  • 数据表:oStore

PieCloudDB 通过将数据分离到对象存储(如S3)上,利用 oStore 构建了对象存储上的用户表。由于对象存储本身只支持插入(insert)和删除(delete)操作,而不支持更新(update)和追加(append)操作。PieCloudDB 在 mStore 中创建辅助表来实现 MVCC(多版本并发控制)的特性。

在 mStore 的辅助表中,每 个 tuple 对应 oStore 的一个 block,oStore 的 block 中存储了一部分的用户数据。这样,辅助表的每个 tuple 的可见性就与对应的 block 的可见性相关联,从而实现了 MVCC 的特性。当执行更新(update)或删除(delete)操作时,PieCloudDB 会生成一个新的 block,将未发生变化的 tuple 放入新的 block 中,并将更新后的用户数据放入新的 block 中(例如,在 block 4 上执行更新操作后,生成一个新的block 5,将更新后的用户数据放入新的 block 5 中)。最后,辅助表将完成更新(update)操作。 

通过这种设计和操作,PieCloudDB 能够在对象存储上实现 MVCC 特性,并通过辅助表来管理数据的版本和可见性。这使得 PieCloudDB 能够支持更新和删除操作,同时保持数据的一致性和并发控制的正确性。

云时代已至,新一代数据分析平台是如何实现的?_nosql_02

  • 分布式锁和事务

PieCloudDB 利用 FoundationDB 的事务提交冲突(commit conflict)机制来实现锁的共享区的正确访问,从而实现了分布式的锁。

在 PieCloudDB 中,多个事务需要访问共享区时,它们会通过 FoundationDB 的事务机制进行竞争和协调。每个事务尝试获取锁并执行对共享资源的操作。如果多个事务同时请求同一个共享锁,FoundationDB 的事务提交冲突机制会确保只有一个事务能够成功获取锁并进行操作,而其他事务将被阻塞或回滚。

通过利用 FoundationDB 的事务提交冲突机制,PieCloudDB 能够实现分布式的锁管理,确保对共享区的正确访问和资源的互斥操作。这种机制保证了多个事务之间的隔离性和一致性,避免了数据竞争和冲突的发生,并提供了可靠的分布式锁功能。

此外,PieCloudDB 还在 FoundationDB 上实现了分布式的事务,并通过 mStore、oStore、分布式锁和事务的实现,构建了一个云原生的分布式架构。这样的架构能够提供高可靠性、高性能的数据库服务,并支持分布式的数据操作和管理。

优秀的架构设计是一款数据库产品成功的第一步,OpenPie 研发团队将对 PieCloudDB 产品进行不断迭代,针对性能推出了聚集下推、预计算、Block Skipping 等功能,并很快将推出Time Travel、Branch、Data Sharing等系列提高用户的使用体验。PieCloudDB 将继续前进,在 eMPP 分布式专利技术、服务器无感知(Serverless)及 透明数据加密(TDE)等多项核心技术加持下,为企业构建高安全性,高可靠性,高可用性的「坚如磐石」的云原生虚拟数仓,助力企业实现数据价值最大化,欢迎关注! 

 

 


 

云时代已至,新一代数据分析平台是如何实现的?_数据库_03

 

 

 

标签:数据分析,事务,已至,PieCloudDB,查询,新一代,集群,数据,分布式
From: https://blog.51cto.com/u_16396625/8654481

相关文章

  • 「拓数派(OpenPie)2022发布会实录 」PieCloudDB Database 新一代云原生存储引擎
    10月24日程序员节,拓数派「OpenPie」发布了云原生数据库PieCloudDBDatabase社区版与企业版。通过重新打造云上的数据库内核,突破了PC时代计算平台的限制,实现云上存算分离。PieCloudDB基于云的基础设施,专为云平台打造。本文整理自拓数派「OpenPie」2022发布会的演讲,将为大家着重介......
  • 拓数派发布新一代云原生虚拟数仓PieCloudDB
    3月14日,2023拓数派「InfinitePossibilities」战略暨新产品发布会在上海圆满落幕,拓数派创始人兼CEO冯雷(RayVon)重磅发布基于新一代云原生数仓虚拟化打造的全新PieCloudDB「云上云」版。拓数派COO陆公瑜、拓数派CTO郭罡、东吴证券投行部联席总经理席平健博士,元禾重元合伙人张文敏,阿......
  • 极狐GitLab—新一代源代码管理仓库
    产品概述    极狐GitLab是一款具有软件开发全生命周期的DevOps能力的新一代源代码管理仓库,无缝集成代码托管、敏捷管理、CI/CD,从需求管理到应用上线能够形成数据的完整串联。极狐GitLab具有高可用可扩展的架构特点,可提供万人规模的架构行业实践参考和专业服务支持;提供专业......
  • 蛋白质组学原理与数据分析合集
    最近看到微信公众号:“生物信息与育种”的文章阅读量太低了,粉丝量基础也很少。可能是做动植物基因组和育种相关工作的人员基数相对较少,而且我也没有主动去推。于是想着把以前做的的蛋白质组学部分笔记迁移到公众号上,一是为内容备份,二是为增加粉丝和阅读量。不过这些笔记是几年前的......
  • CRM系统数据分析与报表功能对公司来说重要吗?
     竞争日益激烈,企业需要更加高效地管理客户关系,以获取更多的商机。为此,许多企业选择使用CRM系统。在CRM中,数据分析功能扮演着重要的角色。下面就来详细说说,CRM系统数据分析与报表功能对企业来说重要吗?一、CRM数据分析与报表为什么重要?在CRM中,与客户通过多种渠道联系沟通。当客......
  • [办公自动化]数据分析之如何提问
    人们一想到数据分析,就想到python,想到excel。其实数据分析,最基本的是你要知道如何提问。从数据来提问,我们可以着眼于时间、数量。从时间维度,我们可以提出如下问题:1、大致就是同比、环比的概念。去年同期怎么样?上个月怎么样?2、我们可以按月度、季度、年度来对比数据。我们一年......
  • Minitab 2021:让数据分析变得更简单,更直观 win版
    Minitab2021是一款广受欢迎的统计分析管理软件,它为用户提供了强大的数据处理和分析能力,适用于各种行业和领域。通过Minitab2021,用户可以轻松应对各种数据分析挑战,从基本的统计分析到复杂的数据挖掘,都能得到准确、可靠的结果。点击获取Minitab2021Minitab2021的界面简洁......
  • 作为数据分析人员,怎么才有数据分析思路?
    作为数据分析人员,拥有清晰的数据分析思路是非常重要的。下面我将为您详细描述如何培养数据分析思路,包括问题定义、数据收集、数据清洗和整理、探索性数据分析、模型建立与评估等方面。1.问题定义确定清晰的分析目标:明确需要解决的问题是什么,例如市场调研、用户行为分析、产品......
  • 通过Python进行文本数据分析和自然语言处理
    在当今信息时代,文本数据已经成为获取和传递信息的重要方式之一。而Python作为一种功能强大的编程语言,可以利用其丰富的文本分析库和自然语言处理工具,对文本数据进行有效的挖掘和分析。本文将介绍如何使用Python进行文本数据分析和自然语言处理。1.文本数据预处理在进行文本数据分析......
  • 大数据分析/机器学习基础之matplotlib绘图篇
    目录一、前言我的运行环境二、什么是matplotlib?三、安装及导入四、matplotlib的使用一、前言本人因在学习基于python的机器学习相关教程时第一次接触到matplotlib相关方面的绘图知识,故写此笔记进行记录,如果能帮助到其他人欢迎点个赞......