Kyoto Cabinet

Kyoto Cabinet是一個具有可以儲存key-value記錄,也可以根據key來獲取和刪除記錄的資料庫管理的 lib。

簡介,特點,

簡介

Kyoto Cabinet是一個資料庫管理的 lib,是 Tokyo Cabinet 的改進版本。資料庫是一個簡單的包含記錄的數據檔案,每個記錄是一個鍵值對(key/value),key和value都是變長的位元組序列。key和 value既可以是二進制的,也可以是文本字元串。資料庫中的key必須唯一。資料庫既沒有表的概念,也不存在數據類型。所有的記錄被組織為hash表或 B+樹。

特點

在資料庫中,可以儲存key-value記錄,也可以根據key來獲取和刪除記錄。還可以遍歷訪問所有的key。這些方法類似於UNIX標準中的DBM庫(及後來的NDBM和GDBM)。因為KC的高性能,可以作為DBM的替代品。
Hash 資料庫 的每個操作的時間複雜度是 O(1),因此理論上,性能是常量而與資料庫的規模無關。在實踐中,性能由記憶體或存儲設備的速度決定。如果資料庫的大小小於記憶體大小,性能表現為記憶體的速 度,比STL中的std::map要快。當然資料庫大小可以大於記憶體大小,最大上限是8EB(1024×1024×1024GB)。即使在這樣的情況下, 每個操作也只需要一兩個存儲設備的seek操作。
B+ tree 資料庫的每個操作的時間複雜度是 O(log N)。因此理論上,性能是資料庫規模的對數。儘管B+ tree 資料庫的隨機訪問性能要慢於 hash資料庫,但B+ tree資料庫支持對 key 順序的連續訪問,這可以實現對字元串的前向匹配查找和整數的範圍查找。連續訪問的性能遠快於隨機訪問。
API是基於面向對象設計的,hash資料庫和B+ tree資料庫都有從同一個超類繼承而來的同樣的方法。除了他們,還有7種資料庫也繼承了同樣的超類。prototype hash 資料庫採用標準容器 std::unordered_map 實現,prototype tree 資料庫採用標準容器 std::map 實現,stash 資料庫是採用naive hash map的原始實現來節省記憶體,cache hash 資料庫是採用 LRU刪除算法的雙向連結 hash map 原始實現。cache tree 資料庫是基於cache hash 資料庫並提供B+ tree的機制。directory hash 資料庫是採用檔案系統的目錄機制實現,每個記錄存儲為一個目錄下的檔案。directory tree 資料庫基於directory hash資料庫並提供B+ tree的機制。所有的資料庫都有相關的事物(transaction)和游標(cursor)的實用方法。軟體也包含了命令行接口的程式。
KC的運行速度非常快。例如,保存一百萬記錄到hash資料庫中只需要0.9秒,保存到B+ tree資料庫只需要1.1秒。而且資料庫本身還非常小。例如,hash資料庫的每個記錄頭只有16位元組,B+ tree資料庫是4位元組。更進一步,KC的伸縮性非常大,資料庫大小可以增長到8EB(9.22e18 bytes)。
KC是C++語言編寫的,並提供C++、C、Java、Python、Ruby、Perl 和 Lua 的API。KC可以用在所有符合 C++03標準並帶TR1庫擴展的平台。KC是GNU General Public License的自由軟體。FOSS License例外也提供用來適應其它免費和開源的licenses。另一方面也提供商業license。如果你在專有軟體中使用KC,那么你需要商業 license。

相關詞條

熱門詞條

聯絡我們