Kyoto Cabinet, the successor of Tokyo Cabinet has reached the first stable release: 1.0. The ☞ announcement is pretty reach in details and provides code samples fot all currently supported bindings (C, C++, Java, Python, Ruby, Perl).
Kyoto architecture looks quite interesting and is depicted below:
Mikio Hirabayashi, lead developer, speaking about Kyoto Cabinet vs Tokyo Cabinet:
Kyoto Cabinet has the following features. Especially, Windows support is remarkable.
- time efficiency: Throughput of updating is more than 100 millions query-per-second.
- space efficiency: Footprint for each record is 8-16 bytes in the hash DB, 2-4 bytes in the tree DB. concurrency: The hash DB uses read-write lock for each record. The tree DB uses read-write lock for each page.
- usability: Generic operations of database by interface like the “Visitor” pattern are provided.
- robustness: Manual transaction, auto transaction, and auto recovery are provided.
- portability: UNIX-like systems (Linux, FreeBSD, Solaris, Mac OS X) and Windows (VC++) are supported. language bindings: C++, C, Java, Python, Ruby, and Perl are supported.
Compared with Tokyo Cabinet, KC is superior in concurrency, usability, and portability. Although time efficiency for single-thread is better in TC, I recommend KC from now on because multi-core/many-core CPU has been popular. However, I will keep on maintaining TC and fix bugs if they are found.
While Kyoto Cabinet sounds really interesting, I cannot stop asking myself if is this the time to move away from Tokyo Cabinet?