为大量价格数据创建数据"平铺"

Kir*_*met 5 javascript algorithm charts bigdata

我正在设计一个我想要很棒的JavaScript图表,我需要你的帮助.

假设我有500万条记录,其价格数据如下:

open  high  low  close  volume  timeStart      timeEnd        timeDuration
10    20    5    15     500     1391895920860  1391895920920  60
Run Code Online (Sandbox Code Playgroud)

所以,我有500万条记录描述了一分钟分辨率的东西价格.

现在,我需要向用户显示一个代表所有这500万条记录的图表.默认情况下,图表将以一周的间隔显示2年的数据.一周间隔两年的数据仅为104条记录.因此,为了生成我的104周记录,我需要处理所有500万分钟记录,并将它们分组为数周.

假设用户放大并希望看到每三天分组的数据而不是一周的间隔.我将需要生成三天记录,这些记录将我的一分钟分辨率数据中的数据分组.

事实上,对于我将允许用户放大的每个间隔,我需要提前总结我的分钟分辨率数据.为了节省数据库的负担,我将生成客户端可以快速下拉的CSV"磁贴".每个磁贴将包含1,000条记录.

以下是我将支持的分辨率("缩放级别")以及在一分钟分辨率下提前生成两年价格数据所需的切片数量:

1 minute - 1440 tiles (estimated to be about 40 MB of data)
3 minute - 480 tiles
5 minute - 288 tiles
15 minute - 96 tiles
30 minute - 48 tiles
1 hour - 24 tiles
2 hours - 12 tiles
4 hours - 6 tiles
6 hours - 4 tiles
12 hours - 2 tiles
1 day - 1 tile
3 days - 1 tile
1 week - 1 tile
1 month - 1 tile
1 year - 1 tile
Run Code Online (Sandbox Code Playgroud)

这里的想法是,当用户第一次点击图表时,我需要做的就是拉下一周的图块,它将包含我的所有104条记录.当他们放大一周瓷砖的一部分时,我将拉下3天的瓷砖.

所以这是我需要帮助的地方.如果用户从1天缩放级别放大12小时图块,我需要智能地知道我应该抓住哪个12小时图块.我想我的瓷砖需要有一个命名方案,允许客户轻松识别任何父瓷砖的子瓷砖.

任何人都可以帮我找到这些瓷砖的命名方案吗?我特别需要:

  1. 我将生成的所有图块的文件命名方案
  2. 图表将用于轻松识别要放大的正确子图块或父图像缩小到的算法

很想听听您的想法和反馈!

Mar*_*die 1

我会对数据进行分层建模。每个分辨率一层。每层在主格和功能上都是独立的。为了系统稳定性,每一层都使用相同的名称约定。

如果您要使用 JavaScript,我会使用 JavaScript 日期约定(如果适用)。

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9

对于非标准“分辨率”(例如 6 小时划分),应用简单的模型更容易理解:普通划分

  • 添加:上下文。日期的“更大”单位部分。
  • 红利:元素的一部分。
  • 除数:划分的大小
  • 余数:分辨率的索引。

示例日期:2014 年 2 月 11 日 08:14 22'。

方案A

仅划分 1 个较大的元素。例如,在 6 小时分辨率中,仅划分 1 天。其余的日子是“补充”或上下文。

第 1 层:

Layer1/2014.csv
Run Code Online (Sandbox Code Playgroud)

第 7 层:

Layer7/2014/41/1.csv
Run Code Online (Sandbox Code Playgroud)

*41 是一年中的第几天。

方案B

按时间戳范围分割。

第 7 层:

Layer7/1414908000-1414929600.csv
Run Code Online (Sandbox Code Playgroud)