官方网站介绍 http://fallabs.com/kyotocabinet/
Kyoto Cabinet是一个key-value数据库管理程序的library ,key和value都可以使二进制或者字符串格式。数据存储存分hash和b+ tree模式。
Kyoto Cabinet非常快,在hash模式下,插入100万数据只要0.9秒,在b+ tree模式下只要1.1秒。查询200万条数据也只需要1秒。并且Kyoto Cabinet的数据文件占用的空间也非常小。Kyoto Cabinet的可伸缩性也是非常好的,数据库文件可以达到8EB。(1EB=1024PB,1PB=1024TB)。这比bdb的可管理256tb的数据要大得多了吧。
Kyoto Cabinet提供的API。
- 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
Kyoto Cabinet跟Tokyo Cabinet比:
1.文件占用的空间更小
2.在多线程下,性能更好。作者说,单线程下Tokyo Cabinet的性能更好。
3.支持windows系统
作者很强悍,还提供Kyoto Tyrant的网络接口Kyoto Tycoon 。
看到有这么多的优点,就打算安装一下,安装环境为centos5.5 32位
安装步骤如下
wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.25.tar.gz
tar zxvf kyotocabinet-1.2.25.tar.gz
cd kyotocabinet-1.2.25
./configure
make
结果在make的过程中报告编译错误,查了一下官方的安装说明
Kyoto Cabinet is available on UNIX-like systems. At least, the following environments are supported.
- Linux 2.6 and later (i386/x86-64/PowerPC/Alpha/SPARC)
- FreeBSD 7.1 and later (i386/x86-64)
- Solaris 10 and later (i386/x86-64/SPARC)
- Mac OS X 10.5 and later (x86-64)
- Windows XP and later (i386/x86-64)
gcc
(GNU Compiler Collection) 4.2 or later andmake
(GNU Make) are required to install Kyoto Cabinet with the source package. They are installed by default on Linux, FreeBSD and so on.As Kyoto Cabinet depends on the following libraries, install them beforehand.
- ZLIB : for loss-less data compression. 1.2.3 or later is required.
原来需要编译环境gcc版本为4.2以上 zlib1.2.3以上
查了一下centos5.5的gcc gcc -v 报告版本是gcc 4.1.2难怪报告错误
先安装zlib yum -y install zlib-devel
然后升级gcc 从网上下载了一个gcc4.5.1
在配置gcc的过程中会出现错误:gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+
说明要安装gcc需要GMP、MPFR、MPC这三个库,可从ftp://gcc.gnu.org/pub/gcc/infrastructure/下载相应的压缩包。由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。这里三个库我用的版本分别是gmp4.3.2,mpfr2.4.2和mpc0.8.1。
先开始安装GMP。解压GMP的压缩包后,得到源代码目录gmp-4.3.2。在该目录的同级目录下建立一个临时的编译目录,这里命名为gmp-build。然后开始配置安装选项,进入gmp-build目录,输入以下命令进行配置:
../gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2
这里--prefix选项代表要将该库安装在哪里,我是装在/usr/local/gmp-4.3.2目录下,后面的安装都会用到这个选项。
这时在gmp的编译目录下就会生成一个makefile文件,现在开始编译安装。
make
make check
make install
这样就安装好了gmp。mpfr和mpc的安装方法与此类似。不过要注意配置的时候要把依赖关系选项加进去,具体后面两个库配置命令如下:
../mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
../mpc-0.8.1/configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2
安装好这三个库之后,就可以正式开始安装gcc了。
与此前一样,先建一个编译gcc的临时目录gcc-build,进入该目录后配置安装选项:
../gcc-4.5.0/configure --prefix=/usr/local/gcc-4.5.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
--with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
gcc的配置选项有很多,具体可以参考gcc源文件目录下的安装说明。这里只安装了c和c++的编译器。(如果不指定编译的语言,则会在make时不通过,爆出某些文件找不到等错误,所以还是建议在此指定编译语言为c,c++)然后开始make编译。为保险起见,需要在环境变量LD_LIBRARY_PATH添加前面三个库的位置,键入以下命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib
然后重新make编译,在经过漫长的1小时等待后,终于编译完成。在安装说明里面还有测试这一步,不过那是可选的。直接make install安装,至此gcc就全部安装完成了。不过目前还不能使用新版本的gcc,因为新版的可执行文件还没加到命令的搜索路径中。在这里我为新版的gcc和g++命令分别建立了一个软链接。进入/usr/bin目录后,键入如下命令建立软链接。
sudo ln -s /usr/local/gcc-4.5.0/bin/gcc gcc
sudo ln -s /usr/local/gcc-4.5.0/bin/g++ g++
当然这里直接将/usr/bin目录下gcc,g++命令重新链接到新版本的gcc可执行文件。在正式使用之前还有最后一个工作要做,就是将前面安装的三个库的路径加进环境变量LD_LIBRARY_PATH中,不然在编译程序的时候会出错。由于我不想每次编译程序都生成环境变量,所以需要编辑/etc目录下的bashrc文件配置shell环境。在这个文件中添加以下语句:
LD_LIBRARY_PATH=:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gcc-4.5.0/lib
export LD_LIBRARY_PATH
保存重启系统后,就可以使用新装的gcc了。
安装好gcc后 检查版本gcc -v 报告gcc版本4.5.1
然后继续安装kyotocabinet
make && make install 这次没有报告错误
一切顺利安装完成
接下来就是测试安装的结果了
创建数据库命令
$ kchashmgr create staffs.kch
结果系统又是报告错误
kchashmgr: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by kchashmgr)
kchashmgr: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by kchashmgr)
kchashmgr: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by kchashmgr)
kchashmgr: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/local/lib/libkyotocabinet.so.6)
kchashmgr: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.10' not found (required by /usr/local/lib/libkyotocabinet.so.6)
kchashmgr: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/local/lib/libkyotocabinet.so.6)
kchashmgr: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/local/lib/libkyotocabinet.so.6)
谷歌了一下 原来是libstdc++.so.6版本的原因执行
ls
-l
/usr/lib/libstdc
++.so.6
/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8,其实这里需要使用libstdc++.so.6.0.10
发现
从网上下载这个文件,下载地址为http://d.download.csdn.net/down/1670346/wwuu2010 然后将/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8软链接删除,重新做
ln -s /usr/lib/libstdc++.so.6.10 /usr/lib/libstdc++.so.6再次测试 终于搞定
在ubuntu server 上安装不用这么费事,因为gcc的版本默认的为4.4.5
只需要安装zlib 即可
sudo apt-get install zlib1g-dev