1

我正在构建一个应用程序,需要一个可以查询和遍历的互连对象的数据结构。对象之间的连接可以是任意的,不一定事先知道。我需要这个数据结构是可查询的(通常的 SQL 提供的)和可遍历的(像 neo4j 这样的新图形数据库提供的)。我正在尝试获得既能兼顾又能有效处理非常大的数据集的东西。我们称这个数据结构为 dao。我需要以下原始方法:

// dealing with the objects
dao.save(s);
Something s = dao.load(Something.class, 5);
dao.update(s);
dao.delete(s);

// dealing with the relations
dao.relate(s, t);
dao.unrelate(s, t);

// the tricky methods
dao.querier(Something.class).filter(...).sort(...).values();
dao.traverser(Something.class).start(s).path(...).filter(...).sort(...).values();

过滤器类似于sql where 子句,排序类似于 sql order 子句,start将是遍历的起始节点,路径将定义诸如 BFS 和 DFS 遍历之类的内容以及何时停止搜索。

我试图将其建模为具有邻接列表的顶点,但必须有更好的方法。有任何想法吗?

4

2 回答 2

0

也许使用 Neo4j 的sparql查询引擎?

于 2010-01-16T05:09:10.143 回答
0

是的,Neo4j将是一个不错的选择。除了 Java 的原始用法之外,Jo4neo还为您的对象模型在图形上提供了基于注释的持久性。对于查询,您可以使用 Neo4j 高速 Java Traversers,或者使用JRuby Wrapper之类的东西,它为来自 JRuby 的查询提供了非常方便的抽象。此外,Gremlin专注于深度图遍历,但尚未针对速度进行优化。

于 2010-01-17T16:09:48.377 回答