[c#]BPlusTreePrototype – B+樹的C#實現

來源:互聯網
上載者:User

       這裡貼一個C#版的B+樹實現,大家首先可以不用太去關注演算法本身(演算法本身我也不是本人所寫,大家如果關心演算法,可以先去瞭解一下B+樹的原理,然後再去看裡面相關代碼),可以把它認為是一個高效的持久hashtable(用本地檔案方式持久,基於效率考慮,最好不好每次put的時候都commit,由於檔案寫入有buffer,如果程式/伺服器突然shutdown,有可能沖壞檔案,這點大家在實際應用中自行考慮;由於我之前的應用為一個windows服務,忽略了伺服器突然shutdown的情況,只是在服務stop的時候去commit)。這個Prototype是我在遇到一個key-value問題時候,壓力測試的雛形,之後為了一些應用的方便做過一些修改,這裡貼的基本上是當時最原始的版本,大家可以根據自己的需要在此基礎上修改。

Features:
1)基於本地檔案方式持久;
2)支援多種key的方式:string、int、object,如果需要擴充大家可自行實現ITreeIndex;

Demo應用背景:
之前一個項目中,碰到一個簡訊內容去重問題,由於業務上無法控制,只能從邏輯層面去處理;最早別人的做法是在資料庫中建一張表,把手機號碼和簡訊內容兩個欄位建立成符合主鍵,每次驗證通過insert是否成功去判斷是否重複,後來隨著資料量的不斷增大,這種處理方式成為一個很大瓶頸。後來我再考慮如何最佳化時,看到之前的處理的實質就是利用資料庫主鍵的唯一性來處理,於是想到很多資料庫主鍵唯一性的實現原理,其實都用到B+數演算法,於是提出如下改進方案:將手機號+簡訊內容md5加密做為key,然後維護一棵B+樹去處理;

代碼結構:

代碼:

http://download.csdn.net/detail/camelials/5067217

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.