【问题标题】:How to implement an ETL Process如何实施 ETL 流程
【发布时间】:2023-03-06 08:27:02
【问题描述】:

我想在源 SQL 基础数据库和目标 TripleStore 之间实现同步。

不过,为了简单起见,我们只说 2 个数据库。我想知道使用什么方法将源数据库中的每个更改复制到目标数据库中。更具体地说,我希望每次源数据库中的某些行发生更改时,可以通过一个进程看到这一点,该进程将读取更改并相应地填充目标数据库,同时在中间应用一些转换。

我看到了有关通知机制的建议,可以 在数据库中可用,或构建表以便更改可以 被跟踪(意味着手动执行)并让进程轮询它 以不同的时间间隔,或使用日志(变更数据捕获, 等等……)

我对这一切感到非常困惑。我想知道是否有人可以就我的目标的不同方法提供一些指导和解释。含义:方法名称和查找位置。

我的组织主要使用:Postgres 和 Oracle 数据库。

我必须获取关系数据并将它们转换为 RDF,以便将它们存储在三重存储中,并保持三重存储与 SQL 存储中的数据不断同步。

请,

非常感谢

PS:

关于 ETL 和复制技术(如变更数据捕获)中关于我的总体目标的说明,将不胜感激。

我需要再次理解这个主题,知道方法是什么,这样我才能进一步开始为自己挖掘。到目前为止,我已经了解 CDC 是新的发展方向。

【问题讨论】:

  • 您计划使用的服务器将帮助我们为您提供更好的答案。
  • ETL 过程通常转换数据(提取、转换、加载);你所描述的听起来更像是复制。大多数商用(以及许多开源)数据库管理系统都内置了复制功能。
  • 不是从 SQL 存储到 RDf 存储、提取、转换和加载吗?即使是连续的?

标签: etl


【解决方案1】:

假设您不能使用复制,并且您需要使用某种 ETL 过程来实际提取、转换和加载所有更改到目标数据库,您可以使用插入、更新和删除触发器来填充(手动创建的)审计表。列 GeneratedId、TableName、RowId、Action(插入、更新、删除)和一个布尔值,以确定您的 ETL 流程是否已处理此更改。使用该表获取数据库中所有更改的行并将它们传输到目标数据库。然后从审计表中删除已处理的行,使其不会变得太大。您必须多久运行一次 ETL 流程取决于源数据库中发生的更改量。

【讨论】:

  • 鉴于组织的背景,我正在寻找一种假设我可以操纵该数据库的解决方案。这就是我最近对 ​​CDC 感兴趣的原因。
  • 在不更改源或目标数据库的情况下,您将需要某种更改指示器(例如,每个表中的“lastchange”字段)。否则,您至少必须从源数据库中读取所有数据,这取决于数据库大小,可能需要一些时间。
  • 我对目标数据库有绝对的控制权,这是我的领域。它仅包含源数据库中数据的另一种表示形式,根据目标数据模型略微增强和丰富。但是我对源数据库的控制有限。我没有要求管理该源数据库,因为我的组织结构可能很复杂,我正在考虑一些内置解决方案。我也不是 SQL 数据库管理员。我知道如何查询它,但对如何管理它知之甚少。
  • 所以说我可以使用复制,它是什么,它与你上面解释的有什么不同?
  • postgre 有什么,oracle 有什么?
猜你喜欢
  • 2012-12-13
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多