我开始处理从API返回的大数据。 API会在一个请求中返回数千行,如下所示:
"2000-01-06": {
"1. open": "112.1900",
"2. high": "113.8700",
"3. low": "108.3700",
"4. close": "110.0000",
"5. volume": "27488300"
},
"2000-01-05": {
"1. open": "111.1200",
"2. high": "116.3700",
"3. low": "109.3700",
"4. close": "113.8100",
"5. volume": "32029800"
},
"2000-01-04": {
"1. open": "113.5600",
"2. high": "117.1200",
"3. low": "112.2500",
"4. close": "112.6200",
"5. volume": "27059500"
},
"2000-01-03": {
"1. open": "117.3700",
"2. high": "118.6200",
"3. low": "112.0000",
"4. close": "116.5600",
"5. volume": "26614200"
}
在下一步中,我想使用数据,过滤器,搜索,构建平均值等。将数据首先存储在我的数据库中并使用它直接使用或直接使用api中的哈希值是否聪明?我正在使用RoR和Postgres。
我的想法是将数据存储在关系数据库中,其中包含日期,开放,高等列。
答案 0 :(得分:0)
这取决于您对数据做了什么。
如果数据经常在请求之间发生变化,您只需要在其上运行一次算法,只需在内存中执行: 当你从API中获取它时,它已经以高效格式(JSON)存储在内存中。 将其解析为ActiveRecord并存储到磁盘将会慢得多。
如果您想运行分析异步,或者由于某种原因需要对数据进行规范化,那么您需要对数据进行Objectify。它会变慢,但通常更容易解释(并自然地使用Ruby或SQL而不是混淆散列管理)
如果您以后需要访问它,请查看跳过ActiveRecord并保留数据库层以保持持久性。