NoETL | 数据虚拟化如何在数据不移动的情况下实现媲美物理移动的实时交付?

在我们之前的文章中,我们回顾了Denodo在逻辑数据仓库和逻辑数据湖场景中所使用的主要优化技术(具体内容请参阅之前的文章)。

数据架构 | 逻辑数据仓库与物理数据仓库性能对比_物理数仓、逻辑数仓-CSDN博客文章浏览阅读1.5k次,点赞33次,收藏28次。在逻辑数据湖和逻辑数据仓库方法中,数据虚拟化系统在多个数据源之上提供统一的查询访问和数据治理功能(见图1)。这些数据源通常包括一个或多个物理数据仓库、Hadoop 集群、SaaS 应用程序以及其他数据库。两种方法的主要区别在于:逻辑数据湖更强调 Hadoop 的作用,而逻辑数据仓库则更偏向传统的 BI(商业智能)流程。在“逻辑数据仓库”和“逻辑数据湖”方法中,数据虚拟化系统在多个数据源之上提供统一的报表与治理功能。_物理数仓、逻辑数仓 https://blog.csdn.net/Denodo/article/details/145004420?spm=1001.2014.3001.5501数据查询优化策略: 全聚合下推、分区剪枝、部分聚合下推以及动态数据迁移_查询 数据下推-CSDN博客文章浏览阅读1.5k次,点赞42次,收藏26次。关于数据虚拟化在逻辑数据仓库和逻辑数据湖架构中查询优化的实际应用示例。全聚合下推、分区剪枝、部分聚合下推以及动态数据迁移_查询 数据下推 https://blog.csdn.net/Denodo/article/details/145002597?spm=1001.2014.3001.5501数据湖与逻辑数据仓库的兴起:迈向 NoETL 数据虚拟化时代-CSDN博客文章浏览阅读1.6k次,点赞42次,收藏46次。逻辑数据仓库通过数据虚拟化技术,为企业提供了一种灵活、实时且高效的数据管理方案,帮助企业摆脱数据孤岛的困扰,提升跨部门协作的效率,并在竞争激烈的市场中保持敏捷性。 https://blog.csdn.net/Denodo/article/details/145014913?spm=1001.2014.3001.5501

我们还提供了真实数据,证明如果数据虚拟化系统为每个查询采用正确的优化技术,逻辑架构的性能可以媲美传统物理架构。

但是,数据虚拟化(DV)系统如何为每个查询选择合适的优化技术呢?

答案是基于成本的优化:针对一个查询,DV系统会生成一组候选执行计划,估算它们的成本,并选择成本估算最低的计划。

这听起来与关系数据库的查询优化方式非常相似。实际上,大多数DV系统(以及一些大数据厂商商业化的“数据虚拟化”扩展)依赖于传统的数据库成本估算方法,仅进行了微小调整。然而,这通常会导致较大的估算误差,因为传统方法设计用于单一系统场景,而数据虚拟化查询需要整合多个异构数据源的数据。而Denodo的成本估算过程从零开始设计,专门考虑了DV系统中查询执行的特性。

为了说明DV系统需要考虑的成本因素,图1和图2展示了一个查询的两个候选执行计划。该查询整合了存储在传统数据库中的产品数据与存储在并行数据库中的销售数据,目的是获取过去9个月中每个产品应用的最大折扣。折扣是通过从产品数据库中的“标价”减去销售数据库中的“售价”计算得出的。您无需深入了解这些计划的细节,只需了解DV系统中查询的候选计划由哪些执行步骤组成即可。

正如上述图表所示,DV系统中的查询计划通常包括以下步骤:

  1. 将查询下推到不同类型的数据源。例如,Denodo将查询下推到传统数据库(计划A和计划B的步骤1)和并行数据库(计划A的步骤3,计划B的步骤4)。在许多场景中,还可能涉及其他类型的数据源,如Hadoop集群或SaaS应用。
  2. 从数据源向DV系统传输数据。在上述示例中,这对应于计划A中的步骤2和4,以及计划B中的步骤2和5。
  3. 向数据源中插入数据。“动态数据移动”优化技术(计划B中使用)通过将一个小型数据集从一个数据源移动到另一个数据源的临时表中,在目标数据源内直接整合数据集。因此,估算此操作的成本需要考虑数据插入成本(计划B中的步骤3)。
  4. 在DV系统中后处理并整合部分查询结果(计划A中的步骤5)。

接下来,我们分析成功估算这些步骤成本所需的信息:

1. 数据统计信息

与关系数据库中的基于成本优化类似,DV系统需要参与查询的关系的统计信息。这些统计信息可用于估算每个查询计划步骤中输入数据的大小,这是影响成本的关键因素。

由于DV系统并未本地存储实际数据,因此无法像传统数据库那样生成统计信息。Denodo通过以下两种方式解决该问题:

  • 如果数据源自身维护统计信息(如大多数数据库),Denodo可以直接从数据源目录表中获取。
  • 如果数据源不维护统计信息或无法对外部程序开放,Denodo可以通过对数据源执行预定义查询来计算统计信息。

2. 索引和物理数据访问结构

DV系统需要了解数据源中的索引(或其他物理数据访问结构)信息。下推到数据源的查询性能可能因可用索引的不同而发生数量级变化。Denodo会自动从支持索引信息公开的数据源中获取相关信息(如大多数数据库),或允许用户在无法自动获取时手动声明。

3. 针对不同数据源的成本估算模型

为了估算下推到数据源的查询成本,DV系统需要针对每种类型的数据源建立不同的成本估算模型。不同数据源的性能差异可能非常大,仅靠简单的修正因子(例如假设并行数据库查询速度是常规数据库的n倍)远远不够。有些查询中,并行数据库的速度比传统数据库快数个数量级,而另一些查询中,差异可能很小甚至不存在。因此,准确的估算需要详细计算,充分考虑每个系统的查询执行机制。

此外,还需要考虑数据源硬件的一些特性。例如,在一个拥有96个处理核心的并行数据库上执行查询,与在只有48个处理核心的数据库上执行查询的成本完全不同。

数据插入成本(操作类型3)的差异也需要根据数据源类型单独考虑。

为此,Denodo为逻辑数据仓库/数据湖场景中常见的主要数据源类型(包括传统数据库、并行数据库和Hadoop集群)提供了特定的成本估算模型。

4. 数据传输速度

DV系统还需要考虑从每个数据源传输数据的相对速度。例如,从本地数据库获取10万行数据的成本与从SaaS应用(如Salesforce)获取相同数据的成本差异巨大。Denodo允许为不同数据源指定数据传输因子,以考虑DV系统与数据源之间的传输速率差异。

Denodo是市场上唯一能够综合考虑数据源索引、数据传输速率,以及并行数据库和大数据源查询执行模型的DV系统。一些传统数据库和大数据系统的“数据虚拟化扩展”甚至不考虑虚拟关系的统计信息。在没有这些关键信息的情况下,DV系统无法自动生成高效的执行计划。在最好的情况下,您不得不手动优化每个查询,这会显著增加成本并降低灵活性。而在无法手动调整查询的情况下(例如由BI工具生成的查询),您可能面临性能问题。

因此,我们的建议是:在评估DV供应商和大数据集成解决方案时,不要满足于笼统的“支持基于成本的优化”声明,而应深入了解这些方法所考虑的信息以及它们能够自动做出的决策,从而明确预期性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝,2024年已经来临,回顾过去一年,科技的迅猛进步简直让人目不暇接。 在人工智能(AI)越来越强大的今天,我们不再停留在幻想阶段,量子计算的雏形开始展示它的无穷潜力,Web …

2024年终总结-行到水穷处,坐看云起时

依然是——关于我 我,坐标山东青岛,一位无名的Java Coder,你可以叫我Debug.c亦或者种棵代码技术树。在此不过多赘述关于我,更多的关于我请移步我的2023年年终总结。 2023年终总结-轻舟已过万重山 2024年OKR完成情况 2023年年末…

SpringMVC (2)

目录 1. RequestMapping 注解介绍 2. RequestMapping 使用 3. RequestMapping与请求方式 3.1 RequestMapping 支持Get和Post类型的请求 3.2 RequestMapping 指定接收某种请求 3.3 GetMapping和PostMapping 4. 传参 4.1 通过查询字符串传参 4.2 在 Body 中传参 4.2.1 …

使用ssh推送项目到github

文章目录 1. 确保已生成 SSH 密钥2. 在 GitHub 上创建远程仓库3. 初始化本地项目4. 将本地项目与远程仓库关联5. 添加文件并提交补充:拉取远程修改(可选)6. 推送到 GitHub7. 完成总结 出现的问题解决方法:方法 1:允许合…

一文读懂 RocketMQ:从概念到架构与应用原理概述

文章目录 概述架构说明核心组件核心概念 namesvrproducer默认实现producer启动消息发送 broker-mq核心基本模型集群模型内部模型存储机制高可用 consumerpush类型push流程pull类型 概述 随着分布式技术在业内的快速应用,mq(消息队列)做为不可…

具身智能新突破!Physical Intelligence推出机器人动作tokenizer,训练提速5倍

具身智能,是人工智能(AI)行业的下一个浪潮。如何有效训练 Transformers 模型来控制具身机器人,是当前亟需要解决的难题,尤其是对于更复杂、需要精确和高频控制的精巧技能,现有的视觉-语言-动作(…

通过idea创建的springmvc工程需要的配置

在创建的spring mvc工程中&#xff0c;使用idea开发之前需要配置文件包括porm.xml、web.xml、springmvc.xml 1、porm.xml 工程以来的spring库&#xff0c;主要包括spring-aop、spring-web、spring-webmvc&#xff0c;示例配置如下&#xff1a; <project xmlns"http:/…

【MySQL系列文章】Linux环境下安装部署MySQL

前言 本次安装部署主要针对Linux环境进行安装部署操作,系统位数64 getconf LONG_BIT 64MySQL版本&#xff1a;v5.7.38 一、下载MySQL MySQL下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) 二、上传MySQL压缩包到Linuxx环境&#xff0c…

【排查案例】无认证集群空白分区创建元凶排查记录

无认证集群空白分区创建元凶排查记录 前言正文SparkSQL Thrift审计通过edit查找操作抓包分析请求NodeManager日志追踪结论 后记 前言 今天分享一个最近在生产环境排查的空白分区的问题&#xff0c;先说业务感知&#xff0c;业务那边反馈本身这条业务链每个小时数据应该是3个分…

音频入门(一):音频基础知识与分类的基本流程

音频信号和图像信号在做分类时的基本流程类似&#xff0c;区别就在于预处理部分存在不同&#xff1b;本文简单介绍了下音频处理的方法&#xff0c;以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…

语义分割文献阅读-SegNet:一种用于图像分割的深度卷积编码器-解码器架构(1.13-1.19)

目录 摘要 Abstract 1 引言 2 SegNet架构 2.1 编码器网络 2.2 解码器网络 2.3 最大池化索引(Max-pooling Indices) 3 训练SegNet 3.1 加载预训练权重 3.2 构建MyDataset类 3.3 训练 4 测试 总结 摘要 本周阅读的论文题目是《SegNet&#xff1a;A Deep Convoluti…

深度学习核函数

一、核函数的基本概念 核函数在机器学习中具有重要应用价值&#xff0c;常用于支持向量机&#xff08;SVM&#xff09;等算法中。 核函数是面试中经常被考到的知识点&#xff0c;对于找工作和实际数据转换都有重要作用。 二、数据建模与核函数的作用 数据越多&#xff0c;可…

.Net Core微服务入门全纪录(四)——Ocelot-API网关(上)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

2024年智慧消防一体化安全管控年度回顾与2025年预测

随着科技的飞速发展&#xff0c;智慧营区一体化安全管控在2024年取得了显著进展&#xff0c;同时也为2025年的发展奠定了坚实基础。 2024年年度回顾 政策支持力度持续加大&#xff1a;国家对消防安全的重视程度不断提高&#xff0c;出台了一系列涵盖技术创新、市场应用、人才培…

抖音小程序一键获取手机号

前端代码组件 <button v-if"!isFromOrderList"class"get-phone-btn" open-type"getPhoneNumber"getphonenumber"onGetPhoneNumber">一键获取</button>// 获取手机号回调onGetPhoneNumber(e) {var that this tt.login({f…

【线性代数】列主元法求矩阵的逆

列主元方法是一种用于求解矩阵逆的数值方法&#xff0c;特别适用于在计算机上实现。其基本思想是通过高斯消元法将矩阵转换为上三角矩阵&#xff0c;然后通过回代求解矩阵的逆。以下是列主元方法求解矩阵 A A A 的逆的步骤&#xff1a; [精确算法] 列主元高斯消元法 步骤 1&am…

从零开始:Spring Boot核心概念与架构解析

引言 在当今的Java开发领域&#xff0c;Spring Boot已经成为构建企业级应用的首选框架之一。它以其简洁、高效、易于上手的特点&#xff0c;极大地简化了Spring应用的开发过程。本文将从Spring Boot的核心概念入手&#xff0c;深入解析其架构设计和运行原理&#xff0c;帮助读…

后端面试题分享第一弹(状态码、进程线程、TCPUDP)

后端面试题分享第一弹 1. 如何查看状态码&#xff0c;状态码含义 在Web开发和调试过程中&#xff0c;HTTP状态码是了解请求处理情况的重要工具。 查看状态码的步骤 打开开发者工具&#xff1a; 在大多数浏览器中&#xff0c;您可以通过按下 F12 键或右键单击页面并选择“检查…

7、数组知识点汇总

一、 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤数据结构&#xff1a;将数据按照某种特定的结构来存储设计良好的数据结构会导致良好的算法。ArrayList、LinkedList 数组是最简单的数据结构。 1、数组&#xff1a; 数组&#xff1a;存放同一种类型…

计算机网络 (48)P2P应用

前言 计算机网络中的P2P&#xff08;Peer to Peer&#xff0c;点对点&#xff09;应用是一种去中心化的网络通信模式&#xff0c;它允许设备&#xff08;或节点&#xff09;直接连接并共享资源&#xff0c;而无需传统的客户端-服务器模型。 一、P2P技术原理 去中心化架构&#…