将归档表数据存储到S3并使用AWS Athena进行查询

问题描述 投票:0回答:1

当前场景:我们有数据库表来记录审计数据,并且大多数时候基于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;

表中约有大约40M +记录,并且在一个数据库中保持增长和当前大小为(90 GB)。由于我们与客户的合同义务,因此无法删除此数据。

我面临的问题:当我们查询archive_audit_log时,UI通常会超时。它需要更长的时间来进行任何导入/导出和每日备份以及许多其他。

解决方案我在想:我正在考虑将archive_audit_log数据移动到S3到多个文件,然后使用'Amazon Athena`服务进行查询以获得结果。

我想知道是否有人在烧手之前使用AWS Athena这样的用例?此外,是否有任何limitationrestriction适用于查询数量与结果中的记录数量?感谢您阅读该问题,任何指针都将不胜感激。

mysql amazon-s3 amazon-rds amazon-athena
1个回答
0
投票

这听起来像雅典娜的一个很好的用例。而不是将行移动到archive_audit_log,将它们移动到S3上的CSV并使用Athena查询它们。根据您的应用程序使用的平台,您必须重写它以便能够针对Athena运行查询(SQL方言与MySQL略有不同,例如驱动程序将不同)。

Athena有一些限制,例如您可以运行多少个并发查询,但结果中的记录没有限制。如果达到并发查询的限制,您可以要求AWS支持人员增加限制,我相信您不会遇到限制问题。每个查询有一个30分钟运行时的硬限制,但这也不太可能。 40M行对雅典娜来说没什么。

© www.soinside.com 2019 - 2024. All rights reserved.