2013-07-16 34 views
1

我在共享主機上有一個網站,我期待很多訪問者。我不需要用於閱讀的數據庫(頁面上的所有內容都是用PHP進行硬編碼的),但是我想存儲用戶輸入的數據,因此僅用於寫入。事實上,我只保存這個以便在之後對它進行統計分析(在我的本地計算機上,下載它之後)。INSERT的最佳mysql表結構?

所以我的兩個問題:

  1. 是MySQL的這是一個可行的選擇?它的目的是在共享主機上運行,​​並提供PHP/MySQL,所以我不能真正使用其他很多花哨的軟件包,但是如果例如寫入文件對於這個目的會更好,這也是可能的。據我所知,向文件添加一行對於大文件來說是一個相對複雜的操作。另一方面,100多個用戶同時連接到一個MySQL數據庫可能也是一個巨大的負載,即使它只是爲了做一個廉價的INSERT查詢。

  2. 如果MySQL是一個不錯的選擇,應該如何配置表?目前我有一個InnoDB表,主鍵id自動遞增(當然是存儲數據的列)。這是通用配置,所以可能有更優化的方法,因爲我只需要寫入表格,而不是讀取它?

編輯:我主要擔心網站一發布就會病毒,所以我期望用戶在很短的時間內訪問。當然,我不想因數據庫過載而丟失數據。

+1

只寫數據的**最佳**數據結構不算什麼。次好的應該是一個平面文件......也就是說,如果你真的擔心寫入阻止處理。我想大多數時候,沒關係。 – PaulProgrammer

+0

@PaulProgrammer - 這不就是MySQL BLACKHOLE存儲引擎的用途嗎? :) –

+1

這不是真的只寫,你需要讀它做統計分析。 – Barmar

回答

3

MySQL是一個完全合理的選擇。可能比平面文件好得多,因爲你說你想稍後聚合和分析這些數據。用平面文件做這件事可能需要很長時間,特別是如果文件很大。另外,RDBMS用於聚合和數據集操作。創建報告數據的理想選擇。

除了您現有的行鍵之外,還可以在表中添加所需的任何數據列,以及用於跟蹤用戶的某種標識符。 IP地址是用戶跟蹤的合理選擇,或者魔術cookie值可能有效。這只是一張桌子,你不需要考慮太多。您可能希望在您經常過濾報告的列上添加非聚集索引,例如IP地址,訪問日期等

我主要擔心網站一旦發佈就會病毒,所以我希望用戶在很短的時間內訪問。當然,我不想因數據庫過載而丟失數據。

RDBMS(如MySQL)明確設計用於處理重負載,假設有適當的硬件支持。不要冒汗。

+0

該報告是在我的本地計算機上製作的,所以這不是問題,但是,好的,我會堅持下去。謝謝! :) – user1111929