【问题标题】:Keep two different databases synchronized保持两个不同的数据库同步
【发布时间】:2018-08-22 12:52:58
【问题描述】:

我正在建模一个新的微服务架构,将单体软件的某些部分迁移到微服务。

我正在添加一个新的 PostgreSQL 数据库,我的想法是将来使用该数据库,但现在我仍然需要更新旧的 SQL Server 数据库,并且如果旧数据库中出现新的东西,还需要同步 PostgreSQL 数据库。

我已经搜索过 ETL 工具,但它们旨在将数据移动到数据仓库(这不是我需要的)。我只是无法复制信息,因为数据库模型不一样。

基本上,我需要一种方法来检测插入到 SQL Server 数据库中的新行,转换该信息并将其插入到我的 PostgreSQL 中。

有什么建议吗?

【问题讨论】:

  • 你能告诉我们更多关于数据库插入发生在哪里的信息吗?是否有可能让插入调用重复以覆盖其他数据库?
  • 主要软件将使用我正在创建的 AWS Lambda,所以是的,插入调用可能重复,但系统的其他部分也会命中 SQL Server 以插入或更新,所以我需要检查数据库中是否也插入了一些新行。
  • 您是否需要它是实时的,因为您必须尽量减少两个数据库不同步的可能性?
  • 基本上,POST HTTP 调用将执行 AWS Lambda,并将实体保存到一个或两个数据库中(这取决于我)。但是由于系统的其他部分暂时不会使用我的新微服务,我需要一种方法来保持两个数据库同步。如果需要,我可以使用任何现有的 AWS 工具来解决这个问题。
  • 我没有答案,但我支持你。我的感觉是 AWS 大师应该关注这个。

标签: sql-server postgresql etl


【解决方案1】:

PostgreSQL's foreign data wrappers 可能有用。我的方法是,将前端更改为使用 PostgreSQL,并让 postgreSQL 通过它的各种功能(触发器、规则等)来处理拆分

【讨论】:

    【解决方案2】:

    看看 StreamSets 数据收集器。它可以检测 SQL Server 中的更改并插入/更新/删除任何具有 JDBC 驱动程序(包括 Postgres)的数据库。它是开源的,但您可以购买支持。您还可以对数据流进行字段更改/添加/删除/重命名,以使字段与目标表匹配。

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      相关资源
      最近更新 更多