簡體   English   中英

實時數據庫消息傳遞

[英]Real-Time Database Messaging

我們在Django中有一個針對PGSQL數據庫運行的應用程序。 我們已經支持的功能之一是在后端數據庫中更新數據時實時向UI發送消息。

因此...例如,我們在UI中顯示客戶表的內容,因為從后端客戶數據庫表中添加/刪除/更新了記錄,所以我們會通過redis / socket.io將這些更新實時回顯到UI中/node.js魔術。

目前,我們已經在Django表模型上使用重載的save()方法針對整個問題推出了自己的解決方案。 對於我們當前的功能,這實際上工作得很好,但是隨着表繼續增長為GB的數據,隨着我們的引擎在當前的“訂閱” UI中進行挖掘並適當地發出需要更新的消息,它開始在一些較大的表上變慢。哪些客戶。

好奇這里還有其他選擇。 我相信MongoDB和其他無SQL類型的引擎支持一些類似的結構,但是在谷歌搜索更好的解決方案時我找不到確切的答案。

目前,我們已經在Django表模型上使用重載的save()方法針對整個問題推出了自己的解決方案。

您可能希望在較低的數據庫級別上工作,而不是在應用程序級別上工作。

在行插入之后添加一個PostgreSQL觸發器,並使用pg_notify通知外部應用該更改。

然后在NodeJS中:

var PGPubsub = require('pg-pubsub');

var pubsubInstance = new PGPubsub('postgres://username@localhost/tablename');

pubsubInstance.addChannel('channelName', function (channelPayload) {
  // Handle the notification and its payload
  // If the payload was JSON it has already been parsed for you
});

看到那個 那個

而且您將能夠在Python https://pypi.python.org/pypi/pgpubsub/0.0.2中進行相同的操作。

最后,您可能想在PostgreSQL中使用數據分區 長話短說,PostgreSQL已經滿足了您的所有需求:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM