我正在编写一个用Python 2.7编写的代码,它连接到一个MariaDB数据库来读取数据。这个数据库从不同的外部资源接收数据。我的代码只读取它。我的服务在开始时读取一次数据,并将所有内容保存在内存中以避免I/O。
我想知道是否有某种方法可以在我的代码中创建一些“函数回调”来接收某种新更新/插入的警报,这样我就可以在每次任何外部资源更改或保存新数据时从数据库重新加载内存数据。
我曾经想过创建一个sql触发器到一个新表,在那里插入一些“标志”,并让我的服务定期检查这个新表是否有标志。如果有,重新加载数据并删除标志。但这听起来像是一个错误的解决方案...
我正在使用:
- Python 2.7语言
- MariaDB版本15.1分配10.3.24-MariaDB
- 库mysql连接器2.1.6
1条答案
按热度按时间lbsnaicq1#
MariaDB的更好解决方案是使用CDC API进行流传输:https://mariadb.com/resources/blog/how-to-stream-change-data-through-mariadb-maxscale-using-cdc-api/
您现在的计划是使用标志表,这意味着您的客户端必须轮询标志表以确定标志是否存在。您必须每隔一段时间对该表运行一次查询,并且每周7天、每天24小时都要这样做。根据您的客户端需要多快地收到更改通知,您可能需要非常频繁地运行这种类型的轮询查询,这给MariaDB服务器带来了一个负担,即使没有要报告的更改,MariaDB服务器也要响应轮询查询。
CDC解决方案更好,因为客户端可以请求在下次发生更改时得到通知,然后客户端等待。它不会给MariaDB服务器带来额外的负载,就像您只添加了一个副本服务器一样。