|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Добрый день! А случайно никто не занимался самодельной репликацией для MS SQL на C++ или еще на чем нибудь? Пока только увидел инфу, что репликация в MS SQL это самостоятельный процесс и его можно реализовать самому. А вот дальше, что-то ничего не гуглится. А смысл идеи вообще такой. Вот есть у меня сервер или кластер, для меня он просто адрес и порт. Подключаюсь я к нему и тяну заданную базу на другой сервер, интересуют (пока) только таблицы. Все остальное в базе (индексы там, процедуры, логины) пока не очень интересуют. А на среплицированной базе, чтоб была возможность создавать какие-то свои индексы. Репликация нужна реалтайм, а не раз в сутки лог накатить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 13:48 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik, а чем стандартная не устраивает? https://docs.microsoft.com/en-us/sql/relational-databases/replication/transactional/transactional-replication ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:11 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik Репликация нужна реалтайм, а не раз в сутки лог накатить. Значит на исходной стороне надо организовать CDC (Changed Data Capture), потом перенос полученных изменений на целевую сторону и применение их там. Первое в MS SQL есть, на тебе второе и третье (которые гораздо проще). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:00 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
komrad а чем стандартная не устраивает? https://docs.microsoft.com/en-us/sql/relational-databases/replication/transactional/transactional-replication Плохо дружит с кластерами. Плохо дружит с разными версиями серверов. Плохо работает на медленных каналах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:02 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Значит на исходной стороне надо организовать CDC (Changed Data Capture), потом перенос полученных изменений на целевую сторону и применение их там. Первое в MS SQL есть, на тебе второе и третье (которые гораздо проще). А "второе" и "третье" это должны были быть ссылки? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:07 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik, Репликация нужна реалтайм, а не раз в сутки лог накатит Задержка не более нескольких минут - норма. Мердж реплика ... более 10 лет Плохо дружит с разными версиями серверов. Был опыт - на удивление работало неплохо. Плохо работает на медленных каналах. Тут есть нюанс с прокачиванием снапшота Во очень давние времена ( я еще в школе был) рассказывали что возили данные винтами. По мне своя реплика хороша для 1-2 таблиц, где структура постоянна и нужна именно легковесность и понятность. Если говорим о "всей" базе - то рисков больше чем плюсов ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:23 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik ...Плохо работает на медленных каналах... транзакционная репликация на mssql 2000 на каналах 32-64кбит/сек с постоянными обрывами жила 10 лет до момента, пока не заменили каналы на побыстрее и понадежнее. Вообще имеет смысл изучить предметную область и попытаться осознать масштабы задачи. Особенно если пытаться пилить в общем виде. А простенько пишется в джобах в виде insert .. select на линкованных серверах или небольшим пакетом в ssis. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:33 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik, CDC + SSIS, вот вам и PUSH репликация. Даже CT достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:37 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik komrad а чем стандартная не устраивает? https://docs.microsoft.com/en-us/sql/relational-databases/replication/transactional/transactional-replication Плохо дружит с кластерами. Плохо дружит с разными версиями серверов. Плохо работает на медленных каналах. Ну так Microsoft, все понятно, надо самому писать, это определенно будет лучше по всем показателям ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 16:01 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
dvim ...Тут есть нюанс с прокачиванием снапшота Во очень давние времена ( я еще в школе был) рассказывали что возили данные винтами... Если подписчик протухал, то клиента подцепляли на основной сервер страдать и в, зависимости от расстояния, на авто везли сервер либо в локалку к основному серверу, либо в ближайшую точку с быстрой сеткой. И накатывали снапшот. А точка, куда именно везти для минимизации времени покатушек считалась эмпирическим путём из времени перевозки сервера на авто, толщины канала связи до точки наката снапшота и размера накатываемого снапшота. Координаты и пароли/явки скидывались дежурному водителю на пейджер... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 16:12 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik Dimitry Sibiryakov Значит на исходной стороне надо организовать CDC (Changed Data Capture), потом перенос полученных изменений на целевую сторону и применение их там. Первое в MS SQL есть, на тебе второе и третье (которые гораздо проще). А "второе" и "третье" это должны были быть ссылки? 1. Организовать CDC. 2. Организовать доставку захваченных изменений. 3. Организовать применение доставленных изменений. Так понятнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 14:59 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Change Tracking должно быть достаточно для репликации, эта технология как раз и использует те же средства, что и репликация. только надо организовать свой способ доставки. Если речь идет о слиянии, то задача усложняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 15:20 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Код там как раз проще. В особенности если она делается под конкретную базу с заранее известным графом зависимостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 14:35 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DBdevchik пропущено... А "второе" и "третье" это должны были быть ссылки? 1. Организовать CDC. 2. Организовать доставку захваченных изменений. 3. Организовать применение доставленных изменений. Так понятнее? Ой господа. Вы хоть понимаете во что ввязываетесь? Сколько это будет храниться, сколько места занимать? Как это поддерживать? А если сбойнет? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 16:05 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik Добрый день! А случайно никто не занимался самодельной репликацией для MS SQL на C++ или еще на чем нибудь? Пока только увидел инфу, что репликация в MS SQL это самостоятельный процесс и его можно реализовать самому. А вот дальше, что-то ничего не гуглится. А смысл идеи вообще такой. Вот есть у меня сервер или кластер, для меня он просто адрес и порт. Подключаюсь я к нему и тяну заданную базу на другой сервер, интересуют (пока) только таблицы. Все остальное в базе (индексы там, процедуры, логины) пока не очень интересуют. А на среплицированной базе, чтоб была возможность создавать какие-то свои индексы. Репликация нужна реалтайм, а не раз в сутки лог накатить. У меня самодельная поставка логов (Log Shipping) на T-SQL и сервера находятся не в одной сети. Каждые 2 минуты логи транзакций посылаются на промежуточный сервер, где хранятся бекапы, а реплика каждые 2 минуты забирает оттуда эти бекапы логов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 17:40 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Мы как-то использовали Service Broker в качестве транспорта, потому что обычная транзакционная реплика просто не поднималась. Получатель стоял в каком-то особо заглубленном бункере, видимо, и хотя пинг был приемлемый, потеря пакетов почему-то была совершенно дикой. Все летало и практ. не жрало CPU. Ну и гарантированность доставки тоже не вредила. Но это именно что транспорт. Остальное зависит от того, насколько радикально вы готовы / в состоянии менять код и схему БД на источнике. В принципе, думаю, не должно быть проблем скармливать брокеру результаты работы CT / CDC и потом разворачивать их на приемнике. Но может потребоваться написать изрядное количество кода, особенно на получателе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 05:25 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
notemac DBdevchik Добрый день! А случайно никто не занимался самодельной репликацией для MS SQL на C++ или еще на чем нибудь? Пока только увидел инфу, что репликация в MS SQL это самостоятельный процесс и его можно реализовать самому. А вот дальше, что-то ничего не гуглится. А смысл идеи вообще такой. Вот есть у меня сервер или кластер, для меня он просто адрес и порт. Подключаюсь я к нему и тяну заданную базу на другой сервер, интересуют (пока) только таблицы. Все остальное в базе (индексы там, процедуры, логины) пока не очень интересуют. А на среплицированной базе, чтоб была возможность создавать какие-то свои индексы. Репликация нужна реалтайм, а не раз в сутки лог накатить. У меня самодельная поставка логов (Log Shipping) на T-SQL и сервера находятся не в одной сети. Каждые 2 минуты логи транзакций посылаются на промежуточный сервер, где хранятся бекапы, а реплика каждые 2 минуты забирает оттуда эти бекапы логов. Поддерживаю такие разработки, пусть майкрософт читает и стыдится своихъ кривых самоделок ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 09:51 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Спасибо за ответы. Однако больше интересует PULL-репликация. И что на счет самопала на C++ и т.п., хотя бы в академических интересах? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 22:24 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik Однако больше интересует PULL-репликация. Это что за зверь? Ни разу не слышал. DBdevchik И что на счет самопала на C++ и т.п., хотя бы в академических интересах? Скучная, неинтересная работа. Гуглишь любой open-source репликатор и он будет либо уже на С++, либо на другом языке, с которого его на С++ можно портировать. Но сначала таки надо погуглить и изучить теорию. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 14:59 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
DBdevchik, авторбольше интересует PULL-репликация4 Займитесь, года через два сделаете что-то работоспособное, если есть талант в программировании. Однако лучше, чем репликация слиянием все равно не получите. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 21:19 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Владислав Колосов DBdevchik, авторбольше интересует PULL-репликация Займитесь, года через два сделаете что-то работоспособное, если есть талант в программировании. Однако лучше, чем репликация слиянием все равно не получите. "А вот дальше, что-то ничего не гуглится." (ц, ТС) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 08:55 |
|
Самопальная репликация для MS SQL (C++, и т.п.) - Как сделать?
|
|||
---|---|---|---|
#18+
Владислав Колосов лучше, чем репликация слиянием все равно не получите. Та, однако, имеет свои подводные камни. Получение изменённых данным медленнее, чем у лога. Да и циклические зависимости могут заставить пошевелить волосами. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 15:22 |
|
|
start [/forum/topic.php?fid=46&msg=40120287&tid=1683994]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 248ms |
0 / 0 |