java - 大容量可查询和可遍历的数据结构

标签 java database data-structures graph jo4neo

我正在构建一个应用程序,需要一个可以查询和遍历的互连对象的数据结构。对象之间的连接可以是任意的,并且不一定事先已知。我需要这个数据结构是可查询的(通常的 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子句,开始将是遍历的起始节点,路径将定义 BFS 和 DFS 遍历以及何时停止搜索等内容。

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

最佳答案

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

关于java - 大容量可查询和可遍历的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2076242/

相关文章:

database - Prolog:如何删除谓词中的对称值

MYSQL 错误 1060 - 重复列

mysql - 替换表名+mysql中的部分字符串

c++ - 是否有使用用户提供的提示的最近邻数据结构?

java - 在 OpenJPA 中使用 map 查询实体

java - postgresql:无法使用在准备好的语句上采用查询字符串的查询方法

Python 响应数据类型 - 如何访问数据

algorithm - 如何生成尽可能不平衡的 AVL 树?

java - 具有不同 Maven 模块的 Spring 资源解析器

java - @BASE_DIR@/install.log(没有这样的文件或目录)在为 SSO 进行 openam 设置时