Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать? / 22 сообщений из 22, страница 1 из 1
15.12.2021, 13:48
    #40120214
DBdevchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Добрый день!

А случайно никто не занимался самодельной репликацией для MS SQL на C++ или еще на чем нибудь?
Пока только увидел инфу, что репликация в MS SQL это самостоятельный процесс и его можно реализовать самому.
А вот дальше, что-то ничего не гуглится.

А смысл идеи вообще такой. Вот есть у меня сервер или кластер, для меня он просто адрес и порт.
Подключаюсь я к нему и тяну заданную базу на другой сервер, интересуют (пока) только таблицы.
Все остальное в базе (индексы там, процедуры, логины) пока не очень интересуют.
А на среплицированной базе, чтоб была возможность создавать какие-то свои индексы.
Репликация нужна реалтайм, а не раз в сутки лог накатить.
...
Рейтинг: 0 / 0
15.12.2021, 14:11
    #40120225
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
...
Рейтинг: 0 / 0
15.12.2021, 15:00
    #40120245
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik
Репликация нужна реалтайм, а не раз в сутки лог накатить.

Значит на исходной стороне надо организовать CDC (Changed Data Capture), потом перенос полученных изменений на целевую сторону и применение их там. Первое в MS SQL есть, на тебе второе и третье (которые гораздо проще).
...
Рейтинг: 0 / 0
15.12.2021, 15:02
    #40120246
DBdevchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?


Плохо дружит с кластерами.
Плохо дружит с разными версиями серверов.
Плохо работает на медленных каналах.
...
Рейтинг: 0 / 0
15.12.2021, 15:07
    #40120252
DBdevchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Dimitry Sibiryakov

Значит на исходной стороне надо организовать CDC (Changed Data Capture), потом перенос полученных изменений на целевую сторону и применение их там. Первое в MS SQL есть, на тебе второе и третье (которые гораздо проще).


А "второе" и "третье" это должны были быть ссылки?
...
Рейтинг: 0 / 0
15.12.2021, 15:23
    #40120260
dvim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik,

Репликация нужна реалтайм, а не раз в сутки лог накатит
Задержка не более нескольких минут - норма.
Мердж реплика ... более 10 лет

Плохо дружит с разными версиями серверов.
Был опыт - на удивление работало неплохо.

Плохо работает на медленных каналах.
Тут есть нюанс с прокачиванием снапшота
Во очень давние времена ( я еще в школе был) рассказывали что возили данные винтами.

По мне своя реплика хороша для 1-2 таблиц, где структура постоянна и нужна именно легковесность и понятность.
Если говорим о "всей" базе - то рисков больше чем плюсов
...
Рейтинг: 0 / 0
15.12.2021, 15:33
    #40120269
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik
...Плохо работает на медленных каналах...

транзакционная репликация на mssql 2000 на каналах 32-64кбит/сек с постоянными обрывами жила 10 лет до момента, пока не заменили каналы на побыстрее и понадежнее.

Вообще имеет смысл изучить предметную область и попытаться осознать масштабы задачи. Особенно если пытаться пилить в общем виде.
А простенько пишется в джобах в виде insert .. select на линкованных серверах или небольшим пакетом в ssis.
...
Рейтинг: 0 / 0
15.12.2021, 15:37
    #40120273
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik,


CDC + SSIS, вот вам и PUSH репликация. Даже CT достаточно.
...
Рейтинг: 0 / 0
15.12.2021, 16:01
    #40120287
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik


Плохо дружит с кластерами.
Плохо дружит с разными версиями серверов.
Плохо работает на медленных каналах.


Ну так Microsoft, все понятно, надо самому писать, это определенно будет лучше по всем показателям
...
Рейтинг: 0 / 0
15.12.2021, 16:12
    #40120293
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
dvim
...Тут есть нюанс с прокачиванием снапшота
Во очень давние времена ( я еще в школе был) рассказывали что возили данные винтами...

Если подписчик протухал, то клиента подцепляли на основной сервер страдать и в, зависимости от расстояния, на авто везли сервер либо в локалку к основному серверу, либо в ближайшую точку с быстрой сеткой. И накатывали снапшот.
А точка, куда именно везти для минимизации времени покатушек считалась эмпирическим путём из времени перевозки сервера на авто, толщины канала связи до точки наката снапшота и размера накатываемого снапшота.
Координаты и пароли/явки скидывались дежурному водителю на пейджер...
...
Рейтинг: 0 / 0
16.12.2021, 14:59
    #40120651
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik
Dimitry Sibiryakov

Значит на исходной стороне надо организовать CDC (Changed Data Capture), потом перенос полученных изменений на целевую сторону и применение их там. Первое в MS SQL есть, на тебе второе и третье (которые гораздо проще).


А "второе" и "третье" это должны были быть ссылки?

1. Организовать CDC.
2. Организовать доставку захваченных изменений.
3. Организовать применение доставленных изменений.

Так понятнее?
...
Рейтинг: 0 / 0
16.12.2021, 15:20
    #40120660
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Change Tracking должно быть достаточно для репликации, эта технология как раз и использует те же средства, что и репликация. только надо организовать свой способ доставки. Если речь идет о слиянии, то задача усложняется.
...
Рейтинг: 0 / 0
17.12.2021, 14:35
    #40121048
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Код там как раз проще. В особенности если она делается под конкретную базу с заранее известным графом зависимостей.
...
Рейтинг: 0 / 0
17.12.2021, 16:05
    #40121078
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Dimitry Sibiryakov
DBdevchik
пропущено...


А "второе" и "третье" это должны были быть ссылки?

1. Организовать CDC.
2. Организовать доставку захваченных изменений.
3. Организовать применение доставленных изменений.

Так понятнее?


Ой господа. Вы хоть понимаете во что ввязываетесь? Сколько это будет храниться, сколько места занимать? Как это поддерживать? А если сбойнет?
...
Рейтинг: 0 / 0
17.12.2021, 17:40
    #40121102
notemac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik
Добрый день!

А случайно никто не занимался самодельной репликацией для MS SQL на C++ или еще на чем нибудь?
Пока только увидел инфу, что репликация в MS SQL это самостоятельный процесс и его можно реализовать самому.
А вот дальше, что-то ничего не гуглится.

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


У меня самодельная поставка логов (Log Shipping) на T-SQL и сервера находятся не в одной сети. Каждые 2 минуты логи транзакций посылаются на промежуточный сервер, где хранятся бекапы, а реплика каждые 2 минуты забирает оттуда эти бекапы логов.
...
Рейтинг: 0 / 0
18.12.2021, 05:25
    #40121193
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Мы как-то использовали Service Broker в качестве транспорта, потому что обычная транзакционная реплика просто не поднималась. Получатель стоял в каком-то особо заглубленном бункере, видимо, и хотя пинг был приемлемый, потеря пакетов почему-то была совершенно дикой.

Все летало и практ. не жрало CPU. Ну и гарантированность доставки тоже не вредила.

Но это именно что транспорт. Остальное зависит от того, насколько радикально вы готовы / в состоянии менять код и схему БД на источнике. В принципе, думаю, не должно быть проблем скармливать брокеру результаты работы CT / CDC и потом разворачивать их на приемнике. Но может потребоваться написать изрядное количество кода, особенно на получателе.
...
Рейтинг: 0 / 0
18.12.2021, 09:51
    #40121203
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
notemac
DBdevchik
Добрый день!

А случайно никто не занимался самодельной репликацией для MS SQL на C++ или еще на чем нибудь?
Пока только увидел инфу, что репликация в MS SQL это самостоятельный процесс и его можно реализовать самому.
А вот дальше, что-то ничего не гуглится.

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


У меня самодельная поставка логов (Log Shipping) на T-SQL и сервера находятся не в одной сети. Каждые 2 минуты логи транзакций посылаются на промежуточный сервер, где хранятся бекапы, а реплика каждые 2 минуты забирает оттуда эти бекапы логов.


Поддерживаю такие разработки, пусть майкрософт читает и стыдится своихъ кривых самоделок
...
Рейтинг: 0 / 0
18.12.2021, 22:24
    #40121276
DBdevchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Спасибо за ответы.
Однако больше интересует PULL-репликация.
И что на счет самопала на C++ и т.п., хотя бы в академических интересах?
...
Рейтинг: 0 / 0
19.12.2021, 14:59
    #40121370
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik
Однако больше интересует PULL-репликация.

Это что за зверь? Ни разу не слышал.

DBdevchik
И что на счет самопала на C++ и т.п., хотя бы в академических интересах?

Скучная, неинтересная работа. Гуглишь любой open-source репликатор и он будет либо уже на С++, либо на другом языке, с которого его на С++ можно портировать.

Но сначала таки надо погуглить и изучить теорию.
...
Рейтинг: 0 / 0
19.12.2021, 21:19
    #40121473
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
DBdevchik,

авторбольше интересует PULL-репликация4

Займитесь, года через два сделаете что-то работоспособное, если есть талант в программировании. Однако лучше, чем репликация слиянием все равно не получите.
...
Рейтинг: 0 / 0
20.12.2021, 08:55
    #40121558
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Владислав Колосов
DBdevchik,

авторбольше интересует PULL-репликация
4

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

"А вот дальше, что-то ничего не гуглится." (ц, ТС)
...
Рейтинг: 0 / 0
20.12.2021, 15:22
    #40121703
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
Владислав Колосов
лучше, чем репликация слиянием все равно не получите.

Та, однако, имеет свои подводные камни. Получение изменённых данным медленнее, чем у лога. Да и циклические зависимости могут заставить пошевелить волосами.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать? / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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