Искусственный упрощённый пример, который +- эквивалентен моей задаче:
Снапшоты файловой системы, в виде 3х таблиц:
1) сами снапшоты
2) содержимое файлов (например: имя, хеш, размер)
3) ссылка между 1) и 2), собирающая нужные файлы в снапшот.
Проблема в том, что хоть записи в 3) весьма компактные, но файлов ОЧЕНЬ много. А вот изменений между снапшотами довольно мало.
Появилась идея, иметь некий базовый снапшот, и ещё два таблицы:
а) ссылки, которые надо удалить из базового снапшота
б) ссылки, которые надо добавить в базовый снапшот
(соотв. изменение файла может быть трактовано как удаление старого содержимого + добавление нового содержимого).
Т.е. накладыванием "патча" получаем нужную нам таблицу.
Вопросы:
— боюсь, при реализации "в лоб", с помощью двух таблиц, будет тормозить. Или нет ?
— может быть можно как-то абстрагировать всю кухню, например параметризованной вьюшкой ? Не будет ли проблем с индексами ?
— модет быть есть существующие практики, как подобное принято решать ? Ещё лучше если встроенным в БД механизмом.
Большое спасибо!