Как вы знаете, существует модуль для PostgreSQL под названием ltree. Кроме того, у вас есть возможность использовать тип массива для целых чисел (* 1, см. Комментарий ниже), который в этом тесте показывает, что он фактически выполняет немного медленнее с его рекурсивными запросами, по сравнению с ltree - за исключением индексации строк (* 2, см. комментарий ниже).
Я не слишком уверен в достоверности этих тестов, хотя.
Мой самый большой вопрос здесь - это относительно относительно неизвестный и почти недокументированный древовидный модуль. Описан здесь (где документация также может быть найдена!!) как:
поддержка иерархических типов данных (вид лексикографических деревьев), должен идти на вклад/дерево, ожидая из-за отсутствия надлежащего .
Прочитав документацию, я немного запутался относительно того, должен ли я основывать свое большое приложение (CMS, где все будет храниться в иерархической древовидной структуре - не только контент, так и файлы и т.д., поэтому вы можете увидеть, как это быстро масштабируется) вокруг ltree, нормальный материализованный путь (перечисление пути) с разделителем строки или целочисленного массива в качестве пути - или если относительно неизвестным "древовидным" модулем в теории должно быть более эффективное, более масштабируемое и лучшее решение из двух.
Я уже проанализировал разные модели древовидной структуры и из-за производительности запросов, масштабируемости и переупорядочения узлов и поддеревьев, являющихся моими основными требованиями, я смог исключить списки Adjacency (рекурсивный CTE не будет решать производительность, поскольку масштаб деревьев), вложенные наборы/интервалы (не достаточно быстро в некоторых запросах, учитывая его недостатки при манипулировании деревом), таблицы закрытия (ужасно при масштабировании больших сложных деревьев - не полезно для такого крупного проекта, как мой) и т.д. идти с материализованным путем, который является супер быстрым для операций чтения и позволяет легко перемещать поддеревья и узлы вокруг hiearchy. Таким образом, речь идет только о лучших из предлагаемых реализаций для материализованного пути.
Мне особенно любопытно слышать ваши теории или опыт с "деревом" в PostgreSQL.