Потоковая передача данных из Авроры в S3 для озера данных - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать озеро данных , используя S3, откуда поступают данные из Авроры и, в конечном итоге, из других источников;Тем не менее, У меня проблемы с созданием экономически эффективного решения.
Я пытался использовать Data Migration Service (DMS) для потока данных из Авроры в S3.
Поскольку данные поступают в S3 в формате csv либо:
(1) Начальная загрузка: (column1, column2, column3, ...)
(2) Изменения в данных:(D / U / I, column1, column2, column3, ...) [D: удалить, U: обновить: I: вставить]
Я пытался преобразовать данные таким образом, чтобыS3 Bucket содержит только данные, которые не имеют префикса D / U / I.
Чтобы выполнить это преобразование, я подумал об использовании следующей модели:

Aurora -> Dirty S3 Bucket -> CuratedS3 Bucket -> Athena запрашивает у Куратор S3 Bucket

Dirty S3 Bucket содержит данные в формате (column1, column2, column3, ...) и (D / U / I, столбец 1, столбец 2, столбец 3, ...) .Когда новые данные поступают в эту корзину, отправляется сообщение SNS, и лямбда-функция должна прочитать вновь поступивший файл, преобразовать данные и поместить их в Куратор S3 , где Куратор S3Bucket содержит данные только в формате (column1, column2, column3, ...) .

Предполагая, что все данные из Авроры будут иметь столбцы create_at и updated_at , я подумал:

  • Разделение данных вS3 на основе / год / месяц / день / час (с использованием create_at ):
    • Однако, если данные разбиты на основе / год / месяц / день / час тогда я предполагаю, что затраты будут слишком высокими.
      • Это основано на предположениях, что:
        • 40000 запросов в день (вставки / обновления / удаления)
        • 0,05 ГБ, средний размер файла
        • $ 0,01 заГБ (для данных, возвращаемых S3)
        • $ 0,01 на 1000 запросов (PUT, COPY или POST-запросов)
        • $ 0,001 на 1000 запросов (GET, SELECT и все другие запросы)
      • Расходы на получение данных в день = 40000 rpd * 0,05 ГБ * $ 0,01 за ГБ = 20
      • Расходы на запрос данных в день = $ 0,001 * (40000 rdd / 1000) = .04
      • Общие затраты = 20,04 в день

Отметим, что этот расчет приведен только для одной таблицы;Будет более 5 таблиц с одинаковыми показателями.
Таким образом, ежемесячные расходы будут превышать $ 3000 .

Есть ли намного более экономически эффективный способ потоковых данных от сияния до s3?
Или мне придется прибегнуть к получению ежедневного снимкаАврора БД с целью снижения затрат?

...