|
|
|
Какую структуру базы выбрать? Посоветуйте...
|
|||
|---|---|---|---|
|
#18+
Необходимо создать дерево каталогов в SQL. У каждого юзера свое дерево и это дерево может быть любой степени вложенности. Существует 2 вида юзеров: user и vip (назовем их так). User может иметь, к примеру, дерево с 50 элементами. Vip – c 1000 элементов. Количество userов может быть несколько тысяч. Количество vip – от силы 2000-3000. И так вижу 3 варианта решения: 1) табличка по принципу смежных вершин (Adjacency List). Табличка содержит столбцы: со столбцами id записи, родительский id (id папки в которой находится запись), ну может быть еще уровень. Решение простое, но как говорят знающие люди – имеет массу узких мест. Плюсы: простота реализации; добаление, удаление и перемещение одного элемента не приводит к изменению других элементов (почти). Минусы: сложные запросы, если надо выбрать всех потомков одного родителя и т.д. 2) таблица по принципу вложенных множеств (Nested Sets http://habrahabr.ru/blogs/development/46659/). Табличка содержит столбцы: id записи, уровень (на котором находится запись), правый ключ, левый ключ. Плюсы: соответственно запросы простые. Минусы: изменение одного элемента приводит к переписи почти всех ключей последующих элементов – в результате наверняка дикие тормоза. 3) возможно мое изобретение – таблица по принципу вложенных множеств, но ключи идут не подряд, а выделяются промежутки значений ключей для каждого пользователя. Т.к. у нас для простого юзера есть ограничение на 50 элементов – выделяем каждому по 100 ключей. Т.е. 1-й юзер – ключи от 1 до 100, 2-й юзер – ключи от 101 до 200 и т.д. Для vip будет другая таблица, т.к. у нас ограничение на 1000 элементов, то выделяем для каждого випа диапазон ключей в 2000 ключей. Т.е. для 1-го випа – ключи от 1 до 2000, для 2-го випа – от 2001 до 4000 и т.д. Плюсы: простые запросы; изменение одного элемента не влияет на ключи элементов других юзеров – следовательно минимум тормозов. Минус: заморочки с распределением диапазонов ключей. Я что-то пропустил? Плюсы-минусы? Хотел бы услышать мнение опытных людей – какой вариант лучше? Может что-то предложите свое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2009, 22:01 |
|
||
|
Какую структуру базы выбрать? Посоветуйте...
|
|||
|---|---|---|---|
|
#18+
Вы же не думаете, что первый, кто об этом задумался ? Тема иерархии уже многократно обсуждалась на форуме. Рекомендую начать отсюда . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2009, 22:29 |
|
||
|
Какую структуру базы выбрать? Посоветуйте...
|
|||
|---|---|---|---|
|
#18+
Лучше - универсальную : http://flexiobjdb.narod.ru/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 22:30 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=84&tid=1543102]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 328ms |

| 0 / 0 |
