Добрый день,
Подскажите пожалуйста - как бы Вы организовали структуру таблицы с иерархическими комментариями? На самом деле таблица хранит не комментарии, но на мой взгляд - это самый удачный пример.
Рассматриваю несколько вариантов. Nested Set (потеря при записи и обновлении - перезаписываение крайних ключей) и
adjacency-list(рекурсия при построении потомков-предков) Подразумевается нехилый темп роста данных.
Еще рассматривал Nested Set с использованием нескольких деревьев в одной таблице. Но не знаю как это скажется на производительности.
Есть ли подобные решения для Yii2 (поведения). Имеется ввиду не NestedSetBehavior в чистом виде, а поведение на основе правильного решения структуры и хранения по поводу моего вопроса.
Как организовать быстро растущую иерархическую таблицу?
-
- Сообщения: 605
- Зарегистрирован: 2014.07.04, 13:33
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Как организовать быстро растущую иерархическую таблицу?
1. Какая вложенность?
2. Насколько часто читаете?
3. Читаете ли поддеревья или только деревья целиком?
4. Какого рода ещё выборки?
5. Насколько часто добавляете, удаляете или перемещаете?
2. Насколько часто читаете?
3. Читаете ли поддеревья или только деревья целиком?
4. Какого рода ещё выборки?
5. Насколько часто добавляете, удаляете или перемещаете?
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 605
- Зарегистрирован: 2014.07.04, 13:33
Re: Как организовать быстро растущую иерархическую таблицу?
Приветствую, Александр!
1. Вложенность: 1-2 уровня
2. Читаем чаще,чем добавляем
3. ? - тут мой вопрос
4. Из сущности предложения выбираются сущности лотов
Лот может быть как без вложений (например со значением - на X персон)
.1 персона
.2 персоны
.3 персоны
Лот может быть иерархичным:
.1-2 дня
..1 персона - цена
..2 персоны - цена
..3 персоны - цена
.3-4 дня
..1 персона - цена
..2 персоны - цена
..3 персоны - цена
5. Удаления крайне редки, обновления редки, но возможны, в основном добавления.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Как организовать быстро растущую иерархическую таблицу?
3. Например, выбрать поддерево основного дерева начиная с вершины такой-то:
Выбрать поддерево начиная с B. Отдаст вам:
Если такие запросы не нужны, вам обычный adjacent list вполне подойдёт.
Код: Выделить всё
A
- B
- C
- D
- E
Код: Выделить всё
B
- C
- D
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 605
- Зарегистрирован: 2014.07.04, 13:33
Re: Как организовать быстро растущую иерархическую таблицу?
Благодарю, Александр. Попробую оба варианта.samdark писал(а): ↑2017.08.22, 19:51 3. Например, выбрать поддерево основного дерева начиная с вершины такой-то:
Выбрать поддерево начиная с B. Отдаст вам:Код: Выделить всё
A - B - C - D - E
Если такие запросы не нужны, вам обычный adjacent list вполне подойдёт.Код: Выделить всё
B - C - D