轉帖|其它|編輯:郝浩|2011-09-07 14:36:50.000|閱讀 400 次
概述:寫這一篇內容的原因是MySQL5.6.2突然推出了memcached的功能。NoSQL to InnoDB with Memcached的出現,可以看出NoSQL對關系數據庫的確產生了巨大的影響,個人覺得這是一個非常大的進步,可以讓開發人員更加方便的使用 NoSQL和關系數據庫。NoSQL一般被認為性能高于關系數據庫,那么直接在InnoDB之上提供NoSQL功能并和MySQL共存是否是一個更好的選 擇呢?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
寫這一篇內容的原因是MySQL5.6.2突然推出了memcached的功能。NoSQL to InnoDB with Memcached的出現,可以看出NoSQL對關系數據庫的確產生了巨大的影響,個人覺得這是一個非常大的進步,可以讓開發人員更加方便的使用 NoSQL和關系數據庫。NoSQL一般被認為性能高于關系數據庫,那么直接在InnoDB之上提供NoSQL功能并和MySQL共存是否是一個更好的選 擇呢?
MySQL with HandlerSocket
去年在twitter上看到HandlerSocket的出現,并宣稱性能是Memcached的兩倍時,非常令人吃驚,居然可以達到 750000qps。接著HandlerSocket成為NoSQL領域談論的焦點之一, 大量的人開始想要嘗試,并做過一些自己的性能測試。 下圖是HandlerSocket的結構圖:
圖1 HandlerSocket結構圖(來源于官方)
HandlerSocket的出現,給我們眼前一亮的感覺。原來InnoDB的性能已經足夠好,并可以直接提供NoSQL的功能。最大的好處就是可以共享MySQL的功能,DBA以前的經驗一樣可以用。但是有些小小的風險:
InnoDB with Memcached
也許是因為HandlerSocket的火爆的沖擊,也許是受HandlerSocket的啟發,MySQL開始關注NoSQL領域的應用,并在MySQL5.6.2版本增加了通過Memcached協議直接訪問原生Innodb API的功能。
InnoDB with Memcached是在提供MySQL服務的同一進程中提供Memcached服務 ,這與HandlerSocket的架構模式幾乎是一樣的。雖然目前InnoDB with Memcached還是預覽版本,但是我個人更看好它,因為:
注意:目前通過memcached的更新操作不會記錄到binlog中,未來的版本會支持。
圖二 InnoDB with Memcached
Memcached and MySQL Cluster
顯而易見,我們會想到MySQL Cluster結合Memcached是一個更好的組合,MySQL Cluster提供了99.999%高可用性,并真正提供了去中心化的無縫高可擴展性。還有什么比這更人興奮的呢。
MySQL已經提供了這樣的功能,源代碼在。這里有一個O'Reilly MySql Conference大會的PPT演示,你也可以看下這個功能開發者的。
圖三 NDB with Memcached
MySQL Cluster雖然具有高可靠性和無縫擴展的優勢,但是對于復雜SQL查詢的效率卻不能令人滿意。不過對于僅僅依賴于key-value查詢和寫入的海量數據存儲需求,MySQL Cluster with Memcached應該是個很好的選擇。
總結
Memcached協議由于其簡單、協議輕量、存在大量的client,所以提供兼容Memcached協議的產品比較占據先天的優勢。
MySQL提供NoSQL的功能,個人覺得并不是MySQL耐不住寂寞,而是的確在響應用戶的需求。我前面的文章也說過,NoSQL只是一個概 念,并不是一個數據庫 產品,MySQL也可以是NoSQL,現在也正應了這句話。NoSQL從架構上就約束了開發者的架構和開發方式,從而提高擴展性和性能,而NoSQL和 MySQL的融合,也同時提供了復雜查詢功能。
雖然MySQL提供了NoSQL功能,如果你要嘗試的話,你的數據庫設計必須從NoSQL從發,然后再考慮SQL查詢功能。
SQL與NoSQL的融合的確會給開發者帶來方便,比如最近很流行的Mongodb,它吸引開發最大的點就是支持簡單的關系查詢。SQL與NoSQL的融合可能是未來很多數據庫產品的一個趨勢。但是純NoSQL數據庫的優勢也是顯著的,就是他的簡單、高效、易擴展。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園