代码之家  ›  专栏  ›  技术社区  ›  Ricardo Marimon

大容量可查询可遍历数据结构

  •  1
  • Ricardo Marimon  · 技术社区  · 15 年前

    我正在构建一个应用程序,需要一个可以查询和遍历的互联对象的数据结构。对象之间的连接可以是任意的,不必事先知道。我需要这个数据结构是可查询的(通常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和df遍历以及何时停止搜索。

    我试过用邻接列表将其建模为顶点,但肯定有更好的方法。有什么想法吗?

    2 回复  |  直到 13 年前
        1
  •  0
  •   Peter Neubauer    15 年前

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

        2
  •  0
  •   jspcal    15 年前

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