[Архитектура] Отслеживание обновлений дерева
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 05.09.19 06:54
Оценка:
Приветствую.
Дано:
Есть дерево: ствол, на котором множество веток. Но ствол нам не интересен.
Каждая ветка состоит из связанных объектов, которые могут изменятся как сами, так и своё положение в ветке.
Пользователь может иметь или не иметь право доступа к ветке. Право доступа определяется сразу ко всей ветке.
Надо:
Требуется выслать пользователю (для его локальной базы) все обновления, произошедшие с его последнего подключения к дереву.

Грубо говоря, это все представлено в следующих таблицах:
* Объекты: PK, какое-то значение объекта
* Дерево: PK, FK дерева, FK объекта
* Право доступа: PK, FK пользователя, FK дерева

Структура одинакова как на сервере, так и локально у пользователя.

Изменения отслеживать понятно как:
* для изменений объектов добавляем поле timestamp в таблице Объекты, подключившийся пользователь определяет в своей локальной базе максимальное значение timestamp, и получает с сервера все объекты, что новее.
* для изменений положения объектов в дереве также добавляем поле timestamp, но в таблицу Дерево, изменения получаем аналогично.

Проблема у меня со следующей ситуацией: у пользователя появились прав доступа на новую для него ветку, у которой есть timestamp'ы старее, чем уже существуют в локальной базе пользователя. Тогда вышеописанные алгоритмы отслеживания изменений не работают.
Все придуманные мной алгоритмы мне не нравятся.
А как это реализуют опытные товарищи?
Вселенная бесконечна как вширь, так и вглубь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.