php – 如何处理用于分析的大型数据集以及不同数量的列?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何处理用于分析的大型数据集以及不同数量的列?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为移动应用程序构建分析系统,并且在决定如何存储和处理大量数据时遇到了一些困难.

每行代表一个“视图”(如网页)并存储一些固定属性,如用户代理和日期.另外,每个视图可以具有不同数量的额外属性,这些属性与所执行的动作或内容标识符有关.

我查看了amazon SimpleDb,它可以很好地处理不同数量属性,但是不支持group by,并且在COUNTing行时似乎表现不佳.生成包含30个数据点的月度图表将需要查询每个数据集的每一天.

MySQL更好地处理COUNT和GROUP修饰符,但是附加属性需要存储在链接表和JOIN中以检索属性与给定值匹配的视图,这不是非常快. 5.1的分区功能可能有助于加快速度.

我从上述系统的大量阅读和分析查询中收集到的是,最终所有数据都需要聚合并存储在表中,以便快速生成报告.

是否错过了我研究中显而易见的任何内容,是否有比使用@L_512_22@更好的方法?它不适合作业,但我找不到任何能够同时进行GROUP / COUNT查询和灵活的表结构的任务.

解决方法

保持在MysqL中:如果写入量有限/读取更常见,并且数据相对简单(即:您可以预测可能的字符),您可以尝试在主表中使用text / blob列,使用逗号分隔值或键/值对更新,并在连接表上使用AFTER INSERT / UPDATE触发器.您将实际数据保存在单独的表中,因此搜索MAX的/特定“额外”属性仍然可以相对较快地完成,但是检索一个“视图”的完整数据集将是主表中的单行,您可以使用您正在使用的脚本/应用程序拆分为单独的值,从而减轻数据库本身的压力.

这样做的缺点是连接表中更新/插入成本的大幅增加:每次数据更改都需要查询记录的所有相关数据,并在第二次插入“普通”表中,类似于

UPDATE join_table
JOIN main_table
ON main_table.id = join_table.main_id
SET main_table.cache  = GROUP_CONCAT(CONCAT(join_table.key,'=',join_table.value) SEPARATOR ';')
WHERE join_table.main_id = 'foo' GROUP BY main_table.id`).

但是,随着分析数据的发展,它通常会有所不同,所以可能不是每个更新都必须触发缓存中的更新,只需每天使用昨天数据填充缓存的cronscript就可以了.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何处理用于分析的大型数据集以及不同数量的列?全部内容,希望文章能够帮你解决php – 如何处理用于分析的大型数据集以及不同数量的列?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。