Home » Computer » Software » Archive by category "Database" (Page 45)

The 2008 MySQL Conference & Expo

幾個比較大的消息:

  • () 釋出 1.0 (for 5.1),可以取代內建的 InnoDB engine,比起之前的版本多了兩個大重點:Fast Index 與 Compression。
  • 是一個結合硬體,在尚未使用到 SSD 硬碟的情況下就成為全世界最快的 transaction engine 之一 (依據 測試結果)。

其他比較小的消息還包括了 MySQL 6.0、MySQL 5.1 Maria 之類的新聞,不過上面這兩個消息丟出來就讓人感覺很兇暴,其他的新聞就... (Kickfire 的 C/P 表現相當漂亮,在 100GB 的地方徹底殲滅 )

OSDC.TW 2008 第一天

2008 第一天我是中午才到的。在技術方面,大多數的題目都已經在網路上看過資料研究過,沒有什麼特別的感想,不過可以感覺到有些講者可能因為經驗與時間的關係,有些重要的地方都沒講清楚。

先是我們自己家介紹的 Berkeley DB, 沒有提到為何要避免使用 LEFT JOIN 的原因,然後在測試的部份數據也少說明了很多東西。

另外 Vivek Ratan 講 的部份,有些地方沒有講清楚,像是要怎麼因應 Namenode 故障時的處理 (在「」這邊的說明可以參考)。另外我回來查了以後發現跑 Hadoop 後,所需要的時間變成原來的 66%,而不是效率變成原來的 66%,所以我在台下問了一個笨問題...

第一天結束後倒是到樓下的咖啡廳聊了很久,儘講些有的沒的...

Google App Engine

幾天前就一直有消息, 打算要把 的服務拿出來給大家用。結果拿出來的餅比預期的更大,直接幫你 Hosting 整個服務:

Google App Engine 目前以 為語言 (更仔細的說,是以 為參考的標準,所以有用過 Django 的人會蠻熟悉的),後端則是以 與 BigTable 支撐整個系統。Hosting 的服務以 appspot.com 這個獨立域名避免 Cookie 與 XSS 安全性的問題,看起來是呼應 blogspot.com。

昨天一睡醒看到有一萬個人的註冊限制,就先丟進去註冊,出門到公司就發現已經申請到了。

另外,這個系統有一些限制:500MB storage、200M CPU cycle/day、10GB bandwidth/day,這個量對於自己玩看起來是沒什麼問題,等到收費後要看看價錢到底如何。

在開始玩之前,看看 可以知道 BigTable 可以做到的事情,其實還蠻有趣的,像是不支援「!=」... XD

Update:在「」這篇裡面有後台的畫面,可以看到相當多資訊!

參考:

Zend_Db 的例外處理

照 Manual 所列出來的功能, 似乎沒有提供 的功能,所以就得自己做了。

正常的作法是自己寫 SQL query 處理,但我想到的方法就是先 ->insert(),如果失敗再 ->update()。拆開來的這兩個動作會使得 多花不少 CPU resource,但我暫時不想自己寫 SQL Query (主要是因為嫌 escape 麻煩),先放個 XXX 等以後再 tune。

問題在 ->insert() 後如果遇到 Duplicate 會丟出 Exception,用 try-catch 的方法我不是很喜歡,但稍微翻過 Zend_Db 的 code,似乎沒辦法改成 return status,所以就只好用 try-catch 處理。這應該是跟底層的 有關,Zend_Db 只是在中間的介面。

如果還有遇到其他問題就繼續寫...

Zend_Db 的參數 (與 Zend_Config、Zend_Json)

::factory() 可以吃兩種語法,第一種是用兩個參數指定所有的資訊,像這樣:

$params = array('host' => 'localhost', 'username' => 'my_username', 'password' => 'my_password', 'dbname' => 'my_database');

$db = Zend_Db::factory('pdo_mysql', $params);

第二種是吃一個參數, (或者繼承他的 class):

$conf = Zend_Config_Ini('filename.ini');
$db = Zend_Db::factory($conf);

如果想把資料庫設定放在檔案裡,再用 Zend_Config 讀進來傳給 Zend_Db,目前官方有 兩種方法,不過這兩種方法我都不喜歡,用 找 "Zend_Config_Yaml",沒有什麼人在研究這個 (在是有看到一份,不過沒看到其他人用的心得)。

於是退而求其次,用 讀進來後用第一種方式傳進去。

Zend Framework 的 Zend_Db

這個週末都在研究 的用法,然後套用到新的系統上。

的三個架構裡,Controller 透過 .htaccess 配合,效果還算可以。View 目前是用 ,不過會看情況改用 或是 ,基本上都沒什麼問題。

最大的問題在於 Model: 的功能看起來很多 (在說明文件的份量裡,算是相當厚的一個模組),但實際上有不少缺陷沒辦法光靠 Zend_Db 目前內附的模組解決,需要自己寫 Adapter 處理。在沒時間研究 Zend_Db 的 Adapter 怎麼寫的情況下,只能先把他當作非常小的 使用。

Zend_Db 主要的兩個問題是:Master-Slave 時讀寫必須分開,以及多台時 Failover 及 Load sharing 的處理。雖然這兩個問題都可以用 解決,但我不是很喜歡 MySQL Proxy 的解法,所以...

Anyway,目前該解決的都解決掉了,如果有遇到其他的模組不好用,我再寫文章抱怨好了... XD

Mtron SSD 硬碟

昨天 Mtron SSD 硬碟 3.5" 32GB*2 終於到了,上線後測試發現與之前的 SSD 硬碟完全不同,以 MySQL 的啟動時效率來看,足以殲滅 15KRPM SCSI*4 (RAID10)。(剛啟動時因為 key buffer 還沒有 cache,會需要一段時間速度才會慢慢上來,在 15KRPM 的 RAID10 SCSI 上需要幾分鐘,但 Mtron SSD 幾乎不需要 slow start)

其他的就不多說了,目前是 jnlin 在測試,請參考他寫的「Mtron SSD 在 MySQL (MyISAM) 上跑了兩個小時」這篇,之後應該會有一些數據可以看。目前已經是卡在 CPU bound 了,接下來要期待 Jeff Roberson 對於 FreeBSD 上 pthread_rwlock 的改善。

Ref:「MySQL 在創見 SSD 上跑的情況

一些雜記

如果 bug 愈找愈久,代表那個 bug 一定很笨 XD

像是今天一整天跟 ronnywang 在找一個 Zend_Db 會爛掉的 bug,最後發現是因為 PDO_MYSQL 沒裝... XD

愈來愈多關節打通了,接下來就來衝吧...

Archives