SQL 中图结构的闭包 table 等效
Closure table equivalent for graph structures in SQL
这个问题How to store tree structure in sql? lead to the idea of a Closure table用于存储树,在很多方面都是最优的。
问题是 SQL 中的图形结构是否存在这些问题。我看到 this paper 似乎勾勒出一个图形索引结构,但它有点让我头疼。想知道是否有一种方法可以创建一些辅助表来处理 SQL.
中图形数据的常见查询
我做了你链接到的演示文稿,有人问我用类似的方法实现一般图形,但我从来没有抽出时间去做。
当然,如果你有循环图,该技术就会有问题,除非你可以明确地识别一个 "starting node." 因为否则,如果你从循环中的任何节点开始,你会希望能够遍历图中的整个循环。
在 SQL 中使用递归 CTE 可能更容易,但我最常使用 MySQL,它在 8.0 版之前不支持 CTE 语法。如果你确实有递归 CTE 能力,你最好使用它而不是闭包 table,因为你发生数据异常的可能性较小。
另一种选择是探索专门的 graph database. For MySQL/MariaDB, there's a community storage engine that optimizes for tree and graph queries: https://openquery.com.au/products/graph-engine
这个问题How to store tree structure in sql? lead to the idea of a Closure table用于存储树,在很多方面都是最优的。
问题是 SQL 中的图形结构是否存在这些问题。我看到 this paper 似乎勾勒出一个图形索引结构,但它有点让我头疼。想知道是否有一种方法可以创建一些辅助表来处理 SQL.
中图形数据的常见查询我做了你链接到的演示文稿,有人问我用类似的方法实现一般图形,但我从来没有抽出时间去做。
当然,如果你有循环图,该技术就会有问题,除非你可以明确地识别一个 "starting node." 因为否则,如果你从循环中的任何节点开始,你会希望能够遍历图中的整个循环。
在 SQL 中使用递归 CTE 可能更容易,但我最常使用 MySQL,它在 8.0 版之前不支持 CTE 语法。如果你确实有递归 CTE 能力,你最好使用它而不是闭包 table,因为你发生数据异常的可能性较小。
另一种选择是探索专门的 graph database. For MySQL/MariaDB, there's a community storage engine that optimizes for tree and graph queries: https://openquery.com.au/products/graph-engine