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

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

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

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


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

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


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

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

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

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

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

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

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


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


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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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


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