Я разрабатываю веб-приложение, которое использует нереляционную базу данных в качестве бэкэнда (django-nonrel + AppEngine).
Мне нужно хранить некоторые иерархические данные (projects / subproject_1 / subproject_N / tasks), и мне интересно, какой шаблон следует использовать. А пока я думал о:
- Список смежности (сохранить идентификатор родительского элемента)
- Вложенные наборы (сохраните левые и правые значения для элемента)
В моем случае глубина вложения для обычного пользователя не будет превышать 4-5 уровней.
Кроме того, в пользовательском интерфейсе я хотел бы иметь нумерацию элементов для первого уровня, чтобы избежать загрузки слишком большого количества элементов при загрузке первой страницы.
Насколько я понимаю, вложенные множества хороши, когда иерархия больше используется для отображения. Списки смежности хороши, когда редактирование на дереве выполняется часто. В моем случае, мне кажется, мне нужно больше, чем редактировать отображение (при использовании вложенных наборов, даже если отображение будет работать отлично, приведенная выше нумерация страниц может усложнить редактирование).
Есть ли у вас какие-либо мысли и советы, основанные на вашем опыте работы с нереляционными базами данных?