time-series - 在 ArangoDB 中构建时间序列数据

标签 time-series data-modeling graph-databases arangodb aql

我有一些时间序列数据(大约每天 1-5 个点)我需要能够使用 ArangoDB 在 webapp 中快速访问。数据与特定配置文件相关联,但一个集合用于所有配置文件的所有数据。在配置文件节点和数据节点之间,有一个报告节点和一个事件节点。该报告只是来自给定事件的一组数据点。现有的图结构如下所示:

profile =====> event1 ========> reportA =======> data1
     \             \                   \=======> data2
      \             \
       \             \========> reportB =======> data3
        \                              \=======> data4
         \
          \==> event2 ========> reportA =======> data1    
                   \                   \=======> data2
                    \
                     \========> reportB =======> data3
                                       \=======> data4

我想要的图表将按关联事件有效地按顺序显示 data1,按事件的属性排序。我希望结果集的类似表格结构如下所示:

event      dataAttr     value
-------------------------------
event1     data1        42
event2     data1        6
event3     data1        7
event4     data1        343

我可能会针对给定报告中的每个 dataAttr 运行此查询,以有效地为特定配置文件上的每个 dataAttr 创建时间序列结果集最近 10-20 个事件。

在调查 Neo4J 中的这个问题时,他们建议直接将顺序事件相互连接起来。我想知道这是否也是 ArangoDB 中更好的方法。

这意味着创建一个看起来像这样的附加图表:

data1 (of event1) => data1 (of event2) => data1 (of event3) => data1 (of event4)
data2 (of event1) => data2 (of event2) => data2 (of event3) => data2 (of event4)

等等

每个 dataAttr 都连接到它在前一个事件中的堂兄,因此在遍历到第一个图中的最近事件之后,第二个图将用于遍历 n 层到过去的事件(实际上是 10-20)。

这可能是为这样的查询构建数据的最佳方式吗?性能至关重要,因为我可能会在一个页面上加载 20 个图表,每个图表都由该查询提供。

这个查询是否会比通过图遍历更快速地查询带有索引的文档集合?文档集合结构可以在 dataAttr 上放置哈希索引,在事件上放置跳表(它们将通过字符串排序按顺序排列)。

我假设向下遍历到 event1data1,返回到 profile,然后返回到 event2 data1 等会非常低效。

最佳答案

如果性能至关重要,那么尝试使用索引来处理尽可能多的事情是最重要的。如果路径长度未知(这不是您的用例),遍历会更好。

我建议对存储在数据节点中的数据进行反规范化。您想要返回属于 profile 和给定 dataAttr 的所有数据节点,这些节点按时间戳 timeStamp 排序,对吗?在这种情况下,我至少会将配置文件标识符添加到数据节点,并在 profileIddataAttrtimeStamp 上使用跳过列表索引。

关于time-series - 在 ArangoDB 中构建时间序列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40433236/

相关文章:

time-series - 即时聚合时间序列数据

tensorflow - 喀拉斯 LSTM : how to predict beyond validation vs predictions?

mysql - 数据库设计 : need unique rows + relationships

version-control - OrientDB,如何检索以前的记录版本

neo4j - Neo4j 是否可以横向扩展以进行写入?

r - 使用来自预测的准确度()测量 VAR 准确度

matlab - 如何为此预测示例 Matlab 进行标记

database - 识别关系和非识别关系有什么区别?

security - 避免在 Web 应用程序源中暴露主键?

graph - Triplestore和图数据库之间有什么区别?