Периодически извлекать и преобразовывать данные из Sql Server в MongoDB - PullRequest
0 голосов
/ 14 мая 2018

У меня есть база данных Sql Server, которая используется для хранения данных, поступающих из разных источников (писателей).

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

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

Мне не нужны данные, чтобы жить, просто не старше 24 часов по сравнению с 'master 'database.

Но как лучше всего этого добиться?Можете ли вы порекомендовать какие-либо инструменты для него (желательно бесплатные) или лучше написать свое собственное программное обеспечение и запланировать его периодическую работу?

1 Ответ

0 голосов
/ 14 мая 2018

Я рекомендую соблюдать принцип NIH, чтение и преобразование данных - это хорошо понятное упражнение. Доступно несколько бесплатных инструментов ETL с различными подходами и направленностью. Pentaho (от Kettle) и Talend являются примерами на основе пользовательского интерфейса. Существуют другие среды ETL, такие как Rhino ETL , которые просто предоставляют вам набор инструментов для написания ваших преобразований в коде. Какой из них вы предпочитаете, зависит от ваших знаний и, что неудивительно, предпочтений. Если вы не разработчик, я предлагаю использовать один из инструментов на основе пользовательского интерфейса. Я использовал Pentaho ETL в ряде небольших сценариев хранилища данных, это можно запланировать с помощью инструментов операционной системы (cron в Linux, планировщик задач в Windows). Более сложные сценарии могут использовать сервер репозитория Pentaho PDI, который позволяет централизованно хранить и планировать ваши задания и преобразования. Он имеет коннекторы для нескольких типов баз данных, включая MS SQL Server. Я сам не использовал Talend, но слышал о нем много хорошего, и он тоже должен быть в вашем списке.

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

...