【问题标题】:Optimizing a Prefix Tree in OrientDB在 OrientDB 中优化前缀树
【发布时间】:2016-12-23 23:36:08
【问题描述】:

在我的项目中,我有一个相当大的前缀树,可能包含数百万个节点(在我的开发实例中大约有 25 万个节点),在 OrientDB 中管理(指向我图中的其他顶点)。

前缀树的节点由一个Token顶点类型表示。每个 Token 都有一个“key”属性,并通过“child”边缘类型连接到它的子顶点。因此,像“hello world”这样的序列将表示为:

root -child-> "hello" -child-> "world"

目前,我在 Token.key 上有一个 NOTUNIQUE_HASH_INDEX,我正在查询这样的数据结构:

SELECT EXPAND(OUT('child')[key=:k]) FROM :p

其中 k 是我要查找的子键,p 是父节点的 RID。

一般来说,性能相当不错,但我正在为这个用例寻找改进查询、索引或两者兼而有之的想法。特别是,从具有许多子节点的根节点开始的查询比其他连接较少的节点花费的时间明显更长。

有什么建议吗?提前致谢!

【问题讨论】:

  • 你可以在社区看到答案。

标签: orientdb


【解决方案1】:

OrientDB 团队的 Luigi Dell'Aquila 在 OrientDB Google Group 上提供了出色的答案。总而言之,以下查询(由 Luigi 建议)显着提高了性能。

SELECT FROM Token where key = :k AND in('Child') contains :p

我刚刚进行了一次实际测试,查询时间减少了 97%!详情请见https://groups.google.com/forum/#!topic/orient-database/mUkz6Z7hSwk

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多