|
|
|
Версионинг дерева Nested Sets
|
|||
|---|---|---|---|
|
#18+
Хэлоу! Есть Nested Sets дерево (актульное) в таблице вида: Код: plaintext 1. 2. 3. 4. 5. 6. Используется для формирования различных аналитических отчетов. Дерево динамическое: примерно раз в месяц относительно большой процент узлов перемещается, но добавления в дерево могут происходить ежедневно. Возникла необходимость в отчете(-ах) на определенную дату в прошлом. Вот, сижу - ломаю голову. Добавить колонку даты (или, как вариант, FK итерации перемещения узлов) и создавать отдельный сэт записей на каждую итерацию перемещения/добавления - оверхедно. Я понимаю, что маловероятно, но может быть есть какой-то более изящный способ получить запросом набор нодов и их состояний актуальных на определенную дату? База - PostgreSQL 8.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 00:09 |
|
||
|
Версионинг дерева Nested Sets
|
|||
|---|---|---|---|
|
#18+
Сейчас смотрю - забыл совсем сказать о том, что изменения в дереве однонаправленные: за одну итерацию изменений все непосредственные потомки одного нода могут перейти к родителю этого самого нода, а новые чайлды после подобной реструктуризации у контекстного нода должны появляться и оставаться на уровне 1 до того момента, как его снова не коснется т.н. "компрессия". Сами отчеты зависят от уровня нахождения определенного нода односительно одного из предков. В д у ше как раз придумал следующее :) : Т.к. известна дата добавления в таблицу каждого нода, держать в таблице вида Код: plaintext 1. 2. 3. Дай бог, чтобы тот, кому было интересно, понял, к чему я клоню :) Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 09:37 |
|
||
|
Версионинг дерева Nested Sets
|
|||
|---|---|---|---|
|
#18+
А текущее состояние для отчетов актуальных на "сейчас" можно в MatView пихнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 09:49 |
|
||
|
Версионинг дерева Nested Sets
|
|||
|---|---|---|---|
|
#18+
сделайте дублирующую таблицу, где хранится состояние дерева на определенную дату (т.е. на каждое изменение). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2008, 16:13 |
|
||
|
Версионинг дерева Nested Sets
|
|||
|---|---|---|---|
|
#18+
я в данной ситуации вообще не парюсь при каждом изменении дерева (добавлении узла, или т.п. фигни) скидываю дерево ПОЛНОСТЬЮ в табличку с историей. В виде xml. Не то, что бы это безумно быстро работает и всегда поддерживается целкостность данных - зато безотказно как автомат калашникова, и легко модифицируется если что. Есть правда обратная задача - восстановление версии, но тут мною был проделан волшебный финтушами, который не в каждой архитектуре приложения возможен. Восстановление получилось чуть ли не проще записи в историю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2008, 21:23 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35429139&tid=1543768]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 466ms |

| 0 / 0 |
