Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
Котаны-бротаны! Есть две БД. Master. Slave. Изначально одинаковые. Между ними трафик - жлобский. НЕ-гигабит. Есть сет таблиц. В основном это справочники. Типа keyvalue1a2b Value может быть комплексным. И содержать много полей. Вобщем это неважно. Мы их слегка модифицируем. В мастер БД добавляем даты последней модифицации. keyvaluelastUpdateTime1a2020-02-07 16:45:33.01232b2020-02-06 22:00:01.9351 Неважно как но модификация затрагивает только INSERT/UPDATE. Ложные срабатываня типа дважды обновили поле на тоже значене - это ОК. Это нормально. Мы их тоже берём как изменения. Теперь вопрос топика. Как быть с удалёнными строками? Как их реплицировать на Slave? Ожидается предложение по разработке оффалйн репликатора. (Пример. Удалилась строка с ключом №2) keyvaluelastUpdateTime1a2020-02-07 16:45:33.0123 Очевидно что Master обладает правом делать с справочниками всё. Удалённая строка теряет и lastUpdate и вообще identity. Чтобы узнать какие строки были удалены нужно сделать некие манипуляции с обоими БД. Жду ваших тяпничных советов. Приветсвуется: оптимизация сетевого трафика. Хардкод! Моар хардкода! Бесплатные СУБД. Не приветствуется: занудство. Гугло-посылы. Покупка коробочного варианта репликации. Коммерческие конфигурации под ключ. Ясен петь что и топика бы не было если-б мы обсуждали physical/logical standby/replication e.t.c. Втопку ваши коробочные продукты! Фантазируйте! Go-Go кодить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 20:30 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Как быть с удалёнными строками? Как их реплицировать на Slave? Ожидается предложение по разработке оффалйн репликатора. Как понимаю суть здесь тут :) При репликации нельзя удалять, для этого изобрели пометку на удаление, т.е. оно есть, но помечено как удалено. PS Если чистый мастер-слэйв, то репликация запросами, повторить все insert/update/delete на slave. По другому называется журнал транзакций, думаю ты это знаешь как DBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 20:56 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton, ну вот шо ты пишешь... аки младенец. кодит-шмодить, глоу-гоу. Ты в глаза ей пристально посмотри, а не гой-гоу. авторКак быть с удалёнными строками? Как их реплицировать на Slave? удалённые строки двух луёв бывают. первый из них - строки, которые рождены на мастере и ещё ни на один слейв не попали, и об этом достоверно известно. Их никуда реплицировать не надо. работа со вторыми зависит от того, а слейв ли тот слейв, может он обратный мастер, а не слейв. В заявленном тобой случае отдается строка лога изменений мастер таблицы с приказом удалить строку с указанным гуидом. Если есть желание - можешь бежать кодить... с подтверждением выполнения приказа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:04 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Как быть с удалёнными строками? Как их реплицировать на Slave? Ожидается предложение по разработке оффалйн репликатора. Как сказали выше. Метить как удалённые. Удаление -- это тоже изменение, такое же как любое другое, а то и более критичное по значимости. mayton Приветсвуется: оптимизация сетевого трафика. Хардкод! Моар хардкода! Бесплатные СУБД. ПоЗырь (хотя бы ради интересу) в сторону Event Sourcing, мастер это поток событий. Остальные БД это потребители потока событий. И могут через себя всё пропускать, или забирать только интересное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:06 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
От зануды Журнал транзакций может появится только в DBMS в которых эти транзакции есть. Берем вариативную DBMS о которой нифига незвестно. Денег нет. Репликации нет. Стоит задача 1 раз в сутки выровнять справочники. (Дополнение к ТЗ). Неужели никто из вас в практике такую задачу не встречал?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:08 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
hVostt Как сказали выше. Метить как удалённые. Удаление -- это тоже изменение, такое же как любое другое, а то и более критичное по значимости. Нет возможности метить. Программное обеспечение (черный ящик) просто дропает строки и все. Изменить его мы не можем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:09 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Берем вариативную DBMS о которой нифига незвестно. Денег нет. Репликации нет. Стоит задача 1 раз в сутки выровнять справочники. (Дополнение к ТЗ). Я ужо сказал. Event Sourcing. Ты можешь зацепить на него +100500 разных СУБД. От орукола, слона, сиквеля до монги с эластиком. И это да, чистой воды гоу гоу кодинг, так полноценного коробочного решения нет. Но есть всякого на развес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:13 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Программное обеспечение (черный ящик) просто дропает строки и все. Задача выцепить дропы сводится к полной загрузке всех данных с вычленением потеряшек, чтобы их кильнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:15 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
hVostt mayton Берем вариативную DBMS о которой нифига незвестно. Денег нет. Репликации нет. Стоит задача 1 раз в сутки выровнять справочники. (Дополнение к ТЗ). Я ужо сказал. Event Sourcing. Ты можешь зацепить на него +100500 разных СУБД. От орукола, слона, сиквеля до монги с эластиком. И это да, чистой воды гоу гоу кодинг, так полноценного коробочного решения нет. Но есть всякого на развес. Нет возможности. Программный продукт не наш. Сорцов нет. Все что есть - это две DBMS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:17 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
hVostt mayton Программное обеспечение (черный ящик) просто дропает строки и все. Задача выцепить дропы сводится к полной загрузке всех данных с вычленением потеряшек, чтобы их кильнуть. Хвост не спеши. Давай всё таки сверх задачку. Я вот думаю что полная загрузка всех данных не нужна. Мне вот так кается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:18 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Хвост не спеши. Давай всё таки сверх задачку. Я вот думаю что полная загрузка всех данных не нужна. Мне вот так кается... К сожалению, нужна. И именно полная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:21 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Нет возможности. Программный продукт не наш. Сорцов нет. Ну DBMS-то хоть не рукописная? :) Всуньте туда триггер на удаление, что трекать подобное безобразие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:23 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
Может ключей хватит? Или групп ключей? Или диапазонов ключей? Или контрольных сумм? Или сам придумай што. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:23 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton, Это конечно всё интересные решения :) Но из всех костылей, самый надёжный, быстрый и простой в таком случае -- это триггер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:27 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton, Ааа... я наконец понял, к чему ты клонишь Ну вот в копилку безумных вариантов. Пишем все имеющиеся ключи в битовом представлении в файл. Потам архивируем его раром. Передаём. Профит! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:29 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton, авторИзменить его мы не можем. видать, и перехватить дмл сих двух великолепных бд тоже не можем. Ну, а хоть что-нибудь можем? Например, отправить в сад желальщиков "репликации". Если нечего "перехватывать", то и болеть не за что. Может ты не с того начал. И у тебя вовсе не "две бд" в начале разговора, а какое-то количество, может быть встречных потоков данных, для которых ты хочешь отыcкать конец, на котором их фильтровать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:30 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
hVostt mayton, Ааа... я наконец понял, к чему ты клонишь Ну вот в копилку безумных вариантов. Пишем все имеющиеся ключи в битовом представлении в файл. Потам архивируем его раром. Передаём. Профит! :) А чего в битовом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:37 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
booby Может ты не с того начал. И у тебя вовсе не "две бд" в начале разговора, а какое-то количество, может быть встречных потоков данных, для которых ты хочешь отыcкать конец, на котором их фильтровать? Хм.. не знаю. Нету у меня потоков. Гдеж я их возьму? Потоки-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:40 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
И как Domino и этим справляется)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:40 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton hVostt mayton, Ааа... я наконец понял, к чему ты клонишь Ну вот в копилку безумных вариантов. Пишем все имеющиеся ключи в битовом представлении в файл. Потам архивируем его раром. Передаём. Профит! :) А чего в битовом? Это хорошая версия. Когда приходит пациент, и заявляет, что у него весь лоб болит, разумно проверить, а нет ли дырки в правом виске. Где болит-то, точнее можно сказать? Хотя бы, как оно пульсирует опиши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2020, 21:41 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Берем вариативную DBMS о которой нифига незвестно. Денег нет. Репликации нет. Стоит задача 1 раз в сутки выровнять справочники. (Дополнение к ТЗ). Бэкап и чтобы целиком его не гнать по инету rsync с предыдущим бэкапом на получателе. Если триггеры есть то там ловить все изменения. Протоколирование действий пользователей и версионность записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2020, 10:29 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
Rsync уже ближе. Но хотелось бы не файло- а таблично- ориентированный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2020, 10:42 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
На отправителе можешь копию развернуть. Раз в сутки запускается скрипт и сверяет результат "select * from MyTable order by id" из оригинала и копии, сверка делается в один проход, по итогу получаешь изменения, накатываешь их на копию и раздаешь всем заинтересованным слэйвам. PS Можно даже не хранить записи целиком в локальной копии, а ограничиться каким-нибудь хэшем не очень коротким. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2020, 10:48 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
Я как раз думаю про хеши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2020, 11:10 |
|
||
|
Оффлайн-тяпничная репликация
|
|||
|---|---|---|---|
|
#18+
mayton Я как раз думаю про хеши. ИМХО если локальную копию сохранить в виде {id, hash}, где hash от всех полей кроме id, то по сравнению id отловишь все удаления и вставки, а по hash проверять изменение записи, есть вероятность что совпадет хэш старого и нового состояния, но она очень мизерная, 1/2 128 если использовать MD5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2020, 11:41 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39924154&tid=1339829]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 292ms |
| total: | 562ms |

| 0 / 0 |
