Kyoto Cabinet 基本规格书【转】
如果你知道 Tokyo Cabinet ,那么就应该知道 Kyoto Cabinet,因为他们都是同一个作者(平林幹雄)开发出来的 Key-Value 数据库。
Kyoto Cabinet:a straightforward implementation of DBM,主页:http://fallabs.com/kyotocabinet/ ,演示文稿:http://www.slideshare.net/estraier/kyotoproducts-5886452 。
Tokyo Cabinet:a modern implementation of DBM,主页: http://fallabs.com/tokyocabinet/
以下Tokyo Cabinet简称为TC, Kyoto Cabinet简称为KC,本文主要对KC做介绍。
KC是TC的后继者或兄弟项目,因为KC在各方面都超过了,所以作者在TC的首页上的开头向所有人推荐使用KC(我也是这个推荐才开始关注KC的)。TC为C实现,为了更好的可维护性,KC采用C++实现。
以下内容的英文原文来自:http://fallabs.com/kyotocabinet/spex.html
一、介绍
KC是一个数据库管理的 lib。数据库是一个简单的包含记录的数据文件,每个记录是一个键值对(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。
相关推荐
- 《构建高性能web站点》–服务器并发处理能力–I/O
- Posted on 04月09日
- 《构建高性能web站点》——服务器并发处理能力–服务器进程
- Posted on 03月30日
- 百度K掉了我的个人博客
- Posted on 07月11日
- 阅读IT大牛的博客
- Posted on 04月25日
欲灭亡 先疯狂
好开心~ 【4399生死狙击】的兄弟们~ 我发现了一个 可以免费刷取:炎魔咆哮、雷霆之怒、所有黄金武器的网站!我已经刷到了3把 英雄武器!爽死了哈哈 地址: http://t.cn/RtZyBl0 【(末日审判)可以免费刷永久啦】
小时候,家里的猫猫狗狗都是吃我们吃剩的饭菜的;现在人怎么都这样养宠物了啊?
求游戏名…
真事,昨天晚上福建室友跟我说马龙要爆出大新闻我还想了半天马龙跟王宝强有啥关系
人生一辈子,会遇到许多人,放开点吧。祝你开心。
终于出日语的了,俄语听得我头疼
不对,看地上影子就一个人骑车
不好看 你他妈的去看黄片啊 傻逼 那你看啥 我r尼玛
你不知道么 雷疯是骗子么 什么伟人传全是假的
你脑残啊,智障有毛病,
杀光他们 碾成肉酱!!!
我有美瞳就成
我有美瞳就成
庭院深深深几许
楼主,我好喜欢这首,网上真的很难找,发给我吧谢谢了!783538097@qq.com
楼主,我好喜欢这首,网上真的很难找,发给我吧谢谢了!783538097@qq.com
一坨屎都能取香飘万里,没文化