将存档 table 数据存储到 S3 并使用 AWS Athena 进行查询
Storing archive table data to S3 and query using AWS Athena
当前场景:
我们有数据库 table 来记录审计数据,查询在 table 上触发,大部分时间基于 object_id
,很少在 created_date
范围内触发。 audit_log
table 存储最后一个月的数据,一个月后数据移至 archive_audit_log
table。这些 tables 位于 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;
table.
中大约有 1M+ 条记录
和相应的归档 table 具有完全相同的结构。
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;
table 中大约有 40M+ 条记录,并且还在不断增长,其中一个数据库的当前大小为 (90 GB)。由于我们与客户的合同义务,无法删除此数据。
我面临的问题:
UI 通常在我们查询 archive_audit_log
时超时。
执行任何 import/export 和每日备份以及许多其他操作都需要更长的时间。
我想的解决方案:
我正在考虑将 archive_audit_log
数据移动到 S3
到多个文件中,然后使用“Amazon Athena”服务进行查询以获取结果。
我想知道在烧伤我的手之前是否有人将 AWS Athena
用于此类用例?
此外,是否有任何 limitation
或 restriction
应用于查询数量与结果中的记录数量?
感谢您阅读问题,如有任何指点,我们将不胜感激。
这听起来像是 Athena 的一个很好的用例。不要将行移动到 archive_audit_log
,而是将它们移动到 S3 上的 CSV 并使用 Athena 查询它们。根据您的应用程序使用的平台,您必须重写它才能 运行 针对 Athena 的查询(SQL 方言与 MySQL 略有不同,驱动程序也会不同,例如)。
Athena 中有限制,例如您可以同时查询多少个 运行,但对结果中的记录没有限制。如果您达到并发查询的限制,您可以要求 AWS Support 提高您的限制,我相信您不会遇到任何限制问题。每个查询有 30 分钟 运行 时间的硬性限制,但您也不太可能命中。 4000 万行对 Athena 来说不算什么。
当前场景:
我们有数据库 table 来记录审计数据,查询在 table 上触发,大部分时间基于 object_id
,很少在 created_date
范围内触发。 audit_log
table 存储最后一个月的数据,一个月后数据移至 archive_audit_log
table。这些 tables 位于 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;
table.
中大约有 1M+ 条记录和相应的归档 table 具有完全相同的结构。
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;
table 中大约有 40M+ 条记录,并且还在不断增长,其中一个数据库的当前大小为 (90 GB)。由于我们与客户的合同义务,无法删除此数据。
我面临的问题:
UI 通常在我们查询 archive_audit_log
时超时。
执行任何 import/export 和每日备份以及许多其他操作都需要更长的时间。
我想的解决方案:
我正在考虑将 archive_audit_log
数据移动到 S3
到多个文件中,然后使用“Amazon Athena”服务进行查询以获取结果。
我想知道在烧伤我的手之前是否有人将 AWS Athena
用于此类用例?
此外,是否有任何 limitation
或 restriction
应用于查询数量与结果中的记录数量?
感谢您阅读问题,如有任何指点,我们将不胜感激。
这听起来像是 Athena 的一个很好的用例。不要将行移动到 archive_audit_log
,而是将它们移动到 S3 上的 CSV 并使用 Athena 查询它们。根据您的应用程序使用的平台,您必须重写它才能 运行 针对 Athena 的查询(SQL 方言与 MySQL 略有不同,驱动程序也会不同,例如)。
Athena 中有限制,例如您可以同时查询多少个 运行,但对结果中的记录没有限制。如果您达到并发查询的限制,您可以要求 AWS Support 提高您的限制,我相信您不会遇到任何限制问题。每个查询有 30 分钟 运行 时间的硬性限制,但您也不太可能命中。 4000 万行对 Athena 来说不算什么。