我需要在数据仓库中集成来自3个不同PostgreSQL数据库(OLTP应用程序后端)的数据。对于数据仓库本身,我考虑使用Citus或Greenplum。有一项要求,即来自应用程序的数据必须与数据仓库尽可能接近实时地同步(延迟3-5分钟以上的所有内容都是不可接受的,实时复制将是最好的)。在这方面,我有以下问题:
额外的问题:是否有人有使用过Citus和Greenplum的经验,特别是他们的SQL限制?我知道CTEs不完全支持相关的子查询和递归的CTE,Greenplum有类似的限制吗?
我希望能在这些问题上提供任何帮助,我试着在谷歌上搜索,但很少或根本没有关于这个问题的信息,你能至少给出一些方向吗?
发布于 2021-02-05 17:41:05
经过一番研究,我终于想出了一个答案。感谢@a_horse_with_no_name为我指明了正确的方向。
使用Kafka可以实现不同数据源之间的实时同步。
Kafka Connect允许通过Source连接器将各种系统的数据发送到Kafka集群,并使用Sink连接器从Kafka读取数据。所有用于从系统获取数据到Kafka或将数据从Kafka传输到系统的特定平台代码都由特定连接器的维护人员抽象出来。
连接器维护人员通常会尊重Sinks和Sources之间的某种“契约”,即他们将事先就一种标准化消息格式达成一致,该格式允许使用不同的源和PostgreSQL (例如,您可以同时使用一个Neo4J源和Elasticsearch &Neo4J Sinks,尽管它们有完全不同的范例)。
对于将Postgres与C塔斯/格林梅同步的情况,应该可以通过Debezium PostgreSQL Source连接器和JDBC连接器来实现( Citus和格林梅都支持JDBC )。
发布于 2022-01-13 00:36:25
经过研究,我发现最新的格林梅利数据库版本6.19使用Postgres版本9.4提交。只有在Postgres版本中,9.5+才可以在冲突中使用JDBC接收器连接器的插入模式。因此,只有在JDBC连接器的"insert.mode“属性中插入和更新模式是可能的。
@Denis能否提供一些关于如何设置JDBC接收器连接器的详细信息?特别是,我对带水槽连接器的格林梅鞋帮感兴趣。
https://dba.stackexchange.com/questions/284696
复制相似问题