Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Каким образом лучше организовать обмен между базами? / 25 сообщений из 26, страница 1 из 2
08.02.2021, 11:38
    #40043214
Virikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Коллеги, добрый день.

Подскажите как организован у вас обмен на больших объемах и большом количестве баз.

Есть организация с большим количеством филиалов (приближается к 200 филиалов).

У каждого филиала стоит своя БД. В целом по структуре они однотипные, могут отличаться в момент обновлений. Так как они растянуты по времени из-за часовых поясов.

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

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

Смотрел в сторону CDC и CDR, но так и не смог понять, как там указывать правила куда отправляем и как привязывать дополнительные данные.

Может есть какое то другое решение и я его просто не смог нагуглить? Поделитесь решением, как можно организовать обмен между многими БД.

Спасибо.
...
Рейтинг: 0 / 0
08.02.2021, 12:00
    #40043221
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

Посмотрите в сторону шины.
...
Рейтинг: 0 / 0
08.02.2021, 12:05
    #40043224
Virikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Есть у нас и обмен через шину, но количество записей для обмена велико для шины, за день может быть по 90 млн записей
...
Рейтинг: 0 / 0
08.02.2021, 12:29
    #40043233
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

средняя скорость обмена - 1К сооб/сек? Если объем сообщений не измеряется в мегабайтах, то ничего страшного нет. Помимо размера сообщений, надо еще посмотреть пиковую скорость + допустимые задержки.
...
Рейтинг: 0 / 0
08.02.2021, 12:50
    #40043241
Virikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Я бы сказал 3-5к/с у нас.

Тут больше вопрос не в транспорте, а как фиксировать изменения и накладывать правила. Сейчас регистрация и выгрузка/загрузка идет через собственный софт. Интересуют как раз промышленные решения, которые позволяют регистрировать и отправлять большой объем. Желательно поддерживающий целостность пакетных данных.
...
Рейтинг: 0 / 0
08.02.2021, 12:59
    #40043249
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

шина и есть промышленное решение, которое позволяет удобно работать с правилами маршрутизации сообщений.

Кроме того, можно пересылать через шину не сами данные, а ссылки на них (пачки ссылок), выкачивая данные по ссылкам другими средствами.
...
Рейтинг: 0 / 0
08.02.2021, 13:03
    #40043251
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

Сервис брокер смотрели?
...
Рейтинг: 0 / 0
08.02.2021, 13:07
    #40043254
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

Регистрация - CDC, CT, триггеры.
Обмен - Service Broker.

Возможно и это подойдет - https://docs.microsoft.com/ru-ru/sql/relational-databases/replication/transactional/peer-to-peer-transactional-replication?view=sql-server-ver15
...
Рейтинг: 0 / 0
08.02.2021, 13:09
    #40043256
Virikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
.Евгений
Virikus,

шина и есть промышленное решение, которое позволяет удобно работать с правилами маршрутизации сообщений.

Кроме того, можно пересылать через шину не сами данные, а ссылки на них (пачки ссылок), выкачивая данные по ссылкам другими средствами.


Но чтобы что-то отправить через шину, надо сначала понять какие данные отправлять и куда. Интересует больше эти моменты пока. Просто повешать события на триггеры недостаточно как я понимаю, так по данному изменению может вообще ничего не надо отправлять согласно правилам обмена.

Можете подсказать, что почитать по выкачиванию данных по ссылкам?
...
Рейтинг: 0 / 0
08.02.2021, 13:58
    #40043273
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

лучшее решение - перенести данные на централизованный сервер, организовать "облако" своего рода. То, как у вас сейчас работает, требует колоссальных трудозатрат и имеет риск получить несоответствие данных, требует постоянных синхронизаций, проверок, рассогласование резервных копий и мало ли чего ещё.
...
Рейтинг: 0 / 0
08.02.2021, 14:04
    #40043277
Virikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Владислав Колосов
Virikus,

лучшее решение - перенести данные на централизованный сервер, организовать "облако" своего рода. То, как у вас сейчас работает, требует колоссальных трудозатрат и имеет риск получить несоответствие данных, требует постоянных синхронизаций, проверок, рассогласование резервных копий и мало ли чего ещё.


Да, есть такое. К сожалению на создание централизованного сервера получили категорический отказ руководства.
...
Рейтинг: 0 / 0
08.02.2021, 14:14
    #40043280
Glebanski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

А Kafka вам не подойдет?
...
Рейтинг: 0 / 0
08.02.2021, 14:23
    #40043282
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,

Каждое изменение объекта (создание/модификация/удаление) должно порождать сообщение в шину. В зависимости от правил (централизованных), это сообщение получает от нуля до N подписчиков, которые его обрабатывают и либо непосредственно применяют его на своих данных, либо передают ссылку в ЕТЛ процесс (например, линк к удаленной БД + таблица + идентификатор записи).

Если правила децентрализованы (проблемный вариант), то источник сам должен определять адресатов сообщения.
...
Рейтинг: 0 / 0
08.02.2021, 14:58
    #40043310
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Glebanski
Virikus,

А Kafka вам не подойдет?


Kafka, RabbitMQ, Service Broker
...
Рейтинг: 0 / 0
08.02.2021, 15:11
    #40043316
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus
Да, есть такое. К сожалению на создание централизованного сервера получили категорический отказ руководства.


А обосновали как-то отказ?
...
Рейтинг: 0 / 0
08.02.2021, 16:55
    #40043383
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Критик,
а какая разница, если руководство не вкуривает, что шина - тот же централизованный сервер.
...
Рейтинг: 0 / 0
08.02.2021, 17:24
    #40043400
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
andy st
Критик,
а какая разница, если руководство не вкуривает, что шина - тот же централизованный сервер .


Да ну, фигня какая-то.

Поставьте экспресс, пусть шарашит

Ну, и выше написано про
Kafka
RabbitMQ
...
Рейтинг: 0 / 0
08.02.2021, 18:02
    #40043436
Virikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
У нас используется IBM MQ, для различных интеграций.

Проблема как раз в удобном инструменте регистрации для обмена и большом объеме данных. Кроме этого есть еще особенность при загрузке, так как есть таблицы итогов, которые при загрузке необходимо пересчитывать по ключам.

Насколько понимаю по данной статье https://habr.com/ru/post/514500/ нам подходит вариант CDC, но я пока не понял как настраивать правила, по которым определять куда и какие данные необходимо отправлять и как выполнять дополнительные действия при загрузке.
...
Рейтинг: 0 / 0
08.02.2021, 18:06
    #40043438
Virikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Критик
Virikus
Да, есть такое. К сожалению на создание централизованного сервера получили категорический отказ руководства.


А обосновали как-то отказ?


Хотят чтобы в случаем проблем с центральной базой, филиалы могли независимо работать, плюс беспокоятся насчет безопасности данных, чтобы никто не видел лишнюю информацию
...
Рейтинг: 0 / 0
08.02.2021, 18:24
    #40043446
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus
У нас используется IBM MQ, для различных интеграций.

Проблема как раз в удобном инструменте регистрации для обмена и большом объеме данных. Кроме этого есть еще особенность при загрузке, так как есть таблицы итогов, которые при загрузке необходимо пересчитывать по ключам.

Насколько понимаю по данной статье https://habr.com/ru/post/514500/ нам подходит вариант CDC, но я пока не понял как настраивать правила, по которым определять куда и какие данные необходимо отправлять и как выполнять дополнительные действия при загрузке.


Кстати, еще есть зверюга MSMQ, из сервисов доступен, в коллекцию
...
Рейтинг: 0 / 0
09.02.2021, 16:14
    #40043750
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus
Критик
пропущено...


А обосновали как-то отказ?


Хотят чтобы в случаем проблем с центральной базой, филиалы могли независимо работать, плюс беспокоятся насчет безопасности данных, чтобы никто не видел лишнюю информацию

а у вас на случай недоступности части баз есть механизмы переотправки сообщений??
...
Рейтинг: 0 / 0
23.04.2021, 15:12
    #40065232
alexey2021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Virikus,
здравствуйте!
Я много лет занимаюсь системами интеграции и обмена данными, в т.ч. разработкой и внедрением в различные информационные системы. Мне показался интересным ваш кейс. Не исключено, что смогу помочь...

Чтобы более предметно сфокусироваться на возможных вариантах решения, хотелось бы понять:

- Чем конкретно не устраивает текущее ваше решение ? Оно не справляется по скорости (какая задержка доставки данных) ? Не обеспечивает должное качество/консистентность данных ? Сложное в сопровождении ? Создает проблемы при обновлениях прикладной платформы ? В нём не реализован какой-то важный для бизнеса функционал ? Что-то другое?

- Какого типа у вас прикладная платформа ? 1С, Акспата, что-то самописное, что-то другое ...?
...
Рейтинг: 0 / 0
23.04.2021, 17:05
    #40065286
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Владислав Колосовлучшее решение - перенести данные на централизованный сервер, организовать "облако" своего рода. То, как у вас сейчас работает, требует колоссальных трудозатрат и имеет риск получить несоответствие данных, требует постоянных синхронизаций, проверок, рассогласование резервных копий и мало ли чего ещё.
Полностью согласен.
В течение нескольких лет поддерживал и самописную репликацию и репликацию слиянием на SQL-сервере.
Это бесконечные проблемы.
С первой попытки такое решение не сделать.
При обсуждении этой темы бесполезны разговоры о триггерах, сервис-брокерах и т.п.
Нужно обсуждать особенности уже готового решения.
...
Рейтинг: 0 / 0
23.04.2021, 17:23
    #40065293
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Пробовали слезть с репликации слиянием на шину от Tibco, не прокатило - спецы неделями делали адаптер для всего лишь одной таблицы, получалась очень низкая скорость передачи данных, не было гарантии доставки данных.
Может, спецы не те были.
Репликация слиянием удручала жесткими ограничениями на изменение схемы данных, блокировками на общих системных таблицах и бесконечными конфликтами на изменении данных.
Лучше всего работала самописка. Очень большой плюс был в том, что можно было ее переделывать как угодно.
...
Рейтинг: 0 / 0
26.04.2021, 10:03
    #40065822
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом лучше организовать обмен между базами?
Пробовали слезть с репликации слиянием на шину от Tibco, не прокатило - спецы неделями делали адаптер для всего лишь одной таблицы, получалась очень низкая скорость передачи данных, не было гарантии доставки данных.
Может, спецы не те были.
Репликация слиянием удручала жесткими ограничениями на изменение схемы данных, блокировками на общих системных таблицах и бесконечными конфликтами на изменении данных.
Лучше всего работала самописка. Очень большой плюс был в том, что можно было ее переделывать как угодно.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Каким образом лучше организовать обмен между базами? / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]