问题标签 [data-replicator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
65 浏览

azure-sql-database - 在 Exact Online 上自动设置 Data Replicator 表的逻辑视图

我正在使用 Invantive Data Hub 和 Data Replicator 选项在我们的 Azure 数据库中复制 Exact Online。具有以下名称的表:dcd_ganw2_wpbz0_djmwe很好地自动创建并自动消失。列名如d63bb0afa6fe178c81ad30dc3a34b3.

但是,我还希望维护哪些用户友好名称和列名称的视图,因此我不必自己创建它们。

除了手动执行并将列名映射回正常的用户友好名称之外,还有其他方法可以自动执行此过程吗?

0 投票
1 回答
108 浏览

postgresql - 在两个 PostgreSQL 服务器之间传输数据

我有两台 PostgreSQL 服务器,一台集中式,一台外围。这个想法是让外围服务器从运行在同一台机器上的各种进程中积累数据。定期(可能每小时或大约每小时),数据从外围服务器传送到中央服务器。在确认服务器成功后,外围服务器将擦除其内容以使其实现尽可能轻量级。

虽然最初这是一个相当直接的场景,其中有许多现有的解决方案,但我敢肯定,有几个因素限制了我的选择:

  • 外围服务器和集中式服务器之间的链接可能会一次关闭数天,在这种情况下,它只会保留所有数据,然后重试下一次预定的传输,数据量是原来的两倍。

  • 没有记录被重复是至关重要的,因此被擦除的记录与传输的记录完全匹配很重要。

  • 外围服务器很可能在传输过程中积累了额外的数据,因此删除并重新创建表是不可行的,因为这会清除一些尚未传输的记录。


我从几个角度审视了这一点,我得出的结论是,我最有可能在这里重新发明轮子,因为有各种方法几乎可以满足我的需求。因此,我决定后退几步,看看会出现哪些针对这种情况的建议。那么我的问题是:

  • 当链路不可靠时,推荐的传输方法是什么?

  • 有哪些转账验证方法?

  • 当外围数据库在传输过程中仍在累积数据时,如何确保擦除日期与传输的数据完全匹配?

在 debian 上使用 postgresql 9.4.9。


一个想法的大致轮廓:

  1. 该表有一serial列跟踪记录 ID。

  2. pg_dump数据到一个文件。文件名中使用了上述序列号,基本上是“这包含所有来自X和到的记录Y

  3. 转储文件通过 rsync 等复制到集中式服务器。

  4. 集中式服务器加载数据,并以某种方式将验证发送回包含串行的外围服务器。考虑重复几次以确保以后不会传输重复项。

  5. 外围服务器核对与已验证序列有关的所有数据。

有什么想法吗?

0 投票
2 回答
426 浏览

postgresql - pglogical-2 如何处理同一张表上的逻辑复制,同时允许它在两个数据库上都可写?

在此处输入图像描述

根据上图,我希望在内部数据库(右侧)中有某些表。我想在外部数据库中复制的其他表。

实际上,只有一组值不应该被复制。可以复制数据库的其余部分。基本上,表中的实际价格列prices无法复制。它应该保留在内部数据库中。

由于供应商在网络外部,因此他们无法访问内部应用程序。

我的计划是创建相同应用程序的复制版本,并允许供应商提交报价和拣货。

假设复制的表至少是quotationsquotation_line_items这些表在外部数据库和内部数据库中都应该是可写的(就 INSERT、UPDATE 和 DELETE 的数据而言)。因此,在两个数据库中,quotationsandquotation_line_items表中的数据都是可写的,并且应该双向复制。

除了表中的实际原始价格列外,其他表中的数据将按单一方向(从内部到外部)复制prices

quotation_line_items表将有一price_id列。但是,表中的原始价格值prices不应出现在外部数据库中。

最终,我希望两个数据库上的复制表的数据保持一致。我对同步复制没问题,所以有点延迟(比如,写操作需要几秒钟)就可以了。

我遇到了 pglogical https://github.com/2ndQuadrant/pglogical/tree/REL2_x_STABLE

他们有PUBLISHER和SUBSCRIBER的概念。

根据自述文件,我无法判断哪个将充当发布者和订阅者,以及如何针对我的情况进行配置。

0 投票
2 回答
761 浏览

.net - 将数据从 Oracle 持续复制到 ElasticSearch

我工作的团队很幸运能够重新设计庞大的遗留系统,在数据库端使用 Oracle 12。目前这个怪物软件在数据库中有 10% 的插入/更新/删除操作,其余 90% 的操作是选择操作(在百万记录表中搜索一些实体)。搜索当然变慢了。所以我们的第一个想法当然是拥有两组相同的数据:Oracle DB 和 Elastic Search DB 在 Elastic 中执行搜索,但将数据存储在 Oracle 中并立即将数据复制到 Elastic。在 Oracle 和 Elastic 之间将有一些用 C# 编写的逻辑,用于将数据转换为 Elastic Stack 格式但第一个问题我们没有答案 - 如何在 Oracle 更改后立即从 Oracle 获取更改的数据?我们发现的第一种方法 - 使用连续查询通知 但这只能用于启动数据传输过程。通知可以包含更改行的RowID,但看起来更改行通知事件的数量限制为80。第二种方法-使用一些开源“数据复制器”,它监视“事务日志”。我发现的唯一复制器 - OpenLogReplicator,我喜欢它,但我想问 StackOverflowers,这可能不适用于我的情况吗?请注意我们不能使用 Oracle GoldenGate,客户端不会接受这个。有人可以建议使用哪种技术来复制 Oracle 的数据更改吗?

0 投票
1 回答
86 浏览

kubernetes - 微服务复制:数据库呢?

假设您正在使用ServiceFabricKubernetes,并且您正在托管一个事务数据仓库微服务(可能是一个不好的例子,但假设它只是一个简单的 CQRS 架构,由发送者、接收者、日期和支付金额的 ID 组成,写道并读入数据库)。

为了论证的缘故,如果我们说这个微服务需要在不同的地理位置之间复制,以确保在一个数据库出现故障时数据可以恢复。

现在,我正在考虑的天真的方法是在接收到事务时触发一个事件,并且协调器微服务将在特定时间范围内接收事件处理的确认。但问题仍然是数据库呢?当我们扩展微服务并建立新的微服务实例时会发生什么?他们将写入同一个数据库,不是吗?

一种解决方案可以是将数据库放在 docker 中,让每个副本拥有它,这是一个好的解决方案吗?

请分享您的想法和最佳实践。