日期:2014-05-16  浏览次数:20445 次

【收藏】Tokyo Tyrant基本规范

?Tokyo Tyrant基本规范,翻译自Tokyo Tyrant官网,原文地址http://fallabs.com/tokyotyrant/spex.html。

??? 主要内容为Tokyo Tyrant的介绍,安装,服务器程序,客户端程序,远程数据库API,Lua 扩展,协议和一个针对初学者的教程。

一.介绍

??? Tokyo Tyrant是名为Tokyo Cabinet的DBM的网络接口的套装。既然这个DBM拥有高性能,你可能烦恼于多个程序共享同一个数据库,或者远程程序访问数据库。因此,Tokyo Tyrant提供并发和远程连接到Tokyo Cabinet。它由管理数据库的服务器程序和用于客户端程序的访问类库组成。

??? 因为线程池模型实现和现代Linux/*BSD核心的epoll/kqueue机制,该服务器提供高并发支持。服务器端和它的客户端通过基于TCP/IP的简单二进制协议相互交流。协议兼容memcached,另外HTTTP也同样支持,因此几乎所有主流平台和编程语言都可以使用Tokyo Tyrant。因为类似诸如热备份,更新日志和复制的机制,高可用性和高完整性(integrity)也同样提供。服务器还可以内嵌Lua,一个轻量级的脚本语言,以便能够定义任意的数据库操作。

??? 因为服务器使用Tokyo Cabinet的抽象API,所有的6个API:on-memory hash database API,on-memory tree database API, hash API,B+ tree database API,fixed-length database API和table database API, 都可以在客户端使用通用接口访问。此外,table extension用于使用table database的特定功能。

??? 到目前为止,服务器仅仅工作于Linux, FreeBSD, Mac OS X, Solaris。(注:主流平台中就差windows,据说正在开发中,但是不知何时发布)
???

二.安装

??? 预先安装好Tokyo Cabinet的最新版本并获取到Tokyo Tyrant的安装包。

??? 当Tokyo Tyrant的压缩包被解开时,更改当前工作目录到生成的目录下并执行安装。

??? 运行配置脚本。为了启用Lua扩展,添加'--enable-lua'选项。

./configure

??? 构建程序.

make

??? 安装程序。这个操作必须由root用户执行。

make install

??? 当一系列的工作结束时,下面的文件将被安装

/usr/local/include/ttutil.h
/usr/local/include/tculog.h
/usr/local/include/tcrdb.h
/usr/local/lib/libtokyotyrant.a
/usr/local/lib/libtokyotyrant.so.x.y.z
/usr/local/lib/libtokyotyrant.so.x
/usr/local/lib/libtokyotyrant.so
/usr/local/lib/ttskelmock.so
/usr/local/lib/ttskeldir.so
/usr/local/lib/ttskelproxy.so
/usr/local/lib/ttskelnull.so
/usr/local/lib/pkgconfig/tokyotyrant.pc
/usr/local/bin/ttserver
/usr/local/bin/ttultest
/usr/local/bin/ttulmgr
/usr/local/bin/tcrtest
/usr/local/bin/tcrmttest
/usr/local/bin/tcrmgr
/usr/local/sbin/ttservctl
/usr/local/share/tokyotyrant/...
/usr/local/man/man1/...
/usr/local/man/man3/...


??? 运行下面的命令来测试服务器。可在终端按Ctrl-C结束。

ttserver

??? 为了测试连接到上述运行服务器的客户端,在另外的终端运行下面的命令:

make check


三. 服务器程序

1)? ttserver

??? 命令'ttserver'运行服务器端管理一个数据库实例。因为数据库被视为Tokyo Cabinet的抽象API,你可以在服务器启动时选择方案。支持的方案有on-memory hash database, on-memory tree database, hash database, 和 B+ tree database. 这个命令的使用格式如下。'dbname'指定数据库名称。缺省使用on-memory hash database。

ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-kl] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [-rcc] [-skel name] [-mul num] [-ext path] [-extpc name period] [-mask expr] [-unmask expr] [dbname]

选项说明如下:

-host name : 指定服务器的主机名或地址。默认,每个网络地址都将被绑定
-port num : 指定端口号。默认为1978
-thnum num : 指定工作线程。默认为8
-tout num : 指定每个会话(session)的超时时间,单位秒。默认不超时。
-dmn : 作为守护进程工作
-pid path : 输出进程id到文件
-kl : 如果发现进程id文件存在,杀死已存在的进程
-log path : 输出日志信息到文件
-ld : 将debug信息写入日志文件
-le : 仅仅写入错误信息到日志文件
-ulog path : 指定更新日志目录
-ulim num : 指定每个更新日志文件的大小限制
-uas : 为更新日志使用异步I/O
-sid num : 指定服务器ID
-mhost name : 指定复制主服务器的主机名
-mport num : 指定复制主服务器的端口号
-rts path : 指定复制时间戳文件
-rcc : 检查复制的一致性
-skel name : 指定骨架(skeleton,基本?)数据库类库的名称
-mul num : 指定多数据库机制的分区数量
-ext path : 指定脚本语言扩展文件
-extpc name period : 指定周期命令的函数名和调用周期
-mask expr : 指定禁用命令的名称
-unmask expr : 指定容许使用的命令的名称


??? 发送SIGINT或SIGTERM到进程可正常关闭服务器,。也可以在控制终端中按Ctrl-C。发送SIGHUP可重启服务器。如果端口号不大于0,将使用UNIX domain socket同时socket文件的路径将由主机参数指定。这个命令成功时返回0,失败返回其他。

??? 数据库命名协定由Tokyo Cabinet的抽象API指定。名称为
名称 数据库
"*" on-memory hash database
'+' on-memory tree database
".tch"后缀 hash database
".tcb"后缀 B+ tree database
".tcf" fixed-length database
".tct" table database

??? 别的名称则这个方法失败。

??? 名字后面可以追加调整参数,用"#"分隔。每个参数由名称和值组成,用"="分隔。

数据库 支持参数
On-memory hash database "bnum", "capnum", "capsiz"
On-memory tree database "capnum", "