換了新的單位我現在也從oracle從業者變成了mysql從業者,當然放棄oracle的原因主要是因為在新單位可以盡量少的寫代碼了。
現在我面對的是一個資料倉儲,和上一家公司一樣,資料倉儲最讓我們技術人員受不鳥的是資料量太大,儲存,I/O,效率都讓人想死,每次有些統計分析要求,在清單表裡查詢簡直是讓我等到花兒都謝了。那麼會有什麼好的辦法呢?我想這個問題提出來會有很多人告訴我用hadoop。是的,hadoop是現在最流行的大資料解決方案,但是hadoop有一個問題,就是我們小組現在沒有人會,還需要很長的時間去學習,去搭建,而且我也不願意輕易放棄傳統的關係型資料庫,說真的我連Mango都很抵制。
我想起來以前在單位的時候有人推薦給我們用Greenplum,據我搜尋到的資料顯示,Greenplum速度很快,而且是基於PostgreSQL的,本來就是關係型資料庫,學習起來沒有什麼壓力,但是商業授權是要錢的,我們現在可沒辦法申請經費,於是作罷。
我自然而然的就想到了列式資料庫SybaseIQ,當然也是要錢的,不過mySQL的Infobright引擎不要錢,起碼社區版本不要錢。這就是外掛程式式資料庫的好處,總有一款引擎適合你。社區版的Infobright不支援DML,但是對於我測試來說沒什麼,以後上生產了也沒什麼,因為每天才導一次資料,loaddata完全能hold住。
在這裡http://www.infobright.org/,看到org我就舒服,肯定不要錢。關於安裝,這個東西下載好以後直接安裝,不需要安裝mySQL,因為它內建了一個。貌似內建的這個除了infobright之外只支援MyISAM和Memory引擎,但是這都不是問題,需要InnoDB可以另外下載一個mySQL用。linux版本的安裝可能稍微複雜點,網上能搜尋到的都是基於一個叫張宴的人寫的複製的,我沒測試也就沒有發言權。我用的是windows版本的,一路下一步就可以了,安裝好之後只需要改動它的設定檔my-ib.ini就可以了,裡面寫的很明白。
下面說說測試結果,我是在單位機器上測試的,根據單位的保密原則,我沒辦法把帶回來。但是通過我三天的簡單測試,在我的PC上(i5處理器,2G記憶體,WindowsXP SP2, 500G硬碟(7200rpm))。用loaddata匯入2G的資料大概需要2分鐘;一個1億條資料的表,自己關聯自己查詢count(*),也不過就是2分鐘。效能相當彪悍。如果把這個資料庫測試拿到Pc伺服器上去做,估計效果會讓人眼前一亮。
如果需要看比較科學的測試,可以參考這個網站:http://www.actionsky.com/infobright/styles/performance/default.html。這個好像是infobright在國內的代理。
下面說點閑話。在上一家公司的時候,我做的最多的事情就是最佳化SQL,我之前也在oracle的架構下作了好多事情,但是隨著資料量的暴增,就算再怎麼最佳化,IO也是個瓶頸,索引也就沒什麼用了,我感到了無助。當時我想是不是真的關係型資料庫要完蛋了,以後就是mongo這些noSQL的天下了?這幾天測試之後我發現noSQL取代關係型資料庫還是需要一段時間的。在weibo這種需要即時相應的系統裡,可能noSQL會很吃香,但是在資料倉儲領域,我想以列式資料庫為代表的關係型資料會大放異彩,現在比較主流的大家可以去看看:SybaseIQ,這可能是最早的列式資料庫了;南大通用的GBase,國貨精品;Infobright,開源的,如果有能力,可以自己改了。順便提一句,上面說到了Greenplum很快,但是Greenplum是在PostgreSQL之上構建的,pg是開源的,如果公司實力強大,甚至可以做一個不亞於gp效能的資料庫,我希望以後能用上國產的。