簡體   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