当前情况:
我们有数据库表可记录审核数据,并且大多数时间基于object_id
在表上触发查询,而很少在created_date
范围内进行查询。 audit_log
表存储了最近一个月的数据,一个月后的数据被移动到archive_audit_log
表中。这些表位于Amazon
RDS
中。
CREATE TABLE IF NOT EXISTS audit_log (
id INT AUTO_INCREMENT,
object_id INT NOT NULL,
created_date DATE,
old_value TEXT,
new_value TEXT,
PRIMARY KEY (id)
) ENGINE=INNODB;
表中约有1M +记录。
以及具有完全相同结构的相应存档表。
CREATE TABLE IF NOT EXISTS archive_audit_log (
id INT AUTO_INCREMENT,
object_id INT NOT NULL,
created_date DATE,
old_value TEXT,
new_value TEXT,
PRIMARY KEY (id)
)ENGINE=ARCHIVE;
表中约有4000万条记录,并且在不断增长,其中一个数据库的当前大小为(90 GB)。由于我们与客户之间的合同义务,因此无法删除此数据。
我面临的问题:
当我们在archive_audit_log
上查询时,UI通常会超时。
做任何导入/导出和每日备份以及许多其他操作都需要更长的时间。
我正在考虑的解决方案:
我正在考虑将archive_audit_log
数据移至S3
到多个文件中,然后使用'Amazon Athena`服务进行查询以获取结果。
我想知道在有人动手之前是否有人在使用AWS Athena
这样的用例吗?
另外,是否有limitation
或restriction
应用于查询数量与结果记录数量之间?
感谢您阅读问题,任何指针将不胜感激。
答案 0 :(得分:0)
这听起来像是雅典娜的好用例。不用将行移动到archive_audit_log
,而是将它们移动到S3上的CSV并使用Athena进行查询。根据您的应用程序所使用的平台,您将必须对其进行重写,以便能够针对Athena运行查询(例如,SQL方言与MySQL稍有不同,并且驱动程序也将有所不同)。
Athena中有一些限制,例如可以运行多少个并发查询,但结果中的记录没有限制。如果您达到并发查询的限制,则可以要求AWS支持增加您的限制,而且我非常有信心您不会对此限制有任何疑问。每个查询都有30分钟的硬运行时间限制,但是您也不太可能遇到。雅典娜算不上四千万行。