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
相关文章
相关标签/搜索