Сохранение данных архивной таблицы на S3 и запрос с использованием AWS Athena - PullRequest
0 голосов
/ 15 апреля 2019

Текущий сценарий: У нас есть таблица базы данных для регистрации данных аудита, и запрос запускается по таблице на основе 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 ГБ). Эти данные не могут быть удалены из-за наших договорных обязательств с клиентами.

Проблемы, с которыми я сталкиваюсь: Пользовательский интерфейс обычно истекает, как и когда мы запрашиваем archive_audit_log. На импорт / экспорт, ежедневное резервное копирование и многое другое уходит больше времени.

Решение Я думаю: Я думаю переместить данные archive_audit_log в S3 в несколько файлов, а затем выполнить запрос, используя сервис Amazon Athena, чтобы получить результат.

Я хочу знать, использует ли кто-то AWS Athena для такого варианта использования, прежде чем сжечь мою руку? Кроме того, есть ли limitation или restriction, которые применяются к числу запросов против количества записей в результатах? Спасибо за чтение вопроса, любые указатели будут оценены.

1 Ответ

0 голосов
/ 16 апреля 2019

Это звучит как хороший пример использования Афины.Вместо перемещения строк в archive_audit_log, переместите их в CSV на S3 и используйте Athena для их запроса.В зависимости от того, какую платформу использует ваше приложение, вам придется переписать его, чтобы иметь возможность выполнять запросы к Athena (например, диалект SQL немного отличается от MySQL, а драйвер будет другим).

Тамэто ограничения в Афине, например, сколько одновременных запросов вы можете выполнить, но нет ограничений на записи в результате.Если вы превысили лимит одновременных запросов, вы можете попросить службу поддержки AWS увеличить свой лимит, и я уверен, что у вас не возникнет проблем с лимитами.Существует жесткое ограничение времени выполнения 30 минут на запрос, но это также маловероятно, что вы попадете.40 миллионов строк - ничто для Афины.

...