gpt4 book ai didi

php - Web 应用程序的 PHP 和 MySQL 统计报告的建议

转载 作者:可可西里 更新时间:2023-11-01 07:36:07 24 4
gpt4 key购买 nike

背景:

我在我的小公司“继承”了一个 php webapp 并且经过多年的唠叨终于得到了去扔掉意大利面条代码并重新开始。

我们想记录在系统中进行的每个操作,例如:

  • 用户 X 浏览了项目 Y
  • 用户 X 更新了项目 Y
  • Z 城市的新商品 Y

然后提供不同分辨率的图表(日、月、年)在系统中完成的操作。

在以前的版本中,我们有一个包含 20,000,000 条记录的表,因为2005 所以这会让你了解我们已经拥有的数据量有,这只是众多统计数据中的一个。

实际问题:

您对构建接近实时的网站有何建议系统创建此统计信息?

注意事项:

  1. Google 的可视化 API 已经涵盖了绘图
  2. 我不反对使用任何 NoSql 数据库或消息服务器、crons 或任何获取的东西工作完成,但更喜欢 mysql/php解决方案
  3. 我目前的思路是自动为每个创建一个表我要保存和创建的统计数据几个汇总表(按月、按天、按年)缓存结果。
  4. 我知道这是一个广泛的问题,但欢迎提出任何建议

最佳答案

如果所有用户都必须注册,我会采用完整的标准化解决方案。

USERS TABLE            OBJECTS TABLE
--------------- -----------------
user_id (primary) object_id (primary)


USERS_TO_OBJECTS TABLE
--------------------
user_id (index)
object_id (index)
time (index)
action (index)
? object_type (index) // could be useful to speed things up

此设置可能会在绘制图表时为您提供最大的灵 active ,并且速度也会非常快,因为如果您不需要用户或对象,您可以将其省略。

编辑:

假设城市 X(id 9876)由用户 123(id 1234)更新...

1234    - user_id (the user that did the action)
9876 - object_id (the object where the action was done)
xyz - time
updated - action type (so that you select only specific actions)
city - object type (so that you select only specific objects)

我已经用 4000 万行填充了这个表,结果是可以接受的。

0.002 秒,用于对过去一周更新的城市数量进行简单计数。数据是随机插入的。

编辑2

如果你发现自己有一个非常大的表,你可以求助于 MySQL 分区,你的模式是完美的。我真的不知道您将如何使用这些表格,但您可以:

按范围划分。按日期组织分区。每个新月左右,您都会有一个新分区。

按键分区。按 Action 组织分区。每个操作都会转到适当的分区。

可以查看more on partitions on MySQL's sitethis article gives you some detail进入微调分区。

关于php - Web 应用程序的 PHP 和 MySQL 统计报告的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3974152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com