# Kyoto Cabinet: a straightforward implementation of DBM

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

## Overview

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. On the other hand, a commercial license is also provided. If you use Kyoto Cabinet within a proprietary software, the commercial license is required.

## Documents

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

- Fundamental Specifications
- Specifications of Command Line Utilities
- Presentation
- API Documents of the core library (C/C++)

- API Documents for Java
- API Documents for Python 3.x
- API Documents for Python 2.x
- API Documents for Ruby
- API Documents for Perl
- API Documents for Lua

## Packages

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

- Source Packages of the core library (C/C++)

- Source Packages for Java
- Source Packages for Python 3.x
- Source Packages for Python 2.x
- Source Packages for Ruby
- Source Packages for Perl
- Source Packages for Lua

- Binary Packages for Windows (C/C++/Java)

## Information

Kyoto Cabinet was written by FAL Labs. You can contact the author by e-mail to `info@fallabs.com'. If you want the commercial license, please see the license guide. The documentation your are reading references the version maintained by Altice Labs.

The following are sibling projects of Kyoto Cabinet.

- Remote Service (Kyoto Tycoon)