【发布时间】:2019-07-30 04:09:31
【问题描述】:
我们有多个爬虫同时访问我们的 MYSQL 数据库,不断更新大量行。 每个表都有触发器来评估爬虫发送的 UPDATE,随着我们进入项目,我们有越来越多的条件来验证触发器内的每个更新,因此我们担心这不是扩展的好方法. 主表有触发器,可以将数据发送到另一个也有触发器的表,然后再发送到另一个有触发器的表。
我们正在考虑几个选项来避免开销、表锁定或此类问题。
到目前为止,我们认为我们需要放弃 MYSQL 或将另一个数据库引擎作为队列放在中间,并使用 Python 或 Node 处理信息,而不是评估那里的数据并仅在必要时直接插入/更新。
另外,由于我们主要是写,我们在扩展和避免拥有一个巨大的单体时遇到了问题,但到目前为止我们还没有一个好的计划。
我在谷歌上搜索了很多关于一个好的架构的想法,大多数建议似乎都远离了 RDBMS。
TLDR:核心问题是,什么是避免由多个表中的触发器引起的开销的最佳方法是在多个条件下评估多个条件?是否使用其他方法更好地处理数据?
【问题讨论】:
-
我会查看 Redis,并将逻辑拉出到中间件而不是触发器中,后者隐藏了逻辑。但是要完全回答您的问题,除了预感抱歉,我无法给出可靠的答案
-
我会在dba问这种事情
-
您确定触发器有问题吗?而不是您写入的数据量,并且仍然必须使用替代系统写入。
-
需要更多细节。什么样的更新? “喜欢”?车辆的纬度/经度位置?线上/线下?什么?更新是否分批进行?还是一次一个?拦截他们容易吗?是否涉及复制?等等等等。您的问题没有“一刀切”。
-
抱歉没有更新。 @RickJames 用于价格跟踪和基于它们的计算。我们可以一次做一个,也可以分批做一个,目前是一次一个。目前我们没有复制。
标签: mysql database-design triggers database-administration database-trigger