gpt4 book ai didi

mysql - 数据抓取/仓库应用程序的数据库设计建议?

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:07 25 4
gpt4 key购买 nike

我正在研究数据仓库类项目的数据库设计,该项目每天涉及大量插入。数据存档将进一步用于生成报告。我将有一个用户列表(例如用户一套 200 万),为此我需要监控与它们相关的日常社交网络事件。

例如,假设有一组 100 个用户说 U1,U2,...,U100

我需要将他们的每日状态计数插入我的数据库。

考虑用户 U1 在 6 月 30 日至 7 月 6 日期间获得的总状态计数如下

June 30 - 99
July 1 - 100
July 2 - 102
July 3 - 102
July 4 - 105
July 5 - 105
July 6 - 107

数据库应该保留每个用户的每日状态计数,比如

对于用户U1,

July 1- 1 (100-99)
July 2- 2 (102-100)
July 3- 0 (102-102)
July 4- 3 (105-102)
July 5- 0 (105-105)
July 6- 2 (107-105)

类似地,数据库应该保存所有用户的存档详细信息。

在稍后阶段,我设想从这些数据中提取汇总报告,例如每天、每周、每月等的总得分;并将其与旧数据进行比较。

我需要从头开始。我对 PHP 作为服务器端脚本和 MySQL 很有经验。我在数据库方面感到困惑?由于我每天需要处理大约 100 万个插入,所以应该处理哪些所有事情?

我对如何在这方面设计 MySQL 数据库感到困惑?在我的脑海中牢记要使用的存储引擎和要遵循的设计模式,以后可以通过聚合函数有效地使用数据。

目前我设想的数据库设计是用一个表存储所有用户 ID,每个表都有外键和单独的状态计数表。很多表会产生一些开销吗?

MySQL 是否符合我的要求?每天进行 200 万次或更多的数据库操作。在这种情况下如何考虑服务器和其他因素。

1) 数据库应处理并发插入,每天应支持 1-2 百万次插入。

在插入之前,我建议计算每日状态计数,即今天与昨天的差异。

2) 在后期阶段,将归档数据(过去几天收集的)用作数据仓库,并对其执行聚合任务。

评论:

我读过 MyISAM 是数据仓库项目的最佳选择,同时听说 INNODB 在很多方面都非常出色。许多人建议适当调整以完成它,我也想了解一下。

最佳答案

创建数据仓库时,您不必担心规范化问题。您正在插入行和读取行。

我只想要一张这样的 table 。

Status Count
------------
User id
Date
Count

主(集群)键是(用户 ID、日期)。另一个唯一索引是(日期、用户 ID)。

至于 MySQL 是否可以处理这个数据仓库,这取决于 MySQL 运行的硬件。

由于您不需要引用完整性,我将使用 MyISAM 作为引擎。

关于mysql - 数据抓取/仓库应用程序的数据库设计建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032294/

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