【问题标题】:TinkerPop Blueprints and Frames - How to treat data as collectionsTinkerPop 蓝图和框架 - 如何将数据视为集合
【发布时间】:2013-01-24 05:00:50
【问题描述】:

我发现了这个问题How to store and retrieve different types of Vertices with the Tinkerpop/Blueprints graph API?

但这对我来说不是一个明确的答案。

例如,如何查询 10 篇最新文章和 10 位最近注册用户的 api?暂时搁置图形,因为此堆栈必须能够处理集合/文档范式以及图形范式(这些集合类型的元素之间的关系)。我已经阅读了包括源代码在内的所有内容,并且越来越近了,但还不够。

我读过的最接近的文档是这里的多租户文章:http://architects.dzone.com/articles/multitenant-graph-applications

但它侧重于使用 gremlin 进行图形分离和查询,我希望在需要对图形进行分析之前避免这种情况。

此时我正在考虑使用 cassandr/hadoop 并引用图形 id,但我可以看到这让我很痛苦。

【问题讨论】:

标签: graph neo4j orientdb titan


【解决方案1】:

Tinkerpop/Blueprints 中的索引仅支持基于属性键的精确匹配的简单查找。

如果您想查找最近的 10 篇文章或带有短语“Foo Bar”的文章,您可能需要使用 Lucene 或 Elastic Search 维护一个外部索引。这些技术使用支持术语/短语查找、范围查询和通配符搜索等的倒排索引。您可以将 vertex.getId() 作为字段存储在索引文档中,以链接回图形数据库中的顶点。

我已经为使用蓝图数据库 (Bitsy) 和精美索引 (Lucene) 的应用程序实现了类似的功能。我已经记录了the high-level design 以 (a) 使用每隔几秒的批量更新来保持花式索引是最新的,并且 (b) 确保跨图形数据库和花式索引的事务一致性。希望这可以帮助。

【讨论】:

  • 使用 vertex.getId() 链接回是一个坏主意,因为供应商实现的内部 id 可能会在服务器重启后发生变化。
【解决方案2】:

回答我自己的问题 - 答案是索引。

https://github.com/tinkerpop/blueprints/wiki/Graph-Indices

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多