Экспорт данных JSON и загрузка в реляционную базу данных

Существует ли стандартный способ преобразования данных JSON в реляционную базу данных с несколькими таблицами? Нам нужно экспортировать наши данные из экземпляра MongoDB и импортировать их в кластер Redshift. Единственная проблема заключается в том, что некоторые поля MongoDB содержат объекты и массивы. Кластер Redshift принимает CSV, поэтому я думаю, что на выходе будет как минимум один файл CSV для каждой новой таблицы.

Мне не нужна конкретная реализация. Я просто хотел узнать, как эффективно преобразовывать данные JSON/NoSQL в реляционный формат.


person alexishacks    schedule 22.07.2014    source источник


Ответы (1)


у нас есть наша база данных mongo, в которой хранятся данные JSON. Мы хотели перенести данные в Redshift для некоторых запросов.

Мы использовали mongoexport csv для создания csv из таблицы mongo и загрузили его на S3. Мы создали соответствующую реляционную схему в Redshift и использовали команды копирования для загрузки этих данных csv из s3 в redshift.

Мы можем использовать API-интерфейс Java для запроса mongo, а также для создания и загрузки csv в s3. То же самое можно загрузить в красное смещение.

Настоящая проблема заключается в том, что, поскольку мы используем mongo (json) или NoSQL, у нас может быть разное количество столбцов для данного объекта, который принадлежит одной и той же таблице (как мы JSON), но в Redshift у нас есть фиксированное количество столбцов на таблицу. Поэтому в таких случаях вы необходимо создать все возможные столбцы и загрузить данные. Для тех объектов, которые не имеют всех столбцов, мы можем заполнить для них нулевые значения.

person Sandesh Deshmane    schedule 22.07.2014
comment
Задача для нас состоит в том, чтобы преобразовать поля типа Array в нашей MongoDB в реляционные данные (т. е. несколько таблиц). Это связано с тем, что Redshift поддерживает функции JSON очень ограниченно. Кроме того, наши данные достигают миллионов записей с более чем 30 полями. - person alexishacks; 23.07.2014
comment
да, у нас есть массив (вложенный массив, если мы рассматриваем массив PHP) в MongoDB. Мы конвертируем их в формат csv со всеми возможными столбцами. У нас есть около 33 столбцов и 300 миллионов строк при преобразовании в csv. позже мы загрузим Redshift с помощью команды копирования - person Sandesh Deshmane; 23.07.2014