0

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

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

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

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

4

2 回答 2

0

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

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

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

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

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

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

于 2015-07-14T11:23:44.210 回答
0

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

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

于 2016-05-16T15:42:23.783 回答