php - 存储趋势数据的最佳方式是什么?

标签 php mysql storage trending

我目前正在构建一个应用程序,我正在为(当前)大约 15,000 种产品导入统计数据。目前,如果我要为来自一个来源的每一天的统计数据维护一个数据库表,它将每天增加 15,000 行数据(假设每行 5-10 个字段,主要是 float,int)。显然相当于每年超过 500 万条记录到一张表中。

我并不关心从其他来源引入数据的想法(因此每个新来源将数据库的大小增加 500 万条记录)。

现在数据是基于统计/趋势的数据,基本上每条记录每天写入 1 次,读取很多次。但是,出于即时报告和绘图的目的,我需要根据规则(日期范围、值范围等)快速访问数据子集。

我的问题是,这是存储数据(MySQL InnoDb 表)的最佳方式,还是有更好的方式来存储和处理统计/趋势数据?

此时我已经考虑过的其他选项: 1. 多个数据库(每个产品一个),其中每个数据源都有单独的表。 (即数据库:ProductA,表:Source_A,Source_B,Source_C) 2、一库多表(每个产品/数据源一张) (即数据库:产品,表:ProductA_SourceA、ProductA_SourceB 等) 3. 数据库中的所有事实 或特定产品信息以及 csv、xml、json(平面文件)中的所有统计 数据在单独的目录中。

到目前为止,这些选项都不是很容易管理,每个选项都有其优点和缺点。在进入开发的 alpha 阶段之前,我需要一个合理的解决方案。

最佳答案

您可以尝试使用基于列的数据库。这些类型的数据库在您所描述的那种分析查询方面要好得多。有几个选项:

http://en.wikipedia.org/wiki/Column-oriented_DBMS

我们对 InfiniDB 有很好的体验:

http://infinidb.org/

Infobright 看起来也不错:

http://www.infobright.com/

InfiniDB 和 Infobright 都有免费的开源社区版本,因此我建议使用这些版本来获得一些关于您可能获得的性能优势的基准。

您可能还想考虑对数据进行分区以提高性能。

关于php - 存储趋势数据的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724798/

相关文章:

swift - 如何更新存储节点 firebase swift

mysql - 如何在同一列上找到具有多个不同值的结果?

更新应用程序时的 Android 内部存储

php - WooCommerce 结帐单选按钮,根据特定项目小计设置百分比费用

php - PHP 与 MySQL 的执行时间

php - 使用 jQuery 加载页面时是否可以获取 POST 值?

php - 从 cakephp 中的另一个表获取表的计数

android - 有没有办法在 Android 中获取 SD 卡的大小?

javascript - 如何将动态 JS 文件传递​​到 PhantomJS

PHP - PDO 引用是否免受 SQL 注入(inject)攻击?