計數器新版本開發計畫

兩年前我寫了一個計數器:SiteStates 來玩,一直都還算相安無事,不過最近因為我自己伺服器主機虛擬化的問題,以及日漸龐大的資料量,我不得不正式著手解決資料庫的問題。

之前儲存使用者的到訪紀錄,是採用一個 row 直接存取,把到訪紀錄(ip, time, 反解)存成一個二維 array ,將之 serialize 之後存入一個 text 欄位,要取用的時候,先取出該欄位,再 unserialize 、刪掉最頂端元素、插入最底端元素,並且控制陣列大小維持在 500 個元素。

這樣的作法在小站其實沒什麼大問題,也可以簡化某些程序,在程式上也還算方便取出資料(最少我不需要 join table),但缺點就是當資料量很龐大時,一但在寫入時當機那筆資料就沒了。而且這種作法,反而比對資料表做正規化還要佔空間。

現在新的作法是:

把 user 的資料單獨儲存在一個 table 叫做 users 。
把 user 擁有的 url 單獨儲存在一個 table 叫做 users_url,每個 user 可以擁有多組 url ,當然,每一組 url 可以單獨設定自己的計數器顏色、底色、邊框顏色、以及顯示模式(背景透明死否、邊框顯示與否、顯示資訊多寡)。
把所有到訪紀錄單獨存在一個 table 叫做 users_url_history ,使用 url_id 和 users_url 關聯,如此就可以知道每個 url 的個別到訪紀錄,資料筆數也沒有上限,一次新增也只需要動用一筆資料(刪除異同),這樣也大大降低了弄丟資料的風險。

目前正在撰寫中,等到上線的時候,使用者必須先進行「網址轉換帳號」的動作,才能繼續使用服務(我會把整個程序設計得非常簡單,花不了五分鐘!)

最近上班工作忙碌,改寫這個系統又得花不少精神,如果有 bug 或是設計不好的地方還請大家多多見諒。

Posted in computers
5 comments on “計數器新版本開發計畫
  1. kenny says:

    最近偶而有發現連不上計數器,請問是我被擋了還是服務掛點了呢?我網站在Blogger
    謝謝。

  2. Annie says:

    原來是系統不穩,我以為服務掛點了….
    等待恢復ing
    版大辛苦了^^

    • roga says:

      抱歉有點不穩定 (因為只有一台 Server 而已,加上是免費服務,頻寬和硬體維護方面都是我的薪水在撐,所以請多多見諒) 😀

Leave a Reply

Your email address will not be published.