Монгодб к красному смещению

mongodb amazon-redshift

5171 просмотра

7 ответа

368 Репутация автора

У нас есть несколько коллекций в mongodb, которые мы хотим перенести в красное смещение (автоматически, ежедневно). Как мы можем это сделать? Должны ли мы экспортировать монго в CSV?

Автор: AJ222 Источник Размещён: 28.01.2014 01:07

Ответы (7)


0 плюса

637 Репутация автора

Вот несколько вопросов, которые было бы полезно узнать:

  1. Является ли это добавкой, всегда увеличивающей добавочную синхронизацию, т.е. данные только добавляются и не обновляются / удаляются, или ваш экземпляр красного смещения интересуется только дополнениями?
  2. Является ли несогласованность данных из-за удаления / обновления, происходящего в источнике и не переданного в экземпляр красного смещения, хорошо?
  3. Это должна быть ежедневная добавочная партия или она может быть в реальном времени, как это происходит?

В зависимости от вашей ситуации mongoexport может работать для вас, но вы должны понимать ее недостаток, который можно найти по адресу http://docs.mongodb.org/manual/reference/program/mongoexport/ .

Автор: aks Размещён: 28.01.2014 08:45

0 плюса

482 Репутация автора

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

Мое решение этого состояло в том, чтобы передать mongoexport в небольшую служебную программу, которую я написал, которая преобразует строки mongoexport json в желаемый вывод csv. передача вывода также позволяет сделать процесс параллельным.

Mongoexport позволяет вам добавить запрос mongodb в команду, поэтому, если ваши данные сбора поддерживают это, вы можете запустить N различных процессов mongoexport, передать их результаты в другую программу и уменьшить общее время выполнения процесса миграции.

Позже я загрузил файлы на S3 и выполнил КОПИРОВАНИЕ в соответствующую таблицу.
Это должно быть довольно простым решением.

Автор: Meny Issakov Размещён: 19.08.2014 07:48

15 плюса

3633 Репутация автора

Я написал некоторый код для экспорта данных из Mixpanel в Redshift для клиента. Первоначально клиент экспортировал в Mongo, но мы обнаружили, что Redshift предлагает очень большие улучшения производительности для запроса. Итак, прежде всего мы перенесли данные из Mongo в Redshift, а затем мы пришли к прямому решению, которое переносит данные из Mixpanel в Redshift.

Для сохранения данных JSON в Redshift сначала необходимо создать SQL DDL для хранения схемы в Redshift, то есть CREATE TABLEсценарий.

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

В качестве альтернативы DDLgenerator может генерировать DDL из различных источников, включая CSV или JSON. Это также борется с большими наборами данных (хорошо, набор данных, с которым я имел дело, был 120 ГБ).

Таким образом, теоретически вы можете использовать MongoExport для генерации CSV или JSON из Mongo, а затем запустить его через генератор DDL для получения DDL.

На практике я обнаружил, что использовать экспорт JSON немного проще, потому что вам не нужно указывать поля, которые вы хотите извлечь. Вам нужно выбрать формат массива JSON. В частности:

   mongoexport --db <your db> --collection <your_collection> --jsonArray > data.json
   head data.json > sample.json
   ddlgenerator postgresql sample.json       

Здесь - потому что я использую head- я использую образец данных, чтобы показать процесс работает. Однако, если ваша база данных имеет вариации схемы, вы хотите вычислить схему на основе всей базы данных, что может занять несколько часов.

Затем вы загружаете данные в Redshift .

Если вы экспортировали JSON, вам необходимо использовать функцию копирования из JSON в Redshift . Для этого вам нужно определить JSONpath .

Для получения более подробной информации ознакомьтесь с снегоочиститель блог - они используют JSONpaths для отображения JSON на реляционную схему . Посмотрите их сообщение в блоге о том, почему люди могут захотеть читать JSON в Redshift .

Превращение JSON в столбцы позволяет выполнять запросы намного быстрее, чем другие подходы, такие как использование JSON EXTRACT PATH TEXT.

Для инкрементных резервных копий это зависит от того, добавляются ли данные или данные меняются. Для аналитики это обычно первое. Подход, который я использовал, заключается в том, чтобы экспортировать аналитические данные один раз в день, а затем постепенно копировать их в Redshift.

Вот некоторые связанные ресурсы, хотя в конце я не использовал их:

  • Spotify имеет проект с открытым исходным кодом под названием Luigi - этот код утверждает, что загружает JSON в Redshift, но я не использовал его, поэтому я не знаю, работает ли он.
  • У Amiato есть веб-страница, на которой написано, что они предлагают коммерческое решение для загрузки данных JSON в Redshift, но кроме этого информации не так много.
  • В этом блоге обсуждается выполнение ETL для источников данных JSON, таких как Mixpanel в Redshift.
  • Связанный вопрос Redit
  • Сообщение в блоге о работе с массивами JSON в Redshift
Автор: Mark Butler Размещён: 10.10.2014 10:00

5 плюса

51 Репутация автора

Честно говоря, я бы порекомендовал здесь использовать стороннюю. Я использовал Panoply (panoply.io) и рекомендую его. Он возьмет ваши коллекции монго и разложит их на свои собственные столы в красное смещение.

Автор: Abhi Sivasailam Размещён: 09.04.2017 06:45

1 плюс

654 Репутация автора

Служба миграции баз данных AWS (DMS) добавляет поддержку MongoDB и Amazon DynamoDB. Поэтому я думаю, что в настоящее время лучшим вариантом для перехода с MongoDB на Redshift является DMS.

  • MongoDB версии 2.6.x и 3.x в качестве источника базы данных
  • Режим документа и режим таблицы поддерживается
  • Поддерживает сбор данных изменений (CDC)

Подробности - http://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MongoDB.html

Автор: faisal_kk Размещён: 22.04.2017 09:36

0 плюса

1 Репутация автора

Экспортируйте данные из mongodb в формате csv в файл csv постепенно. Скопируйте CSV-файл в красное смещение с помощью команды копирования красного смещения.

Автор: Sidharth Singla Размещён: 26.07.2017 12:14

0 плюса

1 Репутация автора

Для базовой репликации вы можете сделать это: 1. Создайте JSON-файл MongoDB, используя Export. 2. Переместите его на S3. 3. Создайте схему таблицы и, используя COPY, переместите ее в красное смещение.

При выполнении всего этого я столкнулся с несколькими проблемами, такими как проблемы с вложенными объектами и схемами. Для подробного ознакомления посмотрите, [this blog post][1]что я недавно натолкнулся.

Автор: Hallelujah Размещён: 09.12.2018 06:32
Вопросы из категории :
32x32