Подходы для миграции файлов .csv, хранящихся в S3, в DynamoDB? - PullRequest
1 голос
/ 08 марта 2019

В S3 хранятся сотни тысяч CSV-файлов, каждый из которых содержит как минимум несколько записей данных. (каждая запись - это отдельная строка)

Я пытаюсь разработать стратегию миграции для преобразования всех записей в файлах .csv и помещения их в DynamoDB. Во время миграции я также хотел бы убедиться, что если любой новый .csv будет добавлен в корзину S3, мы автоматически запустим лямбду или что-то еще, чтобы выполнить преобразование и выполнить запись в DynamoDB.

В конце концов мы полностью прекратим запись в S3, но изначально нам нужно сохранить эти записи и любые записи в S3, чтобы также инициировать запись в DynamoDB. Кто-нибудь знает какие-либо хорошие стратегии для этого? (Есть ли что-то похожее на потоки DynamoDB, кроме S3?) Какие-нибудь стратегии для передачи существующих вещей из .csv в S3 в DynamoDB в целом?

Ответы [ 2 ]

2 голосов
/ 09 марта 2019

В AWS есть много инструментов, которые вы можете использовать для решения этой проблемы. Вот несколько.

  1. Вы можете использовать Сервис миграции базы данных AWS . Он поддерживает миграцию данных из S3 и в DynamoDB . Этот продукт AWS разработан специально для вашего случая использования и обрабатывает практически все.

    После начала миграции DMS управляет всеми сложностями процесса миграции, включая автоматическую репликацию изменений данных, которые происходят в исходной базе данных во время процесса миграции.

  2. S3 может публиковать события для запуска лямбда-функции , которую можно использовать для непрерывной репликации данных в DynamoDB.

  3. AWS Data Pipelines в основном выполняет пакетные задания ETL, которые могут одновременно переместить ваши данные из S3 в DynamoDB. Вы также можете запускать периодические задания синхронизации, если допустите задержку репликации данных в DynamoDB.
  4. AWS Glue может сканировать ваши данные, обрабатывать их и сохранять в другом месте. Я думаю, что это обеспечит вам начальную загрузку плюс текущую репликацию. Хотя он может работать, он больше предназначен для неструктурированных данных, и у вас есть CSV-файлы, которые обычно структурированы.

Я бы порекомендовал использовать AWS Database Migration Service, потому что это универсальное решение, но если вы по какой-то причине не можете его использовать, есть и другие варианты.

1 голос
/ 08 марта 2019

Я не знаю, есть ли у DynamoDB функция «загрузить записи из CSV» (RedShift делает).

Если этого не произойдет, вы можете свернуть свою собственную.Напишите функцию Python, которая импортирует модули csv и boto3, принимает в качестве входных данных путь S3 (внутри словаря событий).Функция будет загружать файл из S3 во временный каталог, анализировать его с помощью csv, а затем использовать boto3 для вставки в DynamoDB.

Чтобы загрузить историю, напишите функцию, которая использует `boto3 'для чтениясписок объектов в S3, затем вызовите первую функцию для загрузки в DynamoDB.

Чтобы загрузить будущие файлы, установите первую функцию в качестве лямбда-функции и добавьте триггер из событий создания объекта S3 для запускафункционирует всякий раз, когда новый объект помещается на S3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...