Kyoto Tycoon History


I'm revisiting a piece of technology that's served me quite well: Kyoto Tycoon.

Kyoto Tycoon is a key-value store (similar to Redis) made by FAL Labs1, but has support for both in-memory and persistent on-disk databases. It's got impressive performance speeds with regards to inserts and searching (>1.5MM QPS for inserts, ~1.5MM QPS for searching) if you believe their intro docs2. Like Redis, it's got support for Lua scripting as well.

Kyoto Tycoon is actually a bundle of network packages on top of Kyoto Cabinet. C++03 compatible, Kyoto Cabinet forms of the bulk of the storage processing, while Kyoto Tycoon code focuses on performant networking calls.

There's another similar technology called Tokyo Tyrant, which is also a bundle of network packages on top of Tokyo Cabinet. The Tokyo and Kyoto technologies are similar successors to an older database technology called qdbm, and were developed in parallel to pursue different requirements. As of today, the Kyoto set seems to have single handedly beaten the Tokyo set3. One big difference is that Tokyo is written in C with LGPL, while Kyoto is written in GPLv3 with C++.

Following 2011, development on the Kyoto set of packages seems to have largely halted4. At this point, Cloudflare was a major user, and proceeded to do further development on top of Kyoto Cabinet until 2014, when Cloudflare dropped it with their own internal system called Quicksilver5. Another company called Alice Labs then forked and picked up development until late 2017.

Funnily enough, FAL Labs made a small update to fix a build error back in 2019, and then again updated Kyoto Tycoon in July 2020, so the lights aren't completely off. FAL Labs has also released a new database manager called tkrzw, which is largely a successor to Tokyo Cabinet.

Currently KT is largely outclassed by LevelDB6, although this space is quite ripe for improvements. I'll write up my usage and notes of KT in production at some other time.

Posted: 2020-11-22
Filed Under: tech