数据库中的超图

时间:2015-07-11 15:16:07

标签: database data-structures graph hypergraph

我从一个项目开始,我需要将我的数据显示为超图。 这个想法是:
我有元素序列(顶点),我可以混合它们(创建边缘)。每个边缘都可以与元素混合。 这个想法看起来像这样:

                result
                 /
            mix(1+2) +
            element 3
                |
                +---------+
                |         |
             element      |
             1+2(mix)  element
               /|         3
              / |
             /  |
            /   |
        element |
           1    |
             element
                2

我需要知道所有混音并保存结果。 在我有足够的数据后,我需要对其进行分析,当用户选择3个或更多元素时,我需要显示他可以获得的所有结果。

我需要构建一个db结构来支持图算法,它必须快速工作。哪种类型的数据库将解决这个问题以及我应该如何构建结构?我需要使用图形数据库,sql还是NoSql?
我会感谢任何想法或例子。

2 个答案:

答案 0 :(得分:0)

这取决于您要运行的查询类型。但是对于面向图形的探索(读取图形遍历),您需要一个图形数据库。

要支持任何图形数据库中的超边缘,诀窍是创建一个类型为 hyperedge 的节点,并将节点链接到它,就像您在图中所做的那样。

hyperedge对象可以有子节点或超级对象(查询结果)。

为了实现这一点,我所知道的最快的图形数据库是Sparksee用C ++编写的.Net,Java,Python,Obj-C绑定。它可以免费用于学术用途(无论如何你都需要一个序列号。)

否则,您可以使用Neo4j这是最受欢迎的图形数据库(免费用于开源)。

如果您的数据规模非常大,您可能想要在Cassandra或HBase(2 NoSQL数据库)之上探索Titan和开源图数据库。

答案 1 :(得分:0)

您可以尝试使用HypergraphDB http://www.hypergraphdb.org/

它是一个简单的Java库(要添加到项目中的jar文件)并使用嵌入式数据库作为后端,它允许您使用图形而无需安装特定的后台运行服务器。