2011-09-19 85 views
3

我正在評估用於存儲鍵/值對(針對部分應用程序)的nosql存儲,並且遇到了percona,它提供了mysql世界中的本機鍵/值。這似乎是一個很好的解決方案,因爲它允許存儲保留在一個地方(因爲其餘的功能存在於mysql中,並將繼續保持原樣)。與其他關鍵/價值商店如cassandra相比,還有其他優勢嗎?有什麼缺點?percona nosql vs其他nosql

回答

8

您指的是HandlerSocket接口,該接口繞過了SQL查詢層,並允許您通過主鍵在單個InnoDB表中獲取和存儲行。這個想法是,避免SQL的開銷允許應用程序運行更高的QPS速率。

HandlerSocket顯示了承諾,但到目前爲止,我們發現(我爲Percona工作)的瓶頸是匆忙編寫的客戶端界面。也就是說,PHP,Ruby等客戶端API在其當前的實現狀態中具有這樣的開銷,即HandlerSocket不會比爲INSERT和SELECT編寫簡單的SQL語句更快。 InnoDB已經爲主鍵訪問進行了優化,因爲這些表實際上是通過主鍵存儲爲聚簇索引的。

爲HandlerSocket客戶端庫編寫優化代碼的未來發展應該會隨着時間的推移而改進。如果你想幫助這個過程,參與開源項目來開發這些客戶端庫。

HandlerSocket的另一個缺點是AFAIK,它不支持就地增加值,這是一些其他鍵/值存儲提供的優化。使用HandlerSocket,你必須獲取值,讀取它,增加它,然後將其發回數據庫。這引入了競爭條件,所以你必須以某種方式鎖定該行。