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

你可能感兴趣的:(NoSQL,Cabinet,Kyoto)