用Tokyo Cabinet實現與數據庫一樣的數據庫功能,下面以2010年世界盃球員信息進行演示
表格內容如下
id name country classid createtime
1 莫斯 新西蘭 1000003800 2010-05-18 09:21:00
2 列拉 新西蘭 1000003800 2010-05-18 09:18:04
3 克勞奇 新西蘭 1000003800 2010-05-18 09:18:07
4 德澤烏 新西蘭 1000003800 2010-05-18 09:18:22
5 溫特拉 新西蘭 1000003800 2010-05-18 09:18:34
tctmgr命令參數
tctmgr create [-tl] [-td|-tb|-tt|-tx] path [bnum [apow [fpow]]]
tctmgr inform [-nl|-nb] path
tctmgr put [-nl|-nb] [-sx] [-dk|-dc|-dai|-dad] path pkey [cols...]
tctmgr out [-nl|-nb] [-sx] path pkey
tctmgr get [-nl|-nb] [-sx] [-px] [-pz] path pkey
tctmgr list [-nl|-nb] [-m num] [-pv] [-px] [-fm str] path
tctmgr search [-nl|-nb] [-ord name type] [-m num] [-sk num] [-kw] [-pv] [-px] [-ph] [-bt num] [-rm] [-ms type] path [name op expr ...]
tctmgr optimize [-tl] [-td|-tb|-tt|-tx] [-tz] [-nl|-nb] [-df] path [bnum [apow [fpow]]]
tctmgr setindex [-nl|-nb] [-it type] path name
tctmgr importtsv [-nl|-nb] [-sc] path [file]
tctmgr version
創建數據庫
tctmgr create players
插入數據
tctmgr put players 1 "name" "莫斯" "country" "新西蘭" "classid" 1000003800 "createtime" "2010-05-18 09:21:00"
tctmgr put players 2 "name" "列拉" "country" "西班牙" "classid" 1000003800 "createtime" "2010-05-18 09:18:04"
tctmgr put players 3 "name" "克勞奇" "country" "英格蘭" "classid" 1000003800 "createtime" "2010-05-18 09:18:07"
tctmgr put players 4 "name" "德澤烏" "country" "荷蘭" "classid" 1000003800 "createtime" "2010-05-18 09:18:22"
tctmgr put players 5 "name" "溫特拉" "country" "希臘" "classid" 1000003800 "createtime" "2010-05-18 09:18:34"
查看數據
tctmgr list -pv players
結果如下:
1 name 莫斯 country 新西蘭 classid 1000003800 createtime 2010-05-18 09:21:00
2 name 列拉 country 西班牙 classid 1000003800 createtime 2010-05-18 09:18:04
4 name 德澤烏 country 荷蘭 classid 1000003800 createtime 2010-05-18 09:18:22
3 name 克勞奇 country 英格蘭 classid 1000003800 createtime 2010-05-18 09:18:07
5 name 溫特拉 country 希臘 classid 1000003800 createtime 2010-05-18 09:18:34
按條件查詢數據
通過主鍵進行查詢,查詢球員id爲3的信息
tctmgr get players 3
結果如下:
name 克勞奇
country 英格蘭
classid 1000003800
createtime 2010-05-18 09:18:07
通過非主鍵查詢
#查詢克勞奇球員 相當於標準sql中的where 字段='字符串'
tctmgr search -pv players name STREQ "克勞奇"
結果如下:
3 name 克勞奇 country 英格蘭 classid 1000003800 createtime 2010-05-18 09:18:07
#查詢以溫開頭的球員 相當於標準sql中的相當於標準sql中like '字符串%;
tctmgr search -pv players name STRBW "溫"
5 name 溫特拉 country 希臘 classid 1000003800 createtime 2010-05-18 09:18:34
附查詢條件表達式(前面加~,相當於標準sql中的非)
* STREQ : 完全包含字符串,相當於標準sql中的where 字段='字符串'
* STRINC : 包含此字符串,相當於標準sql中like '%字符串%'
* STRBW : 以此字符串開頭的內容,相當於標準sql中like '字符串%'
* STREW : 以此字符串結尾的內容,相當於標準sql中like '%字符串'
* STRAND : 包含在某區間內的內容,如標準sql中like 'a-z',那麼他只能是a到z的字母
* STROR : 不包含在某區間內的內容,如標準sql中like '!a-z',那麼他只能是數字或其他的符號
* STRRX : 組合式結構,如標準sql中like "a"!b-m"#"
* NUMEQ : 數值大小一樣 相當於標準sql中 where a='1'
* NUMGT : 數值大於某一值 相當於標準sql中 where a>'1'
* NUMGE : 數值大於等於某一值 相當於標準sql中 where a>='1'
* NUMLT : 數值小於某一值 相當於標準sql中 where a<'1'
* NUMLE : 數值小於某一值 相當於標準sql中 where a<='1'
* NUMBT : 數值處於某一數值區間,相當於標準sql中 where a> 1 and a < 10
* NUMOREQ : 數值不處於某一數值的區間,如果是a大於1,小於10的話,那這個表達式右邊的內容應該相當於標準sql中 where a< 1 or a > 10
附排序
* STRASC : 按字面大小的升序排序
* STRDESC : 按字面大小的降序排序
* STRASC : 按數字大小的升序排序
* STRDESC : 按數字大小的降序排序
刪除數據
tctmgr out players 2
#確認結果
tctmgr list -pv players
1 name 莫斯 country 新西蘭 classid 1000003800 createtime 2010-05-18 09:21:00
4 name 德澤烏 country 荷蘭 classid 1000003800 createtime 2010-05-18 09:18:22
3 name 克勞奇 country 英格蘭 classid 1000003800 createtime 2010-05-18 09:18:07
5 name 溫特拉 country 希臘 classid 1000003800 createtime 2010-05-18 09:18:34
刪除數據庫
rm players (數據庫所在的路徑)