2

在现有 RDBMS 之上是否有任何开源分层数据库或仿真?

我正在搜索一个 DMBS(或现有 RDBMS 的插件),它可以存储分层数据并允许对分层数据执行查询(例如“SELECT LEVEL ... CONNECT BY ...”、“SELECT PARENT ...” )。我知道 Oracle 有一些支持,但有更复杂的解决方案吗?

4

3 回答 3

3

没有用于执行此操作的标准化插件。我看过不止一次。但是,有多种选择。从我之前关于同一主题的问题中可以看出:

在关系数据库中存储分层数据的选项有哪些?

简而言之,如果您使用带有 ID 和 ParentID 的表(也称为邻接表),则您可以在大多数数据库中使用通用表表达式(Oracle 的 CONNECT BY 是最显着的例外之一)。OTO,诸如物化路径或嵌套集之类的东西可能更适合您的情况 - 例如,能够轻松找到“血统”,其中使用邻接列表这是一项昂贵的操作。

通常,一个需要广泛处理分层数据的系统(例如 CMS)最终会发生什么,它实现了多个这些解决方案。假设是读取重于写入。

于 2010-12-16T17:39:07.093 回答
0

您是否尝试过 Nest Set 模型http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

于 2010-12-16T10:39:15.403 回答
0

关系数据并不像 XML 这样的固有层次结构那样直接支持层次结构。您必须使用数据模型(例如嵌套集或直接自联接)来对层次结构进行建模。

根据您拥有的系统类型,公用表表达式将允许您对数据运行分层查询。自 2005 年以来的 SQL Server 版本、最新版本的 DB/2 和 PostgreSQL 以及可能的其他一些系统都支持 CTE。CTE 比 CONNECT BY 稍微复杂一些,但它们确实可以在各种各样的平台上运行。

于 2010-12-16T14:22:15.900 回答