данных ltree от nestedset?
Понятно что в ltree есть path а в nestedset lft_key rght_key
Производительность, удобство и т.д.
https://t.me/pgsql/479677 и последующее обсуждение (оно не совсем в тему, но в результате Вам станет понятно, что в этом сравнении есть только один адекватный метод, так что...).
Это разные структуры. В случае с ltree мы храним весь path до узла в отдельном поле и не привязаны к порядку записи, можем добавлять индекс и достаточно быстро и просто выбирать как всю ветку по родителю так и всех родителей узла. Но платим за это хранением всего пути для каждой записи, что может быть критично для очень больших таблиц. NS же хранит только уровень, порядковый номер в дереве (lkey) и информацию о количестве вложенных элементов (r key), что несколько затрудняет прямой доступ к родителю (решается добавлением patent_id) и приводит к необходимости перестроения всего дерева при добавлении новых элементов. Зато уменьшаются накладные расходы на хранение. В 90% случаев можно обойтись связкой id<-parent_id, если по какой-то причине этого не достаточно, нужно смотреть по обстоятельствам, но с ltree (matpath) как по мне удобнее работать.
Обсуждают сегодня