|
|
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Какой-то аналог SQL Server типа hierarchyid? Чтобы поддерживать иерархию, прямые выборки из дерева и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 08:58 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
ltree - аналог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 09:14 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
В postgresql мне известно три способа работы с деревьями: использование конструкции WITH RECURSIVE Расширение ltree Расширение tablefunc У каждого свои плюсы и минусы. Если не найдете в документации, постараюсь разъяснить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 16:54 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
uranicВ postgresql мне известно три способа работы с деревьями: использование конструкции WITH RECURSIVE Расширение ltree Расширение tablefunc У каждого свои плюсы и минусы. Если не найдете в документации, постараюсь разъяснить Что-то нашел, что-то спросил. Запросы - это одно, у них свои преимущества. Но мне в данном случае нужна возможность хранения больших иерархий в таблице, по типу hierarhcyid в SQL Server. Ну и запросы к ним, апдейты, удаление, перенос поддеревьев. Реально в таблице миллионы записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 10:40 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Winnipuh, а что непонятного в доке? По видимому, лтре вам больше подойдёт http://www.postgresql.org/docs/9.4/static/ltree.html И индексирование по нему супер сделано. Ишшо премерчег http://habrahabr.ru/post/130371/ ЗЫ Хотя у меня и id - id_parent миллионные таблички были. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 23:12 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНWinnipuh, а что непонятного в доке? По видимому, лтре вам больше подойдёт http://www.postgresql.org/docs/9.4/static/ltree.html И индексирование по нему супер сделано. Ишшо премерчег http://habrahabr.ru/post/130371/ ЗЫ Хотя у меня и id - id_parent миллионные таблички были. вот, речь как раз о миллионных таблицах. Как по скорости делается re-parent? т.е. перевешивание поддерева к другому паренту? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2015, 10:56 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Winnipuh, если перевешивание у вас частая операция, и длина/развесистость веток значительная -- берите стандртный рекурсивный способ и не мучайтесь. [а то много почти пустых страниц в индексе поимеете -- придется реиндексить время от времени] ну, проиграете немного на скорости выборок ("рекурсивный" index -- seek по REFERENCE parentid(id)) -- это не суть важно. у вас есть 1000-е и более по глубине [level] ветки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2015, 12:00 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
qwwq, да , кстати, данное листа у вас лежит в той же таблице структуры ? (в чом есть смысл для запросов -- можно составные индексы вдоль структуры и данного) и данное это -- развесистое (много кило/мегабайтное) ? -- если да -- то массовый апдейт структуры приводит к массовому перемещению данного в новые версии. т.ч. тут оптимум надо искать меж возможностью сложных поисковых индексов по структуре и полям данных [когда всё вместе], и затратностью на передвигание листьев [какую можно снять отделив данные листьев в отдельную таблу[что порождает дополнительные джойны и сложности уже при массовом выборе листьев по структуре]]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2015, 12:08 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Winnipuh, Кстати, забыл про ограничения ltree: 1)Уровень вложенности не более 255(или 256) 2)метки только ASCII тоже ограниченной длинны id - id_parent По скорости чтобы кусок дерева перевесить на другого родича достаточно переназначить его id_parent Очень быстрая операция. Самая быстрая, наверное в этом методе. Медленнее - скопировать этот кусок дерева, но тоже ничего сложного особо. первым запросом создаётся времянка - что копировать. Вторым - расставляются новые id_parent в ней Третьим задаётся родитель верхнего уровня. Потом выгружается в основную таблицу и всё. Удаление - через foreign key каскадно. Проблем быть не должно, главное, чтобы по id - id_parent существовали индексы. Это в самом общем случае. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2015, 10:52 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
qwwqWinnipuh, если перевешивание у вас частая операция, и длина/развесистость веток значительная -- берите стандртный рекурсивный способ и не мучайтесь. [а то много почти пустых страниц в индексе поимеете -- придется реиндексить время от времени] ну, проиграете немного на скорости выборок ("рекурсивный" index -- seek по REFERENCE parentid(id)) -- это не суть важно. у вас есть 1000-е и более по глубине [level] ветки ? Операция перевешивания не частая, да и вложенности макс 128 уровней, и то это редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2015, 15:39 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Нашел здесь простой пример, вникаю http://leopard.in.ua/2013/09/02/postgresql-ltree/ Вопрос: есть такие запросы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Как будет выглядеть запрос (3+2), то есть "Найти всех чилдренов для найденного парента для указанного чилда?" То есть: найти всех братьев указанного чилда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 08:15 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Такой сделал запрос, но не работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 08:39 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Да, внутренний запрос такой работает, но здесь возвращается text: Код: sql 1. такой не работает: ошибка в позиции 20 Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 08:49 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 10:36 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
Winnipuh, А это чисто всех братьев без родича Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 10:38 |
|
||
|
Есть ли что-то похожаее на hierarchyid?
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН Код: sql 1. 2. ааа! спасибо Задача решена, но все-таки вопрос остается чисто принципиально: как сделать то, что выша спросил? то есть использовать запрос с подзапросом, где формируется path? Почему у меня ошибка в запросе, когда пытаюсь склепать путь из двух частей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38957113&tid=1997999]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 452ms |

| 0 / 0 |
