Как объединить данные в MongoDB с SQL Server? - PullRequest
2 голосов
/ 15 декабря 2011

У меня есть система, которая хранит данные в базе данных MongoDB.Теперь мне нужно объединить данные (около десятка полей из каждой записи) с большими наборами данных, хранящимися в Microsoft SQL Server 2008. Как это сделать?

Обе базы данных постоянно накапливают данные, и запросы всегда должны включать свежие данные (задержка в несколько минут - это нормально).Я ожидаю до нескольких тысяч новых или обновленных записей в день на MongoDB и не могу изменить базу данных SQL Server.

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

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Во-первых, я бы посмотрел на направление вашего выбора данных. Если у вас есть коллекция данных документов Mongo, и вы хотите, чтобы все данные SQL Server были связаны с ними, то, если коллекция не велика и критерии не сложны, вы просто используете традиционный цикл.

С другой стороны, если критерии объединения довольно сложны и связаны (т. Е. Для всех документов Mongo и строк SQL Server и многих полей и столбцов), только SQL Server действительно будет работать так же хорошо (с учетом соответствующих индексов) 1003 *

Вы можете mongoexport экспортировать коллекцию измененных документов в CSV, затем выполнить загрузку в SQL Server и затем выполнить свои объединения в собственном SQL. Соединения из существующей базы данных SQL с другой базой данных на том же сервере, как правило, обеспечивают высокую производительность - в начале проверки безопасности немного больше,

0 голосов
/ 02 октября 2013

Это похоже на типичную задачу для инструмента ETL. Вы экспортируете данные из MongoDB и SQLServer, присоединяете их во внешнем инструменте и загружаете их обратно или делаете все, что вам нужно. Что касается приращений, то зависит от того, сохраняете ли вы какую-то временную метку или что-то еще, что позволяет вам определять, что является «новым» с последнего раза. Инструменты ETL в наши дни довольно быстрые, поэтому они почти могут работать в режиме «транзакции».

Вы можете посмотреть на CloverETL (например). В этом блоге рассказывается, как объединить две разные коллекции MongoDB. В вашем случае одно чтение коллекции может быть заменено чтением таблицы SQLServer (преимущество технологии ETL): http://blog.cloveretl.com/joining-multiple-mongodb-collections-in-cloveretl

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