繁体   English   中英

PHP / MYSQL - 如何为 25,000 个用户构建日志数据库

[英]PHP / MYSQL - how to structure a log database for 25,000 users

我正在与分布在公司 5 个部门的大约 25,000 名用户(员工)打交道。

对于所有这些用户,目前正在使用 MS Excel 电子表格。 该电子表格由大约 35 列组成,记录了员工的日常活动。

每行是 1 个活动,平均每天大约有 3 个活动(永无止境,这意味着日志只会不断增长)。

我的问题:

我想建立一个数据库(PHP/MYSQL)来保存这些用户的活动日志,而不是 MS Excel 文件。

  1. 我是否应该为每个用户创建一个包含 35 列的表...导致一个包含 25,000 个表的数据库?

  2. 或者我应该将活动存储到一个 35 大小的数组中,将其转换为二进制并将其存储在一个 blob 中并每年构建一个这样的表......导致每年 1 个表有 25,000 行?

Employee
------------
employeeID
employee_name

Day
------------
dayID
day

Activity
-------------
activityID
activity_name
dayID
employeeID

这样您就可以查看一天的活动 您可以查看员工的活动 可以查看员工在特定日期的活动

如果您实际上在每个活动中使用许多/大部分这些字段,我会使用 35 列表。

CREATE TABLE users (
    uid    INT,
    name   VARCHAR(255),
    ...
);

CREATE TABLE activities (
    uid    INT, // references users.uid
    type   VARCHAR(32),
    date   DATE,
    ... // The 35 activity-related columns
);

然后我会按时分区。 如果搜索性能很重要,则可能是每年(这意味着每个表最多大约 2740 万行),或者每月(每个表大约 220 万行),并且每年的表太大而无法获得良好的性能.

根据经验,您不想为每个用户创建一个表。 就此而言,您希望有 1 个表users ,您将在其中存储仅与用户 model 相关的 ID、名称等。 然后有一个单独的表将记录用户的日常活动,其中user_id列作为users表中用户行的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM