3.2. Особенность внесения изменений в пбд клиентов
Единственным отличием внесения изменений в ЦБД и в ПБД является тот факт, что в ПБД клиента нет необходимости вносить те изменения, которые были сделаны этим самым клиентом. Для того чтобы не приходилось выполнять подобное действие в Журналах Изменений существует поле "IDклиента внесшего изменения".
Изменения вносятся в ПБД только в том случае, если IDклиента, на котором происходит синхронизация, не равен полю "IDклиента внесшего изменения" элемента ОЖИ.
4. Пример работы в соответствии с алгоритмом
Пусть есть БД состоящая из трех одинаковых таблиц:
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
Эта БД сохранена в Центральной Базе Данных, а так же отправлена двум клиентам в виде Побочных Баз Данных, для внесения изменений.
Клиенты имеют ID"u1" и "u2".
Таблицы в БД имеют названия "tab_1" "tab_2" и "tab_3".
За время простоя Репликатора клиент u1 внес изменения в свою ПБД так, что она стала выглядеть следующим образом:
tab_1
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
15.12.14 / 12-45 |
"Фрактальная геометрия" |
обновление |
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
tab_2
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
tab_3
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
15.12.14 / 12-15 |
"Комбинаторная оптимизация" |
вставка |
Соответственно его Журнал Изменений выглядит следующим образом:
Дата и время внесения изменений |
Таблица в которую были внесены изменения |
Тип изменения |
Вид строки до внесения изменений |
Вид строки после внесения изменений |
ID клиента внесшего изменения | ||||||
15.12.14 / 12-10 |
tab_3 |
удаление |
|
- |
u1 | ||||||
15.12.14 / 12-11 |
tab_3 |
удаление |
|
- |
u1 | ||||||
15.12.14 / 12-12 |
tab_3 |
удаление |
|
- |
u1 | ||||||
15.12.14 / 12-15 |
tab_3 |
вставка |
- |
|
u1 | ||||||
15.12.14 / 12-20 |
tab_2 |
удаление |
|
- |
u1 | ||||||
15.12.14 / 12-45 |
tab_1 |
обновление |
|
|
u1 |
В это время клиентu2 внес изменения в свою ПБД так, что она стала выглядеть следующим образом:
tab_1
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
15.12.14 / 12-30 |
"Вычислительные машины" |
обновление |
tab_2
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
15.12.14 / 12-22 |
"Так говорил Заратустра" |
вставка |
tab_3
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
15.12.14 / 12-05 |
"История России" |
обновление |
15.12.14 / 12-45 |
"Русско-немецкий словарь" |
обновление |
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
Соответственно его Журнал Изменений выглядит следующим образом:
Дата и время внесения изменений
Таблица в которую были внесены изменения
Тип изменения
Вид строки до внесения изменений
Вид строки после внесения изменений
ID клиента внесшего изменения
15.12.14 / 12-05
tab_3
обновление
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
15.12.14 / 12-05 |
"История России" |
обновление |
u2
15.12.14 / 12-22
tab_2
вставка
-
15.12.14 / 12-22 |
"Так говорил Заратустра" |
вставка |
u2
15.12.14 / 12-30
tab_1
обновление
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
15.12.14 / 12-30 |
"Вычислительные машины" |
обновление |
u2
15.12.14 / 12-45
tab_3
обновление
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
15.12.14 / 12-45 |
"Русско-немецкий словарь" |
обновление |
u2
Репликатор начинает работу.
1) Клиентам закрывается доступ к их ПБД.
2) На сервер отправляются Журналы Изменений клиентов.
3) Журналы Изменений клиентов объединяются в Общий Журнал Изменений.
4) ОЖИ упорядочивается по полю " Дата и время внесения изменений "
ОЖИ выглядит следующим образом:
Дата и время внесения изменений
Таблица в которую были внесены изменения
Тип изменения
Вид строки до внесения изменений
Вид строки после внесения изменений
ID клиента внесшего изменения
15.12.14 / 12-05
tab_3
обновление
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
15.12.14 / 12-05 |
"История России" |
обновление |
u2
15.12.14 / 12-10
tab_3
удаление
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
-
u1
15.12.14 / 12-11
tab_3
удаление
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
-
u1
15.12.14 / 12-12
tab_3
удаление
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
-
u1
15.12.14 / 12-15
tab_3
вставка
-
15.12.14 / 12-15 |
"Комбинаторная оптимизация" |
вставка |
u1
15.12.14 / 12-20
tab_2
удаление
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
-
u1
15.12.14 / 12-22
tab_2
вставка
-
15.12.14 / 12-22 |
"Так говорил Заратустра" |
вставка |
u2
15.12.14 / 12-30
tab_1
обновление
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
15.12.14 / 12-30 |
"Вычислительные машины" |
обновление |
u2
15.12.14 / 12-45
tab_1
обновление
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
15.12.14 / 12-45 |
"Фрактальная геометрия" |
обновление |
u1
15.12.14 / 12-45
tab_3
обновление
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
15.12.14 / 12-45 |
"Русско-немецкий словарь" |
обновление |
u2
ОЖИ обрабатывается в соответствии с описанным выше алгоритмом и приобретает следующий вид:
Дата и время внесения изменений |
Таблица в которую были внесены изменения |
Тип изменения |
Вид строки до внесения изменений |
Вид строки после внесения изменений |
ID клиента внесшего изменения | ||||||
15.12.14 / 12-05 |
tab_3 |
обновление |
|
|
u2 | ||||||
15.12.14 / 12-11 |
tab_3 |
удаление |
|
- |
u1 | ||||||
15.12.14 / 12-12 |
tab_3 |
удаление |
|
- |
u1 | ||||||
15.12.14 / 12-15 |
tab_3 |
вставка |
- |
|
u1 | ||||||
15.12.14 / 12-20 |
tab_2 |
удаление |
|
- |
u1 | ||||||
15.12.14 / 12-22 |
tab_2 |
вставка |
- |
|
u2 | ||||||
15.12.14 / 12-30 |
tab_1 |
обновление |
|
|
u2 | ||||||
15.12.14 / 12-45 |
tab_1 |
обновление |
|
|
u1 |
5) В ЦБД вносятся изменения согласно ОЖИ.
После внесения изменений ЦБД выглядит следующим образом:
tab_1
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
15.12.14 / 12-45 |
"Фрактальная геометрия" |
обновление |
11.12.14 / 13-15 |
"Шестая палата" |
начальная вставка |
15.12.14 / 12-30 |
"Вычислительные машины" |
обновление |
tab_2
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
10.12.14 / 16-45 |
"Идиот" |
начальная вставка |
12.12.14 / 11-21 |
"Евгений Онегин" |
начальная вставка |
15.12.14 / 12-22 |
"Так говорил Заратустра" |
вставка |
tab_3
Дата/Время |
Содержимое таблицы |
Идентификация изменения |
15.12.14 / 12-05 |
"История России" |
обновление |
15.12.14 / 12-15 |
"Комбинаторная оптимизация" |
вставка |
6) ЦБД сохраняется. Информация из ОЖИ сохраняется в Итоговом Журнале.
7) ОЖИ отправляется клиентам.
8) ОЖИ применяется к ПБД клиентов.
9) Клиентские Журналы изменений обнуляются.
10) Клиентам открывается доступ к их ПБД.