繁体   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