我正在构建一个应用程序,需要一个可以查询和遍历的互连对象的数据结构。对象之间的连接可以是任意的,不一定事先知道。我需要这个数据结构是可查询的(通常的 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 遍历之类的内容以及何时停止搜索。
我试图将其建模为具有邻接列表的顶点,但必须有更好的方法。有任何想法吗?