创建实时数据仓库

2024-03-20

我正在做一个个人项目,其中包括创建数据仓库 (DWH) 的完整架构。在本例中,作为 ETL 和 BI 分析工具,我决定使用 Pentaho;它具有许多功能,从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集。

我读过数据仓库必须是关系数据库,并且理解这一点。我不明白的是如何实现近乎实时或完全实时的 DWH。我读过有关推和拉策略的内容,但我的结论如下:

  • DBMS 的选择对于创建实时 DWH 并不重要。我的意思是,使用 MySQL、SQL Server、Oracle 或任何其他语言都可以实现这一点。由于我将其作为个人项目进行,因此我选择 MySQL。
  • 关键因素是作业调度的频率,这就是调度器的任务。这个假设正确吗?我的意思是,创建实时 DWH 的关键是为每个 ETL 流程每秒建立作业?

如果我错了,你能给我一些帮助来理解这一点吗?那么,如何创建实时DWH呢?是否有任何开源调度程序允许这样做?还有任何非开源调度程序允许这样做吗?

我很困惑,因为有些参考文献说这是不可能的,而另一些参考文献说这是可能的。


定义

非常有趣的问题。首先,应该定义实时应该如何“实时”。实时对于传入数据确实具有非常低的延迟,但需要发送系统中具有良好的架构,可能是事件总线或消息队列以及接收端良好的基础设施。这通常涉及某种听众和pushing来自交付系统。

近实时将是下一个“较低”级别。如果我们说近实时最多延迟大约 5 分钟,那么您的方法也可以工作。例如在这里你可以pull每隔一分钟左右的数据。但请记住,您需要某种高性能检查新数据是否可用以及要获取哪些数据。如果此检查和拉取的时间超过一分钟,那么跟上数据就会变得更加困难。确实取决于音量。

Realtime

正如我之前所说,实时分析最多需要一个消息队列或一个服务总线,您的某些作业可以连接到并“侦听”新数据。如果一个新的数据包被推入管道,它的大小可能会非常小,并且可以非常快地处理。

如果没有听众的基础设施,您就需要接近实时。

近实时

这是你必须进一步发展的部分。您必须确保获得相对较小的数据包,通常是某种增量。如果您有权访问数据库,则可以使用触发器来完成此操作。否则你必须每隔一段时间拉一次,而你的“一次”可能会非常频繁。

这可以在 Linux 上通过简单的组合来完成,或者在 Windows 上通过活动规划来完成。请记住,您的加载和处理时间不应超过下一个作业开始之前的时间窗口。

Database

最后,当您定义了想要实现的目标并大致了解如何实现增量加载或侦听器时,您是对的 - 您可以采用关系数据库。如果您对性能感兴趣并且将此部分建模为星型模式,您还可以研究基于列的引擎或基于列的数据库,例如 Apache Cassandra。

调度

对于作业调度,您还可以从 Linux 或 Windows 标准规划工具开始。如果你用 Java 编码,你可以稍后使用诸如quartz之类的东西。但这仅适用于近实时的情况。正如我上面所解释的,实时需要不同的架构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建实时数据仓库 的相关文章

  • 数据分析任务 - 自定义分析请求

    是否有任何选项可以为 SSIS 数据分析任务创建自定义配置文件请求 目前 SSIS 数据分析任务下有 5 个标准分析请求 列空比率配置文件请求 列统计资料请求 列长度 分布配置文件请求 列值分布配置文件请求 候选人关键资料请求 我需要添加另
  • SQL Server 存储过程转换为 SSIS 包

    问题 目前我们有大量的存储过程 很长 长达 10 000 行 这些存储过程是由不同的开发人员在过去 10 年中根据不同的需求编写的 现在管理那些复杂 长的存储过程 没有适当的文档 变得很困难 我们计划将这些存储过程移至 SSIS ETL 包
  • 如何使用OrientDB ETL仅创建边

    我有两个 CSV 文件 首先包含 500M 记录 格式如下 id name10000023432 汤姆用户13943423235 胡说八道 第二个包含 1 5B 好友关系 格式如下 从 ID 到 ID10000023432 13943423
  • SSIS 导入 Excel 日期时出错(截断错误)

    我很抱歉发布了一个看似非常简单的问题 但我找不到答案 而且我浪费了几天 此时不仅仅是几个小时 我对 SSIS 还很陌生 它只是让我感到不舒服 背景 非常简单的 SSIS 包 用于将 Excel 工作表导入 SQL Server 中的临时表
  • BI 与 Django?

    有没有办法使用 Django 开发 Bi 商业智能 解决方案 因此 应该可以使用多个数据源来定义模型 有人用过 Django 体验过 BI 吗 怎么可能行得通呢 我不确定您对 BI 的定义是什么 也不知道为什么您认为 BI 解决方案需要多个
  • 在生产环境中部署包时,如何避免在脚本任务的“添加引用”中手动浏览DLL?

    I use EPPlus dll用于动态生成 Excel 文件以供附件并在 SSIS 包的脚本任务中生成邮件程序的库 当邮件程序有新的更改需求时 我在本地计算机上的脚本任务中进行更改 并将构建的包文件 dtsx 发送给 DBA 团队进行部署
  • pyodbc 与 pypyodbc 相比有什么设计优势吗?

    I know pyodbc http code google com p pyodbc 是一个较旧的项目 可能功能更强大 更健壮 但是它的设计 基于编译的 C 代码的组件 是否有任何使其比纯 Python 实现更可取的地方 例如pypyod
  • 4-5-4 国家零售基金会日历 csv 下载或创建函数

    我一直在谷歌上到处搜索 但没有找到这个 我工作的零售客户使用 NRFretail 日历 NRF site http nrf com 我想知道是否有人曾经使用这些值创建过查找 维度表 Thanks 您可以找到一个 perl 模块 可以在 CP
  • JOLT 移位转换以过滤数组中的值

    我想使用 JOLT 转换来做两件事 过滤名为 myarray 的数组中的元素 以便仅保留具有 v 518 属性的元素 过滤掉除 v 518 和 lfdn 之外的其余元素的所有属性 Input isError false isValid tr
  • 使用 NiFi 更新 CSV 内字段中的值

    我想实现一个简单的用例 使用 NiFi 将 CSV 内字段中的多个字符串 文本值更新为整数值 例如 我的 CSV 文件如下所示 输入 CSV 文件 字段 1 字段 2 美国 苹果 美国 苹果 印度 葡萄 中国城 奥兰治 澳大利亚民族 桃子
  • SSIS - 动态地将文件移动到具有匹配子字符串名称的文件夹

    我正在使用 foreach 循环和文件系统任务将文件移动到特定文件夹中 或至少尝试这样做 i e 文件名可以是100000 需要到文件夹1000 文件102000需要转到文件夹1020 文件103000需要转到文件夹1030 ETC ETC
  • Python 中的最佳 ETL 包

    我有两个用例 从 Oracle PostgreSQL Redshift S3 CSV 提取 转换并加载到我自己的 Redshift 集群 安排作业每天 每周运行 INSERT TABLE 或 INSERT NONE 选项更好 我目前正在使用
  • 解析SSIS包

    我的文件系统文件夹中有几个 dtsx 包 我尝试使用下一个脚本从包中提取附加信息 using System using System Collections Generic using System Linq using System Te
  • 每小时行数

    我正在探索自行车共享数据 我合并了两个表 一个包含自行车共享数据 另一个包含天气数据 开始日期 列位于自行车共享数据中 日期 列是天气数据 我想对每小时的 ID 计数进行分组 这样我就可以看到天气对自行车使用的影响 ID Start End
  • 从 SSIS 中的 CSV 导入 yyyyMMdd 日期

    我有 12 列使用yyyymmdd格式 在里面数据流任务 我有一个平面文件源 a 派生列任务 and an OLE DB 目标 我将以下表达式应用于派生列任务 DT DBDATE SUBSTRING DT STR 10 1252 Date
  • 链接维度的不同粒度级别的事实表

    数据仓库设计新手 我有一个代表地理位置 例如郊区 城市 州 的非规范化维度表 这是一个缓慢变化的维度 还有多个事实表 每个事实表都有不同的粒度级别 是否可以对此进行建模 以便事实表使用代理键 同时维护非规范化维度表 如果您实际上拥有相同的维
  • Pentaho Spoon 工具转换顺序

    我正在尝试设计一个 ETL 结构 但我陷入了以下步骤 正如你所看到的 我有 3 个步骤 每个步骤都有一个FK上一步的值 例如TABLE3有一个列外键约束这表明PK值在TABLE2 and TABLE2与 具有相同的关系TABLE1 问题是
  • 释放对执行进程任务中使用的变量的锁定SSIS

    我有一个包裹Foreach容器 and 执行流程任务 inside 对于每个容器 在执行流程任务中出现一些错误时 它会重定向到OnError事件处理程序对于每个容器 我正在使用 exe 捕获错误标准误差变量任务的属性并在脚本任务中使用它On
  • 如何在 SSIS 变量中存储“完全限定”和“仅名称”文件名

    我有一个 SSIS 包 其中有一个 Foreach 循环容器 加载静态文件夹中的所有 txt 文件 我将完全限定的文件名作为在连接字符串中使用的变量传递 我现在只需将文件名传递给一个变量以用于执行存储过程 问题是如果我将 Foreach 循
  • 如何将 FTP 目录的内容复制到共享网络路径?

    我需要将 FTP 位置上的目录的全部内容复制到共享网络位置 FTP 任务要求您指定确切的文件名 不是目录 而文件系统任务不允许访问 FTP 位置 EDIT 我最终编写了一个脚本任务 没有什么比恢复一个非常旧的线程更好的了 但是有一个解决方案

随机推荐

  • JavaScript 中音频的波形可视化[重复]

    这个问题在这里已经有答案了 我正在尝试使用 JavaScript 显示音频文件的波形 但我什至不知道如何开始 我找到了音频数据API https wiki mozilla org Audio Data API Working Audio D
  • Hyperledger Fabric 中私有数据的历史

    有没有办法获取 Hyperledger Fabric 节点 SDK 中私有数据的历史记录 我尝试过使用getHistoryForKey key 它返回一个空对象 仅包含 done true 用于获取私有数据历史记录的 API 尚未实现 但计
  • Swift/https:NSURLSession/NSURLConnection HTTP 加载失败

    不幸的是 今天早上我的 XCode 更新到了版本 7 而我使用 http 开发的 iOS 应用程序现在需要 https 因此 根据许多教程 我配置了 MAMP 服务器 以便使用 https ssl 创建虚拟证书 现在我的 iOS 应用程序
  • 如何在不授予 Google 签名权限的情况下发送应用程序包?

    在米莱娜 尼科利奇的 Google Play 的新功能 https www youtube com watch v cMr b660Esw作为 Google 的一部分的演示文稿 android11发射 她说 随着我们不断改进 App Bun
  • 使用 Laravel 和 Passport 响应身份验证失败时返回状态代码 401?

    我正在配置 Laravel 项目以使用 Passport 令牌身份验证 一切似乎都正常 但是当auth api中间件失败 它以状态响应客户端200以及响应正文中的一堆 HTML 相反 我希望它以以下状态响应401 我在 Laravel Pa
  • 不变失败:您不应在 之外使用

    I use react router dom用于我的路由React应用 我的应用程序的一部分提取到另一个包中 依赖项列表如下所示 app dashboard package json dependencies app components
  • 您可以通过 Android studio 将 Android 应用程序作为 ARC 应用程序启动吗?

    我想知道是否有一种方法可以从 Android Studio 启动和 或构建 ARC 应用程序 而不必每次都手动使用 ARC 焊机 在开发过程中手动执行此操作可能非常麻烦 尤其是在发布过程中 您必须对同一应用程序的约 15 种不同风格执行相同
  • 从多个 SQL Server 表中选择 TOP 4 记录。使用vb.net

    我有大约 4 个不同的表 它们具有完全相同的列名 我想要做的是从所有这些按日期排序的表中选择前 4 条记录 因为日期是它们共享的列之一 我不断收到错误的语句 无论是语法问题还是不明确的记录等 本质上我的声明类似于 SELECT TOP 4
  • 如何在 AngularFire2 中获取 firebase.User

    我正在使用 AngularFire2 Ionic2 和 Firebase 身份验证 我在尝试获取当前用户时遇到问题 这对我有用 但不一致 有时它被填充 有时它为空 let user firebase User firebase auth c
  • 打开带有动态内容的窗口

    是否可以从 PHP 打开一个具有预定义内容的窗口 很明显 您可以从框架现有页面的 javascript 链接打开一个窗口 或者仅从引用现有页面的常规 a 标记执行 target blank 但我正在生成一些内容 并希望在新链接中打开该内容
  • 如何在命令行中从 .NET 程序集获取 IDL(或如何将 TLB 转换为 IDL)?

    我们有一个 NET 程序集 实际上是 Aspose Words 我们希望客户端能够从 COM 客户端轻松使用它 因此 我们随程序集提供了 TLB 以便客户端可以从 C 或 Delphi 等语言中使用它 而不必自己提取 TLB 我们还随程序集
  • 将所有对象从一个 Realm 复制到另一个 Realm

    我正在尝试添加使用领域将以前导出的数据库加载到手机应用程序中的功能 该数据库包含在一个 zip 文件中 我将其从电子邮件导入到应用程序中 将其提取 然后将领域文件写入应用程序本地存储 将其写入文件后 我将加载备份领域文件 查询对象 然后将它
  • SQLite3 Node.js JSON

    我正在使用sqlite3NPM 包 我想将 JSON 存储在我的数据库列之一中 据我所知 SQLite本身能够存储JSONhttps www sqlite org json1 html https www sqlite org json1
  • Coq 中的案例分析证明

    我试图证明关于以下函数的命题 Program Fixpoint division m nat n nat measure m nat match lt nat 0 n with false gt 0 true gt match leq na
  • Steam:使用 PHP 将 SteamID64 转换为 SteamID

    有人如何使用 PHP javascript 将 steamid64 例如 76561198074259974 转换为 steamid STEAM 0 0 56997123 我想在加载屏幕上显示 steamid 但不是 steamid64 看
  • 在 C# 中查找 MP3 长度

    我在用着TagLib http developer novell com wiki index php TagLib Sharp从一些 MP3 中获取 ID3 标签数据 但我似乎无法找到 MP3 的长度 如何在 C 中找到 MP3 的长度
  • Microsoft Teams Tab 应用程序无法访问剪贴板

    I m developing the Microsoft Teams Tab application Tab application is run inside Microsoft Teams through iframe so there
  • 上下文操作模式自定义行为

    在 Android 开发者中菜单指南 http developer android com guide topics ui menus html CAB其中提到 当用户取消选择所有项目 按 后退 按钮或选择操作栏左侧的 完成 操作时 操作模
  • 中继器控件 - 取消特定项目的绑定

    在转发器控件中 是否有一种方法可以在呈现页面之前解除某些项目的绑定 目前 我们有一个绑定到转发器的项目集合 如果该项目不是当前语言的一部分 我们将隐藏该项目 我希望能够对中继器进行计数并返回有效的号码 不包括隐藏项目的计数 是否可以解除特定
  • 创建实时数据仓库

    我正在做一个个人项目 其中包括创建数据仓库 DWH 的完整架构 在本例中 作为 ETL 和 BI 分析工具 我决定使用 Pentaho 它具有许多功能 从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集 我读过数据仓库必须是关