在现有 RDBMS 之上是否有任何开源分层数据库或仿真?
我正在搜索一个 DMBS(或现有 RDBMS 的插件),它可以存储分层数据并允许对分层数据执行查询(例如“SELECT LEVEL ... CONNECT BY ...”、“SELECT PARENT ...” )。我知道 Oracle 有一些支持,但有更复杂的解决方案吗?
在现有 RDBMS 之上是否有任何开源分层数据库或仿真?
我正在搜索一个 DMBS(或现有 RDBMS 的插件),它可以存储分层数据并允许对分层数据执行查询(例如“SELECT LEVEL ... CONNECT BY ...”、“SELECT PARENT ...” )。我知道 Oracle 有一些支持,但有更复杂的解决方案吗?
没有用于执行此操作的标准化插件。我看过不止一次。但是,有多种选择。从我之前关于同一主题的问题中可以看出:
简而言之,如果您使用带有 ID 和 ParentID 的表(也称为邻接表),则您可以在大多数数据库中使用通用表表达式(Oracle 的 CONNECT BY 是最显着的例外之一)。OTO,诸如物化路径或嵌套集之类的东西可能更适合您的情况 - 例如,能够轻松找到“血统”,其中使用邻接列表这是一项昂贵的操作。
通常,一个需要广泛处理分层数据的系统(例如 CMS)最终会发生什么,它实现了多个这些解决方案。假设是读取重于写入。
您是否尝试过 Nest Set 模型http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
关系数据并不像 XML 这样的固有层次结构那样直接支持层次结构。您必须使用数据模型(例如嵌套集或直接自联接)来对层次结构进行建模。
根据您拥有的系统类型,公用表表达式将允许您对数据运行分层查询。自 2005 年以来的 SQL Server 版本、最新版本的 DB/2 和 PostgreSQL 以及可能的其他一些系统都支持 CTE。CTE 比 CONNECT BY 稍微复杂一些,但它们确实可以在各种各样的平台上运行。