数据库中的超图

Hypergraph in database

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

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

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

我需要构建一个数据库结构来支持图形算法,并且它必须快速运行。哪种类型的数据库可以解决这个问题,我应该如何构建结构?我需要使用图形数据库,sql 还是 NoSql?
我将不胜感激任何想法或例子。

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

要在任何图形数据库中支持超边,诀窍是创建一个节点类型:hyperedge 和 link 与您完全一样的节点做了你的图。

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

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

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

如果您的数据规模非常大,您可能想要探索 Titan,以及基于 Cassandra 或 HBase(2 个 NoSQL 数据库)的开源图形数据库。

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

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