寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被認為效能高於關聯式資料庫,那麼直接在innodb之上提供nosql功能並和mysql共存是否是乙個更好的選擇呢?
去年在twitter上看到handlersocket的出現,並宣稱效能是memcached的兩倍時,非常令人吃驚,居然可以達到750000qps。接著handlersocket成為nosql領域談論的焦點之一, 大量的人開始想要嘗試,並做過一些自己的效能測試。 下圖是handlersocket的結構圖:
圖1 handlersocket結構圖(**於官方)
handlersocket的出現,給我們眼前一亮的感覺。原來innodb的效能已經足夠好,並可以直接提供nosql的功能。最大的好處就是可以共享mysql的功能,dba以前的經驗一樣可以用。但是有些小小的風險:
也許是因為handlersocket的火爆的衝擊,也許是受handlersocket的啟發,mysql開始關注nosql領域的應用,並在mysql5.6.2版本增加了通過memcached協議直接訪問原生innodb api的功能。
innodb with memcached是在提供mysql服務的同一程序中提供memcached服務 ,這與handlersocket的架構模式幾乎是一樣的。雖然目前innodb with memcached還是預覽版本,但是我個人更看好它,因為:
注意:目前通過memcached的更新操作不會記錄到binlog中,未來的版本會支援。
圖二 innodb with memcached
顯而易見,我們會想到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資料庫的優勢也是顯著的,就是他的簡單、高效、易擴充套件。
tokyocabinet的table支援
schema-free vs nosql
mysql cluster - nosql access with some sql
nosql微群
關於作者
分類:
nosql
標籤:
nosql mysql memcached
MySQL與NoSQL SQL與NoSQL的融合
寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached 的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被...
MySQL與NoSQL SQL與NoSQL的融合
寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被認...
mysql與安全 mysql許可權與安全
一 mysql許可權系統通過兩個階段進行認證 a 對使用者進行身份認證,ip位址和使用者名稱聯合,b 對合法使用者賦予相應許可權,許可權表在資料庫啟動的時候載入記憶體中。二 在許可權的訪問過程中,會用到 mysql 資料庫中的user host和db這3個許可權表。兩階段驗證過程 a user表中 ...