提供PostgreSQL和NoSQL数据库之间的同步

时间:2017-03-10 14:51:58

标签: postgresql denormalization nosql

我有一个带有非常规范化数据的PostgreSQL数据库,因此很多请求产生了很多连接,而我的数据库运行缓慢。我想对来自PostgreSQL的数据进行非规范化,并将其存储在NoSQL DB中以进行只读访问。为此我必须在PostgreSQL和NoSQL之间提供同步(允许很小的延迟)。我想考虑不同的方式,以便我选择最适合的方式。

我可以在发生变化时使用模型中的事件并将它们放入队列中。之后,工作人员可以处理事件并向NoSQL添加必要的数据,但是我有很多遗留代码,质量很差,我不想改变它。另外,我可以对数据进行非规范化并将其放到PostgreSQL中,但不知道这是否合适。

此类任务有哪些解决方案?

1 个答案:

答案 0 :(得分:1)

我对这个主题进行了研究,并且我得到了结果。 有几种方法可以解决这个问题。我告诉你一般的三种方法。

1)您可以在应用中使用信号(例如ORM信号)来获取有关更改的通知。 如果变化不是很多,你应该把它放到队列中,RabbitMQ和Kafka如果有很多变化。这是一个简单的解决方案,适用于编写得不好的不复杂的应用程序。

如果您拥有复杂的架构和大量遗产,那么您应该选择以下方法:

这种方法的一般含义是here

2)使用PostgreSQL logical decoding获取有关更改的事件,这是非常强大的功能。我找到了两个使用此功能的解决方案: 1. 使用工具bottledwater和Kafka,它可以工作,但不再开发。 2。使用工具debezium,它可以运作并拥有活跃的社区。

3)使用PostgreSQL logical decoding获取有关更改的事件,并编写自己的工具来获取事件。