2011-12-02

NoSQL (II)

主要參考自 IThome
   NoSQL解決資料庫暴量的新方法
   了解NoSQL不可不知的5項觀念  :
   快速認識4類主流NoSQL資料庫  : 這4大類型包括了Key-Value資料庫、記憶體資料庫、圖學資料庫和文件資料庫。

[terms]:
avalanche of data: 雪崩資料(大量資料或瞬間之高流量)
split-brain
map-reduce: 映射 與 化簡
parallel aggregated queries: 平行聚合查詢

about NoSQL

這篇是看了 InfoQ 上的影片: NoSQL誤用和常見陷阱分析(孫立) 後,記錄下的一些摘要:

NoSQL:
1. 有許多個版本,如 TtServer(
Tokyo Cabinet), ....
2. 升級版本之相容性: data format, API interface
3. 精通它


2011-11-10

列表(List)與字典(Dictionary)的比對效能

[問題]
某個 windows service 時常處於 CPU 忙碌、佔據大量記憶體,而且執行速度極慢? (應該說是執行結果跟不上現實需要)

[原因]
幾經測試,原來...,現有的 code 是用上 List().Contains 的方式來比對。
以前沒那麼慢,那是因為要比對的歷史記錄並不多,而累積到現在,赫然發現已有四十七萬多筆了。再加上判斷二千多筆資料是否存在在歷史記錄之中,比對數就用上了 2k * 470k 這種等級。難怪CPU那麼忙,而且要花費許多時間。

[step]
知道原因後,二話不說,直接改寫成 Dictionary,利用 Dictionary 來比對。
結果,執行一次時間由數十秒變成1~2秒,CPU 偶爾上揚一下 -- 表示有在做事。
這... 也不去細究源由了,算是補上一個坑,路更平了。

2011-11-09

消失的時間 -- ASP.Net 呼叫 remoting call

[寫在前面]

(1) 在 IIS 下,aspx 接到 request 後,再以 remoting call 的方式,呼叫一 windows service(主要是在本機上); 而這個 windows service 實做了所有的邏輯,並且會定時(如: 每一分鐘或每五分鐘)從 database 中重新載入資料形成 memory cache;並將結果回傳給 aspx,再由 aspx 組成網頁或字串以回應。
(2) aspx 與 windows service 會記錄各自所消耗的時間。
(3) environment: Windows 2003, .net framework 2.0 sp1.

[問題 & 狀況]
(1) aspx 記錄了呼叫 remoting call 到得到結果的時間,在某些時候,會遠超過 windows service 處理該次的時間。
      而其中,消失的時間那裡去了呢?
      會是因為 thread pool 滿了,而在等待嗎? CPU 太忙所導致嗎?
      但是看起來,系統資源似乎還綽綽有餘啊!
(2) 而這種現象,在流量大(QPS高)時,尤其明顯。
(3) 有些機器很嚴重,但有些機器卻還可以接受。(ps: 機器等級差不多,執行內容都相同。)

2011-11-01

customize setting of new layout/UI (Google plus style) of Google Reader

Google Reader 是我常用的瀏覽資訊服務,它讓我在一個畫面看盡了我有興趣(訂閱RSS)的網站的更新文章,而不用煩惱"不知何時該去巡視一遍網站"、"到底何時有新文章"。

但由於 Google Reader 預設的文字大小、以及版面的設計佔了許多面積,於是在 Firefox 與 Chrome 裡,我都使用了 Stylish 這個擴充元件,並且在 userstyles.org 安裝了一些可以改變 Google Reader 版面的 script code。後來,我也試著自己去修改其中的 code。

但在今天使用 Google Reader 時,Google  Reader 被套用了 Google+ style 產生了新的版面,所以之前的就不合用了。

試著自已修改了一下,還不錯,分享如下:

2011-10-28

MongoDB 小試

今天又測試了 MongoDB,覺得還蠻有趣的,只管新增資料,就可以直接查詢了,毋須留意 table schema。

主要有兩個測試,分列如下:

[Question 1]
     relational database 中的一筆資料有多個欄位,在 MongoDB 中如何達到這種效果呢?

2011-10-27

Starting survey of MongoDB (NoSQL)

最近在研究 NoSQL,先從 MongoDB 開始。
而 NoSQL 那麼多種,為何會選擇 MongoDB 呢? 其實我並沒有比較過,只不過訂閱的 RSS 中似乎 MongoDB 出現的次數較多,印象分數較高的緣故吧!
先從 MongoDB 研究起,也算是對於 name value pair 之非 Relational DB、NoSQL 的初步熟悉吧!

[Steps] as follows:
  1. 下載適合OS的版本: www.mongodb.org/downloads
    我下載的是 win 32 版本。
  2. 解開之目錄下,MongoDB 執行檔在 bin 目錄下: bin\mongod.exe
  3. 直接執行的話,會使用預設的資料庫檔案路徑: c:\data\db,但必須要自行建立目錄。
    也可以啟動時指定到另外目錄,如: mongod --dbpath d:\job2\mongo
  4. 執行 mongo.exe,這是直接下 sql command 來操作 MongoDB 的 console。

受教於對岸年輕CEO的一席話...

剛才有機會聽對岸年輕的執行長講述他們的過程,以及思維。心裡很有感受。
他們不是一開始就成功的,而是從成效不好之產品中試圖去分析,並歸納出原因而且驗證,然後,思考推出下一個改良的產品,或許是不同領域的產品。
再則,分析使用者的習慣,推測接下來幾年的趨勢,而思索要推出什麼樣的產品是使用者搭配現在之後的載具(device)所需要的。並且,思考要串成最終結果的循環之中,環節的每一步是什麼,如何打通。

讓我感受較深的是: 執行後的檢討是那麼的實際,有數據佐證,得出的結論也讓我這個外人聽
起來覺得蠻正確的。可以看出,檢討、蒐集那些數據、大量數據、分析,到最後的歸納結論,再到決策,那種緊咬不放棄的心思呼之欲出,縝密的分析歸納支持著產品的方向與設計。這些都不是兩三天的空思想法。
而且,他很坦白、無顧忌的分享!

佩服! 受教了!

- 思索。
  有別於一般性的尋思,而是針對現況之不如預期,搜索、挖掘原因在那,有沒有方式可以驗證推測的原因,明確後確定下一個目標。

- 紮實。
  每一個產品或專案,實做上是有實效的。因為,可能是檢討之後,下一個改良產品的基石基礎。

- 站在客戶的角度。
  產品設計、實做、銷售、說明,不是只從工程師的角度來出發,不是以工程師的語言來描述解說。而是從使用者、從客戶的觀點、視角(view)來看。

- 化繁為簡。
  複雜&功能強大的系統,在客戶面前,也都能在三言兩語之間就可以上手。

2011-10-06

MultiFox add-on in Firefox (同時使用不同的 firefox user profile)

為何會想要使用這個套件呢?
主要還是因為多帳號使用 Google 服務的關係。
Google 許多服務已經提供了切換不同帳號的功能,如 gmail, google search... 等。但是,還有目前有一些服務並沒有提供這個功能,而仍只使用預設帳號來開啟,如 google doc, blogger... 等。

譬如: 有兩個 gmail 帳號,分別為工作用與私人用。當預設帳號是工作用時,私人 gmail 信件仍是可以看的;但是如果要開啟像 doc, ppt 的附檔時,這時 google 會以預設的工作帳號來打開,就出現類似權限不足的情形了。

而 firefox (v6, v7, v9)並不像 Chrome 一樣,firefox 不允許同時開啟一般 firefox 與 private browsing firefox。因此,Multifox 剛好符合我的作業情境,而用使用起來還相當地順手。

以下是兩個說明網頁,重灌狂人這篇是比較久遠的,原理相同,但Multifox已然改版了。電腦玩物這篇是現在的版本,不過我看完後仍不太容易了解Multifox如何使用。

重灌狂人: Multifox 用不同帳號同時登入網站
電腦玩物: Multifox 2 簡單讓Firefox 4每個分頁使用不同帳號登入同一網站

<實做>
自己下載安裝、重啟 FireFox 後,只須將 gmail 重新登出再登入一次。MultiFox 會記住這個網站目前登入的帳號。再開啟另一視窗;另一分頁應該也可以,不過,分開的好處是切分工作用與私人用的 browser。新的 FireFox 視窗再到 MultiFox 在位址列(Address Bar)的 icon 上->按右鍵->選 Add Account,然後再登入另一個 gmail 帳號,這樣子就完成囉!



MultiFox 應該做到了在同一個 firefox process 下,可以以分頁方式使用不同的 user profile,這樣子就可以達到不共用 cookie,而也能全方面使用多個 google 帳號下的服務,而不互相干擾了。

推薦 MultiFox in Firefox!!

ps: 我的 Firefox 版本是: Aurora 9.0a2