Tokyo Cabinet

Tokyo Cabinet is an embedded key-value store written in C, with native support for C and C++ and wrapper APIs for other languages. Keys and values are NULL-terminated strings or arbitrary sequences of bytes, and generally have variable size. Tokyo Cabinet is not a relational database management system; It is a dedicated key-value store similar to LevelDB, RocksDB etc. An application uses a custom non-SQL API to invoke insert, delete, update operations on data and other management functions. In addition, it supports repeatedly appending to a value, characterized as a "concatenate" operation.

History

Tokyo Cabinet was developed in the late 2000s and improves upon older and simpler data storage libraries such as the Unix dbm ("database manager") and the GNU GDBM by providing a greater variety of backing data structures and additional API functions.

Tokyo Cabinet is succeeded by a similar key-value store called Kyoto Cabinet.

Stored Procedures

Not Supported

Stored procedures are not supported by Tokyo Cabinet.

Compression

Naïve (Page-Level) Naïve (Record-Level) Prefix Compression

A Tokyo Cabinet database file is not globally compressed. Compression is done at the record (key and value) level or the page level (for a B+ Tree-based store) using the Burrows–Wheeler transform or the Lempel–Ziv compression algorithm.

Joins

Not Supported

Joins are not supported by Tokyo Cabinet.

Checkpoints

Not Supported

Checkpoints are not supported by Tokyo Cabinet.

Query Interface

Custom API

Tokyo Cabinet does not support SQL. Applications need to use a custom non-SQL API to invoke insert, delete, update operations on data and other management functions. In addition, Tokyo Cabinet supports repeatedly appending to a value, characterized as a "concatenate" operation.

Tokyo Cabinet has native support for C and C++ and wrapper APIs for other languages.

Data Model

Key/Value

Tokyo Cabinet is not a relational database management system; It is a dedicated key-value store. Applications need to use a custom non-SQL API to invoke insert, delete, update operations on data and other management functions.

Tokyo Cabinet also implements a thin "table" abstraction which simulates columns over a key-value store. Schemas and data types are not supported, and therefore, the a Tokyo Cabinet table can contain tuples with a different kind and number of columns. In the table abstraction, a key and a column index (a non-negative integer) together serve as a pointer to a value, unlike a standard key-value record, where only the key serves as such a pointer.

Tokyo Cabinet Logo
Website

http://fallabs.com/tokyocabinet/

Source Code

https://fallabs.com/tokyocabinet/

Tech Docs

https://fallabs.com/tokyocabinet/spex-en.html

Developer

FAL Labs

Country of Origin

JP

Start Year

2006

End Year

2012

Former Name

Sugamo Cabinet

Project Type

Open Source

Written in

C

Supported languages

C, C++, Java, Lua, Perl, Ruby

Operating Systems

BSD, Linux, OS X, UnixWare

Licenses

LGPL v2

Wikipedia

https://en.wikipedia.org/wiki/Tokyo_Cabinet_and_Kyoto_Cabinet