跳到主要內容

發表文章

目前顯示的是 5月, 2012的文章

影像紀錄區 紀錄一下這段時間發生的一些事情與未來的方向

五月份幾乎都在建構 影像紀錄區 功能,雖然主要上傳照片的功能在網站上線之後就沒什麼變更了,但整個網站的效能與使用者操作一直不斷的調整、測試。所以紀錄一下這段時間發生的一些事情與未來的方向,當作五月最後的結尾! MongoDB 這次影像紀錄區用的資料庫是 MongoDB,也是我第一次實際應用在網站上,因為影像紀錄區 2008 年版本 有使用過 MySQL 的經驗,所以這次在檢視 MongoDB 時,有特別注意看是否能把需要的資料庫資料檢索出來。MongoDB 有一張 MySQL 對照表 ,基本上都可以對映過去。而且比較喜歡像 MongoDB 這類 NoSQL Free-schema 的特性,這樣隨意擴充的彈性有時真的對於初期開發還滿快速的。像影像紀錄區的例子,只要關注 postid 與 userid 這唯一(key)的辨識資料,其他就可以隨意的擴充出新的資料內容。 MongoDB Master-Slaves 通常會用到 Master-Slaves 是因為網站上可能需要大量的讀寫,所以才需要建構 Slaves(只能讀) 分擔 Master(寫/讀) 的讀取。不過影像紀錄區目前還沒有這樣的需求,即使一台 Master 就可以應付了,但是 Master-Slaves 除了分擔 Master 以外,還可以當作備份來使用。所以我想說還是要做備份的話,那就實作看看 MongoDB 的 Master-Slaves 。網站上有教學,也有範例在 Master 死掉如何用 Slaves 恢復,所以我就建構了兩個 Slaves 來當作分擔與備份。老實說就回應的速度有提升。 不過剛上線的時候遇到了 Data inconsistency 的問題,不確定是我設計的問題還是如何,像是 MongoDB 沒有 auto increment 的功能,所以必須額外儲存 value,透過 +1、取得、存入的方式手動,這中間一定會發生問題,所以在後端程式在寫的時候我儘量把所有要寫入的資料備齊之後,才呼叫這流程。另外之前也忘記 Slaves 也會有 sync delay 的問題,所以在執行這個流程時指定只向 Master 取值,要不然會出事。但目前我還是覺得用 increment value 是個錯誤,因為就直接用 uuid 來產生 uni key,再要不然就是直接用 Mon

MongoDB Master/Slave with pymongo

前幾天把 影像紀錄區 的 MongoDB 加入 Master/Slave 機制,目前是 Master + 2 x Slaves,但我非常的白痴,以為這樣設定建立好之後就沒事了,也以為網站效能會提升之類的,當我在看系統資源監控的時候發現兩個 Slaves 的使用率好低好低,低到好像沒有在運作一般。 沒錯,在 MongoDB 設定完之後,Python 驅動 MongoDB 的 pymongo 要使用 MasterSlaveConnection 指定誰是 Master、Slaves,這樣才真的可以讓這機制產生效用。 就這麼簡單設定完成!影像紀錄區有明顯的感覺到資料讀取速度有比較快了!MongoDB 的文件提到如果發生意外,怎樣 對調 Master 與 Slave,只是看著看著笑出來了,因為寫的好詳細 XD 至於 MongoDB 另外一個與資料庫分佈有關的 sharding ,我想目前應該是實作不到,一方面影像紀錄區的資料量沒這麼多,另一方面是我也沒多的機器來操作,不過我倒是有想到 grs 要不要來建一個各股歷史資料庫,把證交所的資料倒進來,好像也可以齁!

義守大學攝影社影像紀錄區 重新開張

大約在4月底的時候與學長聊天,聊到以前攝影社的影像紀錄區,可以讓社員上傳作品的平台,那時候我們就是以這項強大的網站服務來吸收社員,所以只要入社就有帳號可以使用。 距離事件發生也過了3年了,2009 年 莫拉克颱風 的關係,把原本架在財金系的攝影社網站給摧毀掉了,之後也找不到合適的 主機 架站,就這樣一直延盪到最近。 前陣子作完 grs 的網站後,發現一些東西在做網站的時候可以迅速建立,所以就乾脆以現在比較拿手的 Python 來重寫一個 影像紀錄區 。大約花了一個禮拜的時間,網站就上線了!基本的架構用到:Python + Flask + uWSGI + nginx + MongoDB,另外社員上傳後的圖片是丟到 amazon S3 服務,現在大家都愛談雲端,那就來實作這部份,圖片都丟到雲上面去! 另外就是 MongoDB 的部份,之前 grs 都沒有使用到資料庫,而我又不是很想用 MySQL ,所以就決定來實作 NoSQL 資料庫的應用,於是就選擇 MongoDB 當作底層的資料庫系統。雖然剛開始用的時候還是會有之前用 MySQL 影響在,但後來使用 MongoDB 就會發現 NoSQL 資料庫的優點,很適合這小小的網站來使用。 這幾天也加入 Facebook、twitter 的連結,當社員發佈作品的時候,也會同步到這兩個社群服務,希望這樣可以增加曝光率,讓更多人來看我們分享的作品。現在網站是上線了,但有些功能還沒有寫完,只能慢慢調整、慢慢補,反正功能寫的差不多就上線,看大家使用的怎樣在調整修改,這樣比較好,要不然會有盲點。 不過我在思考一件事情,之後要開放給大家使用嗎?或許可以變成一個攝影同好交流的平台也不錯!