Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Репликация и логическая целостность
|
|||
|---|---|---|---|
|
#18+
Ситуация примерно следующая: есть таблица T1 (родительская) и таблица T2 (дочерняя). Foreign key, все дела. При репликации передаются изменения, произошедшие в обеих таблицах. Проблема состоит в том, что "логический объект" - некая вьюха из конкретного родителя и его детей должна быть целостной. Например, делаем insert 5 записей в таблицу T2, которые относятся к одному и тому же родителю в T1. Эта вставка происходит обязательно в транзакции (так нужно по предметной области). Поскольку агент репликации передает изменения не в транзакции (или я ошибаюсь ?), то может получиться, что сначала передадутся 3 записи, а через некоторое время еще 2. Если в этот промежуток вклинится клиент и зачитает вьюху, то будет хреново, потому что логический объект будет неполным. Можно ли как-то выкрутиться из данной ситуации ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2001, 14:43 |
|
||
|
Репликация и логическая целостность
|
|||
|---|---|---|---|
|
#18+
AFAIK вы ошибаетесь. Пока транзакция на вставку не завершена, во view не будет видно новых записей (если во view не стоит NOLOCK возле имени таблицы и уровень изоляции не Read Uncommited). А раз не видно записей во view - значит, они не будут реплицированы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2001, 14:53 |
|
||
|
Репликация и логическая целостность
|
|||
|---|---|---|---|
|
#18+
Я не об этом. На конкретной машине вставка завершилась, транзакция прошла успешно, все. Через некоторое время проснется агент репликации и начнет передавать изменения. Важно, чтобы пока ВСЕ изменения не передались, они не стали видны на другой машине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2001, 15:05 |
|
||
|
Репликация и логическая целостность
|
|||
|---|---|---|---|
|
#18+
А о какой репликации идет речь? Вот в репликации непосредственно обновляемых подписчиков эта проблема точно отсутствует. Зато присутствуют другие . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2001, 15:27 |
|
||
|
Репликация и логическая целостность
|
|||
|---|---|---|---|
|
#18+
Merge репликация, но не оговорено, будет запускаться агент время от времени или постоянно обновляемые подписчики. А о каких проблемах во втором случае вы говорите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2001, 06:18 |
|
||
|
Репликация и логическая целостность
|
|||
|---|---|---|---|
|
#18+
1. Необходимость высокоскоростного и надежного соединения. Если такового нет, то многие распределенные транзакции (на которых и построена репликация непосредственно обновляемых подписчиков) просто не смогут закрепиться. Плюс жуткие тормоза при каждом шевелении данными. 2. ПОНИЖЕННАЯ надежность. При выходе из строя одного из серверов, учствующих в репликации, все остальные тоже не смогут модифицировать данные, поскольку транзакции модификации данных не смогут закрепиться на одном из участвующих в репликации серверов. Для Merge-репликации оговоренная тобой проблема действительно имеет быть. И она не единственная. Синхронизация действительно идет НЕ в транзакции. Я обнаружил еще одну аналогичную проблему Merge-репликации. Если во время синхронизации передается большой массив информации, и во время передачи вдруг разорвалось соединение, оказывается половина данных перекачено, а половина нет. В результате могут, к примеру, появиться счета или накладные, в которых присутствуют не все позиции (по крайней мере до прошествия полной синхронизации). Действительно, данные, переданные при начале синхронизации, появляются на экранах пользователей до окончания синхронизации, что может привести к принятию неверных решений. Судя по всему, философского камня, который решал бы все проблемы на все случаи жизни не существует. Иначе был бы только один вид репликации, годящийся на все случаи жизни, а их множество. У каждого вида свои достоинства и свои недостатки. Нужно выбирать для конкретной ситуации тот вид, плюсы которого перевешивают его же недостатки. А избавиться от всех минусов напрочь IMHO не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2001, 06:53 |
|
||
|
Репликация и логическая целостность
|
|||
|---|---|---|---|
|
#18+
Вот-вот. Именно эта проблема и встала в полный рост. И что, никто с ней не умеет по-человечески справиться ? У меня есть пара идеек, но они достаточно корявые - типа взведенения неких флажков, проверки старта/финиша агента и т.д. А более гладких способов нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2001, 09:22 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32008961&tid=1826275]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 395ms |

| 0 / 0 |
