Kyoto Cabinet: a straightforward implementation of DBM

Copyright (C) 2009-2012 Mikio Hirabayashi
Last Update: Fri, 04 Mar 2011 23:07:26 -0800

There's a successor: Tkrzw. I recommend you to try it.


Kyoto Cabinet is a library of routines for managing a database. The database is a simple data file containing records, each is a pair of a key and a value. Every key and value is serial bytes with variable length. Both binary data and character string can be used as a key and a value. Each key must be unique within a database. There is neither concept of data tables nor data types. Records are organized in hash table or B+ tree.

Kyoto Cabinet runs very fast. For example, elapsed time to store one million records is 0.9 seconds for hash database, and 1.1 seconds for B+ tree database. Moreover, the size of database is very small. For example, overhead for a record is 16 bytes for hash database, and 4 bytes for B+ tree database. Furthermore, scalability of Kyoto Cabinet is great. The database size can be up to 8EB (9.22e18 bytes).

Kyoto Cabinet is written in the C++ language, and provided as API of C++, C, Java, Python, Ruby, Perl, and Lua. Kyoto Cabinet is available on platforms which have API conforming to C++03 with the TR1 library extensions. Kyoto Cabinet is a free software licensed under the GNU General Public License.


The following are documents of Kyoto Cabinet. They are contained also in the source package.


The following are the source packages of Kyoto Cabinet. As for binary packages, see the site of each distributor.


Kyoto Cabinet was written and is maintained by Mikio Hirabayashi. You can contact the author by e-mail to `'.

The following is a sibling project of Kyoto Cabinet.