Сегодня я думал о лучшем способе хранения иерархического набора узлов
Так вы пишете файловую систему? ; -)
Самый очевидный способ представить это (по крайней мере, мне) для каждого узла иметь указатели nextSibling и childNode
Почему? Информация о сестре присутствует на родительском узле, поэтому все, что вам нужно, это указатель на родительский узел. Дважды связанный список, так сказать.
Каким образом вы можете хранить иерархию узлов, которая требует нескольких изменений для добавления или удаления узла и устойчива к повреждению нескольких узлов?
Здесь на самом деле есть два разных вопроса.
- Данные повреждены?
- Как исправить поврежденные данные (также известные как системы самовосстановления)?
Ответы на эти два вопроса определят точную природу решения.
Повреждение данных
Если ваша единственная цель - узнать, хороши ли ваши данные или нет, сохраните хэш-дайджест информации дочернего узла вместе с родителем.
Самовосстанавливающиеся структуры
Любая самоизлечивающаяся структура будет нуждаться в следующей информации:
- Есть ли коррупция? (См. Выше)
- Где коррупция?
- Можно ли это исцелить?
Существуют разные алгоритмы для фиксации данных с различной степенью эффективности. Основная идея заключается в том, чтобы ввести избыточность. Реконструкция зависит от вашей степени резервирования. Поскольку самые надежные системы дают лучшие гарантии, вам придется выбирать.
Я полагаю, что есть некоторая возможность сузить ваш вопрос до такой степени, чтобы мы могли начать обсуждение отдельных кусочков головоломки.