Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 股票价格数据的数据存储,每日和每周?_Php_Mysql_Sql_Database Design - Fatal编程技术网

Php 股票价格数据的数据存储,每日和每周?

Php 股票价格数据的数据存储,每日和每周?,php,mysql,sql,database-design,Php,Mysql,Sql,Database Design,我正在存储1970年至今3500种不同股票的价格历史数据(每天运行一个cron作业进行更新) 存储此数据的最佳方式是什么?它将用于运行基于每日数据和每周数据的计算。目前,我将其存储为: stock_id, date, closing_price, high, low, open, volume 既然我也想要每周价格,我是否应该单独制作一张表来存储: stock_id, week_end_date, weekly_closing_price, weekly_high, weekly_low, w

我正在存储1970年至今3500种不同股票的价格历史数据(每天运行一个cron作业进行更新)

存储此数据的最佳方式是什么?它将用于运行基于每日数据和每周数据的计算。目前,我将其存储为:

stock_id, date, closing_price, high, low, open, volume
既然我也想要每周价格,我是否应该单独制作一张表来存储:

stock_id, week_end_date, weekly_closing_price, weekly_high, weekly_low, week_open_price, average_daily_volume, total_weekly_volume

因为这些数据都可以从第一个表中计算出来,所以有必要再次存储它吗?我考虑它的唯一原因是有很多行数据要运行计算….

这取决于您有多少数据,以及您是否有其他事务需求

如果您有源/OLTP系统,那么在源/OLTP系统中复制此数据是没有意义的。我是一名SQL Server程序员,不是MySQL,但我想他们像所有其他RDBMS一样有datepart函数,所以从日期确定周数是很简单的

但是,当您使用OLAP或报告时,您可能希望在一周级别的粒度上创建另一个包含数据的表。这将使报告速度更快,特别是对于聚合之类的东西,在针对函数的输出运行时通常表现不好


这两者都取决于数据的规模。如果您每天有数百行,那么为其创建一个物化的周表可能是不值得的。如果您每天有数以万计的记录,那么性能优势可能会使其成为一个合理的选择。

您会问是否有必要?谁知道呢。这取决于您有多少磁盘空间。但是,您所描述的是一个“老式”聚合表,通常用于提高报告性能。在处理历史数据时,不需要重新计算每周总计之类的数据,因为数据不会改变

事实上,如果我这样做的话,我还会定义“月度”和“年度”汇总表,以获得更大的灵活性,特别是对于这么多的历史。你可以考虑“标准化”数据,这样每个时期都是可比的。日历月和日历周的交易日数不同,因此“平均日交易量”之类的说法可能会产生误导

如果你真的想变得有趣,就研究一下ROLAP解决方案吧。这是一个非常广泛的话题,但你可能会发现它很有用

因为这些数据都可以从第一个表中计算出来,所以有必要再次存储它吗

没有必要对其进行汇总和存储。您只需创建一个执行所有汇总计算的视图,然后查询该视图

但是,如果要在整个数据范围内大量运行报告,则有必要对其进行一次汇总并存储结果。您将从大约4000万行开始。(3500只股票*43年*265天/年)

如果我是你,我会加载数据,编写每周价格查询,并测试性能。如果速度太慢,请将摘要数据插入表中