Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18089
  • 博文数量: 3
  • 博客积分: 1465
  • 博客等级: 上尉
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-02 15:06
文章分类
文章存档

2011年(1)

2010年(2)

分类: 数据库开发技术

2010-09-02 15:12:19

TokyoTokyo Tyrant的简称,合在一起用也称ttserver

是日本人 平林幹雄 开发的一款 NoSQL 数据库,数据库由一系列key-value对的记录构成,类似bdb

Tokyo Tyrant 是由同一作者开发的 Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统Tokyo

针对使用tt时出现太多误用,参数误设或未设,提供使用手册的摘要。在此开一个讨论的头。

的安装

测试了在32位机器和64位机器都运行正常,64位机器可以支持>2G的单个db文件;

32位机器加上编译选项” --enable-off64”后也能支持>2G的单个db文件,但是不能突破32Linux 3G用户内存空间的限制,所以内存最大只能用3G的,除非安装64位操作系统。

可用普通用户安装和运行。

Tokyo Cabinet依赖下面的库,一般Linux会自带,编译出错的话则需先安装:

       : 用来压缩. 1.2.3版本或更新的.

       : 用来压缩. 1.0.5版本或更新的.

下面的例子都是基于$HOME/local目录,使用时可更改。

 

     下载最新的包(注意别下载到旧包了),2011年推荐用的最新版本是:

 

 

         注:新版本主要进行bugfix,请尽量下载最新版本,changelog在源代码包里面。

         下载后传到Linux的目录解压:

         tar zxvf  ***.tar.gz


cd tokyocabinet-***

 

32位操作系统:

./configure --prefix=$HOME/local/tokyocabinet/ --enable-off64

64位操作系统:

./configure --prefix=$HOME/local/tokyocabinet/

make

make install

 

2.1.1  32位操作系统支持大于2Gdb文件

32位操作系统要支持大于2Gdb文件请加上--enable-off64否则会导致严重问题db文件超过2G时表现为:

1,Tcrmgr inform显示记录数为0,实际数据并没有被清空;

2,连接暴多但都操作失败,ttserver.log内提示“ERROR   ttacceptsock failed”和“ERROR   do_mc_set: operation failed”等;

3,Ttserver检测到文件异常会悄悄退出。

 

环境变量设置,cd $HOME vi .bash_profile,修改PATHLD_LIBRARY_PATH加上Tokyo的相关安装路径:

PATH=$HOME/local/tokyocabinet/bin:$HOME/local/tokyotyrant/bin:$PATH

 

LD_LIBRARY_PATH=$HOME/local/tokyocabinet/lib:$HOME/local/tokyotyrant/lib:$LD_LIBRARY_PATH

export PATH

export LD_LIBRARY_PATH

 

然后安装:

        --with-tc=$HOME/local/tokyocabinet

       make

       make install

      

安装后在$HOME/local目录下生成了安装目录:

cd $HOME/local/tokyotyran

mkdir  log data               

新建两个目录用来存放ulogdb文件等。

在两台主机都安装完后,于是可以执行下面的启动步骤了。

 

2.2.1  支持lua脚本

末尾加上–enable-lua表示支持lua脚本:

./configure --prefix=$HOME/local/tokyotyrant \

        --with-tc=$HOME/local/tokyocabinet –enable-lua

 

2.3  版本查看

查看tc版本:

tcamgr  --version

查看tt版本:

ttserver  --version


的启动

生产环境可用本例的目录结构,可将#后面的参数再调整。

关键性能参数

HashB+tree的基础,数据put时直接写入文件或文件映射,并非写缓存,是比较安全的数据存储方式。数据量小时,全在缓存或内存映射内操作,读写很快。

而且写数据是单条写入,所以数据量超过内存映射xmsiz时后要直接写入db文件,性能下降明显,io升高明显。

"bnum", 用来保存计算完hash值后的每个keydb文件的位置,bnum太小时hash值冲突比例就大。冲突的key依次链接起来,查找时增加了搜寻次数;

该值持久化到db文件,全映射在内存,默认很小是131071,最大可以设几亿以上。,要减少hash冲突次数,则要设置bnum >= key个数,一般一年后key要达到5000万个,bnum则设置为5千万:50 000 000

"opts", 指定压缩方式(hash的短数据压缩比不高)和bucket array对每条数据用4字节还是8字节保存文件偏移量,要支持db文件>2G请加“#opts=l”。要支持db文件>2G并且用效果较好的gzip用到的压缩算法请加“#opts=ld”。

hash方式单条数据很短(< 100字节)时压缩效果差,可以不用这个参数,否则请带上这个参数,但会占用更多cpu

"rcnum", hash map缓存的记录数,get时放到这个缓存,set时从缓存清掉该key,默认0不缓存,设置则最小256B+tree不用这个参数,缓存热点数据的,在get访问确定没明显热点时不要设置这个参数;在有明显热点时才需设置这个参数,在保证xmsiz足够大时这个参数推荐设小些,例如100万,因为会把rnumkeyvalue不加压缩地放内存,除非机器内存很充裕。

"xmsiz",指定文件映射尺寸,默认且最小为:256(放head等关键信息)+ bucket array的尺寸。注意这个最重要的参数必须>=db文件尺寸才能正常速度地响应,否则很慢,例如db文件最大会达到10G,则xmsiz设置为10G,单位字节。

上述参数中只有这个xmsiz参数在启动后还可通过重启调整。

关键性能参数

B+tree是基于hash机制实现的,复用上述的db文件格式和文件映射,不同的只是最上层缓存机制。

写入db数据时,是按叶节点或非页节点进行了打包分页,整页写入;

压缩也是整页压缩,压缩比更高。

写也进行了缓存。

但必须在备机上定期执行tcrmgr sync,否则异常重启丢掉数据。

 

"bnum", hash方式的,bnum的数量大于或等于存储总记录数的1/128即可,因为b+tree是整页保存到hash db内。

"opts", hash方式的该选项,要支持db文件>2G请加“#opts=l”。要支持db文件>2G并且用效果较好的gzip压缩算法请加“#opts=ld”。

b+tree方式压缩是整页(128条记录)压缩,压缩效果很好,数据量大时用b+tree时带上压缩参数降低内存使用量效果明显,但会稍占用更多cpu

"xmsiz",同hash方式的

"lcnum", b+tree缓存叶节点数,每个叶节点上可放128条记录作为一页,减轻读写压力,缓存热点数据的,默认1024,设的话最小64,太大则stopsync时耗时很多。xmsiz足够大时这个参数别设置。

"ncnum", b+tree缓存非叶节点数,每个树节点上可放256条索引作为一页,索引指向叶节点,减轻读写压力, 缓存热点数据,默认512,设的话最小64,太大则stopsync时耗时很多。通常为叶节点数的一半。

xmsiz足够大时以上两个参数可不设置。

#define BDBDEFLCNUM    1024              // default number of leaf cache

#define BDBDEFNCNUM    512               // default number of node cache


 

-备启动命令

./ttserver -host 192.168.4.150 -port 11230 -thnum 8  -dmn -pid $HOME/local/tokyotyrant/bin/ttserver.pid -log $HOME/local/tokyotyrant/log/ttserver.log -le -ulog $HOME/local/tokyotyrant/data/ -ulim 128m -sid 91 $HOME/local/tokyotyrant/data/database.tch#bnum=10000000#xmsiz=1024000000 #rcnum=1000000#opts=ld

 

./ttserver -host 192.168.4.151 -port 11230 -thnum 8 -dmn -pid $HOME/local/tokyotyrant/bin/ttserver.pid -log $HOME/local/tokyotyrant/log/ttserver.log -le -ulog $HOME/local/tokyotyrant/data/ -ulim 128m -sid 92 -mhost 192.168.4.150 -mport 11230 -rts $HOME/local/tokyotyrant/data/ttserver.rts $HOME/local/tokyotyrant/data/database.tch#bnum=10000000#xmsiz=1024000000 #rcnum=1000000#opts=ld

 

-主启动命令

./ttserver -host 192.168.4.150 -port 11230 -thnum 8  -dmn -pid $HOME/local/tokyotyrant/bin/ttserver.pid -log $HOME/local/tokyotyrant/log/ttserver.log -le -ulog $HOME/local/tokyotyrant/data/ -ulim 128m -sid 91 -mhost 192.168.4.151 -mport 11230 -rts $HOME/local/tokyotyrant/data/ttserver.rts $HOME/local/tokyotyrant/data/database.tcb#bnum=10000000#xmsiz=2000000000 #lcnum=1024#ncnum=512#opts=ld

 

./ttserver -host 192.168.4.151 -port 11230 -thnum 8 -dmn -pid $HOME/local/tokyotyrant/bin/ttserver.pid -log $HOME/local/tokyotyrant/log/ttserver.log -le -ulog $HOME/local/tokyotyrant/data/ -ulim 128m -sid 92 -mhost 192.168.4.150 -mport 11230 -rts $HOME/local/tokyotyrant/data/ttserver.rts $HOME/local/tokyotyrant/data/database.tcb#bnum=10000000#xmsiz=2000000000 #lcnum=1024#ncnum=512#opts=ld


UC优视 陈海涛 chenht@ucweb.com

阅读(2748) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~