MongoDB в DynamoDB

В настоящее время у меня есть база данных в Монго, работающая на экземпляре EC2, и я хочу перенести данные в DynamoDB. Возможно ли это и как наиболее экономически эффективным способом добиться этого?

4 ответа

Решение

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

  • Экспортируйте данные MongoDB в текстовый файл, скажем, в формате tsv, используя mongoexport.
  • Загрузите этот файл где-нибудь в S3.
  • Импортируйте эти данные в S3 в DynamoDB с помощью AWS Data Pipeline.

Конечно, вы должны разработать и доработать схему таблицы DynamoDB, прежде чем делать все это.

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

Тогда есть только форматы данных, которые не могут обработать вашу схему. Например, CSV отлично справляется с обработкой данных, когда в каждой записи по одной строке, но как вы отображаете встроенный массив в CSV? Это действительно невозможно, JSON хорош в этом, но у JSON есть свои проблемы.

Самый простой пример этого - JSON и DateTime. JSON не имеет спецификации для хранения значений DateTime, они могут заканчиваться датами ISO8601 или, возможно, метками времени эпохи UNIX, или действительно чем-то, что разработчик может придумать. А как насчет длинных, двойных, целых? JSON не различает, он делает их все строками, которые могут привести к потере точности, если не будут правильно десериализованы.

Это делает очень важным, чтобы вы выбрали подходящую среду перевода. Как правило, означает, что вы должны свернуть свое собственное решение. Это означает загрузку драйверов для обеих баз данных, чтение записи из одной, перевод и запись в другую. Это лучший способ быть абсолютно уверенным в том, что ошибки правильно обрабатываются для вашей среды, что типы хранятся согласованно и что код правильно переводит схему из источника в место назначения (при необходимости).

Что все это значит для вас? Это значит, что вам нужно много работы для ног. Возможно, кто-то уже накатил что-то достаточно широкое для вашего случая, но в прошлом я обнаружил, что вам лучше сделать это самостоятельно.

Я знаю, что этот пост старый, Amazon сделал это с помощью AWS DMS, проверьте этот документ:

https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MongoDB.html

Некоторые важные части:

Использование базы данных Amazon DynamoDB в качестве цели для службы миграции баз данных AWS

Вы можете использовать AWS DMS для переноса данных в таблицу Amazon DynamoDB. Amazon DynamoDB - это полностью управляемая служба баз данных NoSQL, которая обеспечивает быструю и предсказуемую производительность с плавной масштабируемостью. AWS DMS поддерживает использование реляционной базы данных или MongoDB в качестве источника.

Другие вопросы по тегам