key-value數據庫Kyoto Cabinet筆記

Kyoto Cabinet是一個key-value數據庫管理程序的library ,key和value均可以使二進制或者字符串格式。數據存儲存分hash和b+ tree模式。
   Kyoto Cabinet很是快,在hash模式下,插入100萬數據只要0.9秒,在b+ tree模式下只要1.1秒。查詢200萬條數據也只須要1秒。而且Kyoto Cabinet的數據文件佔用的空間也很是小。Kyoto Cabinet的可伸縮性也是很是好的,數據庫文件能夠達到8EB。(1EB=1024PB,1PB=1024TB)。
-msiz num : specifies the size of the memory-mapped region. 也就是指定內存映射區域大小
-bnum num : specifies the number of buckets of the hash table.指定哈希表的桶數量。官方推薦是記錄數的兩倍或者更高
db.kyotocabinet.gds.write.path=/a/b/c/product.kch#msiz=1000000000#bnum=15000000
實踐:以較大的內存寫入,以較小的內存讀出。


DB db = new DB();
db.open(dbPath, mode)
 
mode=DB.OCREATE|DB.OWRITER|DB.OTRUNCATE
mode表明寫模式,而且若是原來路徑的文件存在,刪除並從新建立;若是不存在也建立
以kch結尾的文件,表明使用hash表存儲數據
以kct結尾的文件,表明使用B+ tree表存儲數據
Hash 數據庫 的每一個操做的時間複雜度是 O(1),所以理論上,性能是常量而與數據庫的規模無關。
hash值的碰撞是經過分離連接(separate chaining)管理的。每一個鏈(chain)的數據結構是二分查找樹。


B+ tree 數據庫的每一個操做的時間複雜度是 O(log N),底數爲2,所以理論上,性能是數據庫規模的對數。儘管B+ tree 數據庫的隨機訪問性能要慢於 hash數據庫,但B+ tree數據庫支持對 key 順序的連續訪問,這能夠實現對字符串的前向匹配查找和整數的範圍查找。連續訪問的性能遠快於隨機訪問。


比較詳細介紹Kyoto Cabinet的博客
http://blog.csdn.net/liuhuai12345/article/details/8182868
相關文章
相關標籤/搜索