【发布时间】:2019-01-17 10:56:34
【问题描述】:
我需要存储和访问金融市场烛台信息。
我需要储存的蜡烛数量开始变得惊人(巨大)。有 1000 个市场,每个市场都有很多交易对,每对都有很多时间框架,每个时间框架都是一组蜡烛,如下所示。例如,下面的数组可以是每小时价格数据或每日价格数据。
我需要在任何给定时间将此信息提供给多个用户,因此需要存储它并以某种方式使其可用。
数据看起来像这样:
[
{
time: 1528761600,
openPrice: 100,
closePrice: 20,
highestPrice: 120,
lowesetPrice:10
},
{
time: 1528761610,
openPrice: 100,
closePrice: 20,
highestPrice: 120,
lowesetPrice:10
},
{
time: 1528761630,
openPrice: 100,
closePrice: 20,
highestPrice: 120,
lowesetPrice:10
}
]
数据的消费者主要是基于 JavaScript 的复杂图表应用程序,但其他消费者将是节点代码,也可能是其他后端代码。
我目前最好的想法是将烛台保存在 Redis 中,尽管我也考虑过一个 noSQL 数据库。我在这两个方面都不是很有经验,所以我不能 100% 确定 Redis 是正确的选择。虽然它似乎是性能最高的选项,但可能更难使用,因为我必须学习很多东西,而且我不相信 Redis 使用的保存和检索方法会使这变得非常容易,因为,我需要不断地为每个数组添加蜡烛。
我目前在想这样的事情:
从烛台 API 进行初始提取,然后:
- 创建一个带有合适标签的 Redis 哈希,并将整个蜡烛数组插入到哈希中,以便通过 Javascript 等对其进行解析
这种方法的缺点:
每次创建新蜡烛时,我都必须解析 json,添加任何新的蜡烛棒,然后将其字符串化并保存。
这种方法的优点:
我可以使用 Javascript 来管理数组并确保它已排序等
- 创建一个 Redis 时间戳列表,这样我就可以将新蜡烛添加到列表中并相信它的顺序正确。然后我可以做一个 Redis SCAN 吗?返回特定日期之间的时间戳,然后使用时间戳从 Redis 哈希中提取数据。在检索所有这些之后,然后构建一个类似于上面的 json 对象以传递给 Javascript。
我不得不说,这两种方法都让我将数据放入关系数据库中感觉更痛苦。我想非 SQL 数据库也可能更容易,但我对它们没有经验,所以我不能肯定。
如您所知,我有点迷茫,失去了我在这里的经验,并且希望任何人都可以给我任何建议。
谢谢:)
【问题讨论】:
-
Redis 可以准确地称为 NoSQL 数据库,fwiw