【问题标题】:Time series data representation in MarkLogicMarkLogic 中的时间序列数据表示
【发布时间】:2015-09-09 22:16:47
【问题描述】:

历史股票价格等时间序列数据通常存储在 RDBMS 中。

我正在评估使用此数据的各种选项,可能将其存储在 MarkLogic 中的文档存储或三重存储中,并在此数据和/或存储在文档/三重存储中的其他类型的数据上构建一些用例.

基本上,我正在寻找方法

  1. 将时间序列数据(例如历史股票价格)存储在 MarkLogic 数据库中。
  2. 查询此数据的方法(存储在 ML 中或通过 RDBMS 查询),例如通过 XQuery。
  3. 查询此数据的方法,以及存储在 doc/triple 存储中的其他数据。

如果有这方面的任何建议,我将不胜感激。


添加了更多信息...

我正在尝试找到一种巧妙的方法将这些数据捕获为三元组。这个想法是将这些数据与其他相关数据联系起来会很好。例如,如果我们尝试存储的历史股票价格是针对在 NYSE 上市的 HSBC,那么我们可以以某种方式定义 HSBC 和 NYSE 的资源,并将股票价格捕获为文字(也许),然后将资源 HSBC 与例如dbpedia中存储的公司信息。

本质上,我说的是创建链接数据,以便轻松查询从不同来源获取的数据,并且如果可能的话,尝试使用推理。例如,如果我使用这种方法,我可能会运行一个查询,例如“获取总部位于伦敦且营业额超过 10 亿美元的公司的股票价格”。

【问题讨论】:

    标签: time-series marklogic historical-db


    【解决方案1】:

    您有 2 个选择。每个系列有 1 个大文件,或者每个价格有 1 个文件。不推荐使用前者,后者可以更好地使用索引系统,尤其是时间戳上的范围索引。

    我使用 MarkLogic 开发了一个系统,该系统本质上是一个存储时间序列的系统。我们在系列中的每个点使用 1 个文档(以及系列本身的 1 个文档,用于其“元数据”,所有信息在系列中的所有点中都是通用的)。我们还将与 1 个系列相关的所有文档放在 1 个集合中。我们使用基于时间戳和每个系列唯一 ID 的文档 URI 命名方案,因此我们可以轻松保证文档 URI 的唯一性。

    重要的一点是让系列点文档引用他们的系列文档(显式地或仅仅通过在同一个集合中),而不是相反。

    根据查询,这取决于您的特定用例,但通常您将使用集合上的搜索约束来识别一个(或多个)系列,并使用时间戳上的范围索引来选择点的“切片”在系列中。如果您有像根据值(而不是时间)选择点这样的用例,您可以通过在值本身上使用范围索引来像根据时间戳一样高效地执行此操作。

    【讨论】:

      【解决方案2】:

      我建议将时间序列数据存储在时间序列数据库中:https://en.wikipedia.org/wiki/Time_series_database

      更新 1

      您可以将 HSBC 定义为一个实体,为该实体指定元数据,例如位置或人数,然后将季度收入和交易价格作为单独的时间序列存储。然后您可以运行查询 a) 按元数据标签(例如位置)过滤并按聚合过滤,例如MAX(价格)。实际上,我也会将人数存储为系列。通过这种方式,我可以调查不同系列之间的相关性以进行研究和分析。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-05
        • 1970-01-01
        • 2015-05-12
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 2017-09-14
        相关资源
        最近更新 更多