After MongoDB its time for another alternative to relational databases called Tokyo Cabinet. Tokyo Cabinet is a library of routines for managing a file based key-value store. It's a high performing database and it can be accessed over a network with Tokyo Tyrant. In this post I install Tokyo Cabinet, Ruby and the Ruby bindings for Tokyo Cabinet. But there will be a follow up post where I load and query POIs like I did with MongoDB and PostgreSQL/PostGIS.
Tokyo Cabinet only works on Linux so I installed it in on an Ubuntu virtual machine. It took me some time to figure everything out but if I can do it you can too. First you need to download the latest version of Tokyo Cabinet from the project site. Once downloaded you open a terminal window, navigate to the download location and issue the following commands.
tar xzvf tokyocabinet-1.4.20.tar.gz cd tokyo-cabinet/ # install dependencies sudo apt-get install checkinstall build-essential libbz2-dev # now compile ./configure --prefix=/usr make clean make # creates and installs a Debian package sudo checkinstall -D
I decided to use the Ruby bindings so if you don't have it you can install it with the below command. This installs Ruby, an interactive shell, an interactive reference, the Ruby documentation and the dev part of the Ruby Standard Library. We will need the ruby-dev package for building the Ruby bindings of Tokyo Cabinet.
sudo apt-get install ruby irb ri rdoc ruby1.8-dev
After downloading the Ruby bindings for Tokyo Cabinet from the project site, I installed them with the following commands.
tar xzvf tokyocabinet-ruby-1.26.tar.gz cd tokyocabinet-ruby-1.26 ruby extconf.rb make sudo make install
In the specifications document you can find a lot of information about Tokyo Cabinet and the underlying concepts. As you can read there are four types of databases : a hash database, a B+ tree database, a fixed-length database and a table database. In the examples directory of the Ruby bindings you will find some samples that create and use these four database. There is also a sample that uses the abstract database API with which you can communicate to the four database types. For more info on the Ruby bindings you can read the docs.
Problems with the installation ? Here are the sources that helped me with the installation process or post a comment and maybe I can help out.