隨筆-84  評論-56  文章-0  trackbacks-0

          近日, Christoph Rupphighscalability.com上發表了一篇文章,介紹由他創建的分析型嵌入式鍵值數據庫hamsterdb。它用C/C++編寫,是一個速度非常快的輕量級NoSQL數據庫引擎,支持事務、數據庫游標、內存數據庫和遠程網絡訪問,類似谷歌的leveldb和甲骨文的BerkeleyDB


          據作者介紹,hamsterdb并不是細分市場上的一個新晉競爭者。事實上,它已經出現超過9年了。在這段時間里,它發展非常快,其重點已經從單純的鍵值存儲轉向了分析型數據庫,提供類似列式存儲數據庫的功能。

          hamsterdb是單線程、非分布式的,用戶通常直接將它鏈接到他們自己的應用程序中。它提供了獨特的事務實現以及其它獨特的功能,非常適合于分析型工作負載。它可以在本地C/C++中使用,也有面向Erlang、Python、Java、 .NET,甚至是 Ada的綁定。它被用在嵌入式設備和本地應用程序中,也可以為云實例提供緩存和索引服務,已經有數以百萬計的部署。

          hamsterdb有一個獨特的功能,它能識別模式信息。大多數鍵值存儲并不關心鍵的類型,而它支持兩種類型的鍵:二進制鍵和數值鍵。hamsterdb數據庫是BTree索引,既可以存儲在文件中,也可以存儲在內存中。而BTree的實現是它成為分析型數據庫的關鍵。其實現方式非常緊湊,減少了I/O,而且可以更好的利用CPU緩存。

          另外,hamsterdb有與SQL命令COUNT、COUNT DISTINCT、SUM和AVERAGE等價的API,并支持可變長度的鍵,允許鍵重復,以及支持read-committed隔離級別的ACID事務。

          按照Rupp的說法,hamsterdb最強力的特性是可測試性。數據庫的根本——甚至比性能都重要——就是不應該丟失數據。在9年的開發過程中,他不斷地重寫部分代碼或者嘗試新的想法,但高測試覆蓋率給了他自信,認為這些更改不會破壞任何東西。他有大約1800個單元測試和35000個驗收測試,以及一組模擬崩潰的測試,用于測試hamsterdb的可恢復性。這些測試都是高度自動化的。

          Rupp還介紹了hamsterdb的商業版本hamsterdb pro。該版本提供了針對鍵、記錄、日志的重量級壓縮,AES加密,及針對葉節點查找的SIMD優化。還有更多的壓縮算法正在進行或規劃中。

          在文章的最后,Rupp用谷歌的基準測試將hamster 2.1.8與leveldb 1.15作了性能對比。他得出了下面的結論:

          對于隨機讀,hamsterdb性能要好于leveldb。對于隨機寫的情況,只要數據量不是太大,hamsterdb就更快。而從1千萬鍵及以上開始,hamsterdb就會遭受BTree數據庫的傳統問題:大量的非序列性I/O和高磁盤尋道延遲。

          作者認為,這可以很好地說明hamsterdb的分析能力。尤其是,sum和count運算都可以很好地擴展。序列性插入和掃描也是其亮點,不管數據量多大,它都可以非常快。

          有興趣的讀者可以下載查看全部的測試結果,以及從GitHub上下載hamsterdb的源代碼

           

          posted on 2014-08-16 03:01 憶風 閱讀(186) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          以無法為有法;以無限為有限

          點擊這里給我發消息 
          zhdqCN@GMail.com

           

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          相冊

          Blogroll

          參考手冊

          我的其他博客

          我的學習鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 津市市| 察雅县| 宕昌县| 合肥市| 平度市| 大宁县| 华坪县| 吉首市| 塘沽区| 昆山市| 福泉市| 德令哈市| 赣州市| 工布江达县| 高要市| 尉犁县| 天水市| 崇仁县| 龙南县| 阳谷县| 长丰县| 山东省| 建宁县| 张北县| 湖州市| 定边县| 故城县| 美姑县| 金乡县| 巴彦淖尔市| 黔西| 韶山市| 五常市| 昆明市| 漳州市| 和田市| 海兴县| 龙州县| 苗栗县| 汶上县| 南川市|