如何被告知Python中某些数据库信息已被更改



我正在编写Python 2.7中连接到MariaDB数据库以读取数据的代码。该数据库接收来自不同外部资源的数据。我的代码只能读取它。我的服务一开始就读取一次数据,并将所有数据保存在内存中以避免I/o。

我想知道是否有办法在我的代码中创建一些"函数回调"来接收某种新的更新/插入警报,这样我就可以每次从数据库中重新加载我的内存数据,任何外部资源更改或保存新数据。

我想创建一个sql触发器到一个新的表插入一些"标志";然后将我的服务设置为定期检查新表是否存在标志。如果是,则重新加载数据并删除标志。但这听起来像是一个错误的解决方案…

我用:

Python 2.7
  • MariaDB Ver 15.1 Distrib 10.3.24-MariaDBlib mysql-connector 2.1.6

对于MariaDB更好的解决方案是使用CDC API流式传输:https://mariadb.com/resources/blog/how-to-stream-change-data-through-mariadb-maxscale-using-cdc-api/

您现在的计划,使用标志表,意味着您的客户端必须轮询标志表的存在标志。您必须隔一段时间对该表运行查询,并保持24/7运行。根据客户端需要以多快的速度收到更改通知,您可能需要非常频繁地运行这种类型的轮询查询,这会给MariaDB服务器带来负担,即使没有要报告的更改也是如此。

CDC解决方案更好,因为客户端可以在下一次发生更改时请求通知,然后等待。它不会在MariaDB服务器上增加额外的负载,就像您简单地添加一个副本服务器一样。

最新更新