Привет всем. Работаю в крупной и быстро развивающейся компании. У нас огромная база данных, которая распилена на 2 дата-центра и множества тачек. В общем есть задача синхронить данные между базами.
1 - Azure Fabric Service клевое решение, очень гибкое и позволяет сделать практически не убиваемый слой с микросервисами
2 - Windows служба. Стартует служба, проверяет в базе новые данные предоставляемые из особой таблицы, смотрит в настройках, что куда перенести, и в N-кол-во потоках переносит данные из одной базы в другую.
PS: Просто крутится бесконечный цикл, который каждые 5 сек проверяет в каких базах произошли изменения, достает параметры, в которых есть указания куда эти данные заливать. И все.
Выше перечисленное используется коллегами, но в другом проекте.
Плюсы первого в том, что там конкретные микросервисы, выполняющие свою задачи. Их можно запустить в несколько инстансов, сделать кластер и вертеть их как только в голову взбредет.
У второго плюсов нет, но это быстрый вариант, с точки зрения реализации.
Нужно сделать быстро, но хотелось бы качественно все это организовать. Была мысль раскрутить это на .NET Core + Docker , но чет мне кажется со сроками не успеем.
В общем, может вы делали когда нибудь, что-то на подобие копирования баз и есть какой-то интересный опыт, напишите к чему пришли и что в итоге из это вышло. Может фреймворк какой есть готовый или еще что-то.
По первой ссылке Sync Framework. Не знаю, на сколько он подойдет для текущей задачи, но попробую с ним разобраться. Еще есть подозрение, что он стар как мамонт. И не нацелен ли он на локальную базу оффлайн? Мне нужно синхронить 2 боевых базы.
Вторая ссылка не открывается
В вторую ссылку всралась очепятка, то бишь точка ;-) Я все к тому что поддержка БД это дело инструментов уровня БД и не стоит ее выносить на прикладной уровень.
Axian Ltd.: есть хранимка в Source базе, которая возвращает огромный массив данных из разных таблиц. Нужно заюзать хранику в базе Target которая эти данные раскидает куда надо. Т.е. тут не полное копирование таблиц, а именно копирование сущностей принадлежащие большому бизнес процессу.
Тогда собственный синхронизатор-сервис, идея про .NET Core + Docker мне нравиться. Хотя для сроков можно и по шагам:
- просто приложение на VPS или железе (заодно и алгоритмы обкатаете) чтобы с окружением не заморачиваться
- сервис в собственном Docker или Azure, или еще где
Axian Ltd.: ну да. Так и планировалось. Сначала консольку, под виндой для обкатки, потом можно и на бой в службах развернуть если получится (это же будет NET Core).