使用分层结构搜索DBMS

时间:2010-12-16 10:35:32

标签: sql database rdbms hierarchical-data hierarchical-query

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

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

3 个答案:

答案 0 :(得分:3)

没有一个标准化的插件可以做到这一点。我不止一次看过。但是,有很多选择。从我之前关于同一主题的问题看:

What are the options for storing hierarchical data in a relational database?

简而言之,如果您使用具有ID和ParentID(a.k.a。邻接列表)的表,则将公用表表达式与大多数数据库一起使用(Oracle的CONNECT BY是最值得注意的例外之一)。 OTO,类似于物化路径或嵌套集合可能更适合您的情况 - 例如,能够轻松找到“血统”,其中邻接列表这是一项昂贵的操作。

通常,需要与分层数据(例如CMS)进行广泛协作的系统最终会发生这种情况,即它实现了多个这样的解决方案。这个假设读取的重要性大于写入。

答案 1 :(得分:0)

答案 2 :(得分:0)

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

根据您拥有的系统类型,Common Table Expressions将允许您对数据运行分层查询。自2005年以来,SQL Server版本支持CTE,最新版本的DB / 2和PostgreSQL - 可能还有其他一些系统。 CTE比CONNECT BY更加繁琐,但它们确实在各种各样的平台上运行。