【TcaplusDB知識庫】GO快速上手TDR表的增刪查改操作
TDR說明
入門
快速入手TDR協議表的開發涉及幾個步驟,下面介紹如何基於TcalusDB本地Docker版環境,快速上手基於C++進行TDR表的增刪查改操作。所有操作均在申請的開發測試機或雲主機進行。
Docker環境準備
在開始示例程式碼演示之前,需要提前準備好TcaplusDB本地Docker環境及tcapluscli工具,具體請參考資料:TcaplusDB入門-Docker部署篇.md。 Docker部署好後,對於命令列工具需要授權所有IP訪問Docker環境,授權方式:
./tcapluscli privilege --endpoint-url=http://localhost --allow-all-ip
TcaplusDB表準備
準備TDR表示例檔案
這裡以table_test.xml舉例,表名: PLAYERONLINECNT, 表型別: GENERIC。檔案具體內容如下:
TcaplusDB叢集準備
對於TcaplusDB,在建立表之前需要建立對應的表叢集。對於Docker本地版,叢集已經預設建立好一個供大家使用,所以不用再建立叢集。
TcaplusDB表格組準備
TcaplusDB表在叢集的基礎上還依賴於表格組,相當於遊戲裡的邏輯分割槽,使用工具建立表格組命令如下:
#查看錶格組幫助命令
./tcapluscli tablegroup -h
#建立一個表格組,id指定為4, endpoint-url為上面docker暴露的80埠,access-id為叢集訪問id (業務id, tdr叢集預設為2), 用於docker環境連線使用, group name由字母、數字和下劃線組成
./tcapluscli tablegroup create --endpoint-url=http://localhost --access-id=2 --group-id=4 --group-name=zone_4
TcaplusDB表建立
現在正式進入表建立環節,在上述表格組基礎上建立一個TDR表,執行建立表命令,如下所示:
#查看錶建立命令提示幫助
./tcapluscli table -h
#建立一個表, 指定endpoint-url, 表格組id: group-id, 表型別: TDR, 表定義檔案: table_test.xml,放當前路徑
./tcapluscli table create create --endpoint-url=http://localhost --access-id=2 --group-id=4 --schema-type=TDR --schema-file=table_test.xml
示例程式碼
以C++示例程式碼為例,介紹如何使用TDR介面進行TcaplusDB表資料操作,這裡主要介紹Generic型別表操作。示例程式碼包括兩種模式:同步模式 和非同步模式,這裡主要介紹非同步模式示例程式碼,同步模式程式碼可檢視SDK中examples目錄相關程式碼。
SDK準備
這裡以3.46.0版本為示例演示,需要下載兩個元件:
元件名 | 下載地址 | 用途 |
---|---|---|
TcaplusServiceApi3.46.0.198987.x86_64_release_20200925 | SDK API相關程式碼 | |
TSF4G_BASE-2.7.37.0a1db41b8_X86_64_Release | tdr依賴包相關程式碼 |
TcaplusServiceApi部署方式
TcaplusServiceApi3.46.1.199000.x86_64_release_20201102下載後,直接解壓至目標機器相應目錄即可,如:
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102
TSF4G部署方式
TSF4G_BASE-2.7.37.0a1db41b8_X86_64_Release下載後,解壓後把子目錄內的內容拷貝至/usr/local/tsf4g_release即可,如:
#建立目標部署目錄
[root@VM-32-2-centos ~]# mkdir /usr/local/tsf4g_release
#進子目錄
[root@VM-32-2-centos ~]# cd /root/TSF4G_BASE-2.7.37.0a1db41b8_X86_64_Release/release/x86_64
#拷貝至/usr/local/tsf4g_release
[root@VM-32-2-centos x86_64]# cp -rf * /usr/local/tsf4g_release
環境變數設定
主要設定兩個環境變數: TSF4G_HOME和TCAPLUS_HOME, 把下面內容新增至/root/.bashrc,然後執行source /root/.bashrc使其生效,如下所示:
export TSF4G_HOME=/usr/local/tsf4g_release/
export TCAPLUS_HOME=/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64
編譯環境準備
環境依賴 | 版本 | 說明 |
---|---|---|
作業系統 | CentOS7 | x86體系 |
C++ | C++98 | |
GCC | 4.8.5 | |
gcc-c++ | 4.8.5 | yum install -y gcc-c++ |
tsf4g | 2.7.37 | tdr相關依賴,參考上述TSF4G部署方式描述 |
示例程式碼
示例程式碼目錄在SDK目錄下的examples子目錄下,examples目錄有很多不同型別的表示例,下面主要以C++_tdr1.0_asyncmode_generic_simpletable/SingleOperation子目錄的來舉例,具體子目錄如下:
#SDK根目錄
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64
#SDK公共配置目錄
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64/examples/tcaplus/C++_common_for_tdr1.0
#SDK Examples目錄
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64/examples/tcaplus/C++_tdr1.0_asyncmode_generic_simpletable/SingleOperation
在編譯具體示例程式碼之前,需要把本地版中關於公共引數配置的叢集資訊進行配置,配置目錄在examples/tcaplus/C++_common_for_tdr1.0下,主要涉及如下:
#進入公共資訊配置目錄
cd TcaplusServiceApi3.46.0.198987.x86_64_release_20200925/release/x86_64/examples/tcaplus/C++_common_for_tdr1.0
#修改common.h,將相關叢集資訊改為本地版中叢集相關資訊
/*********************測試例子前需要使用者手動修改的地方BEGIN**************************************/
// 目標業務的tcapdir地址,對於TcaplusDB本地版直接配置成0.0.0.0:9999即可
static const char DIR_URL_ARRAY[][TCAPLUS_MAX_STRING_LENGTH] =
{
"tcp://0.0.0.0:9999"
};
// 目標業務的tcapdir 地址個數, 配置成:1
static const int32_t DIR_URL_COUNT = 1;
// 目標業務的表名 PLAYERONLINECNT
static const char * TABLE_NAME = "PLAYERONLINECNT";
// 目標業務的App ID (接入ID,Access ID), TcaplusDB本地版APP_ID預設為2,使用者測試可以不用修改
static const int32_t APP_ID = 2;
// 目標業務的Zone ID (遊戲區ID, Table Group ID), 參考上述章節建立的group id
static const int32_t ZONE_ID = 4;
// 目標業務的業務密碼,預設為39859BC573A2E254,使用者測試可以不用修改, 如果有問題可訪問oms控制檯在業務管理->業務維護-> 檢視密碼
static const char * SIGNATURE = "39859BC573A2E254";
/*********************測試例子前需要使用者手動修改的地方END**************************************/
在examples/tcaplus/C++_tdr1.0_asyncmode_generic_simpletable/SingleOperation目錄下每個操作子目錄下的檔案有幾個:
檔名 | 檔案用途 |
---|---|
conv.sh | 依據表定義檔案table_test.xml生成表定義介面檔案table_test.h, table_test.cpp, 藉助SDK根目錄下bin目錄下的tdr工具來生成 |
envcfg.env | 環境變數設定,主要設定TCAPLUS_HOME和TSF4G_HOME環境變數,設定為SDK根目錄,在編譯之前執行source envcfg.env,使環境變數生效 |
main.cpp | 示例程式碼主程式 |
Makefile | 編譯檔案 |
readme.txt | 編譯操作提示說明 |
table_test.xml | 示例表TDR定義檔案 |
tlogconf.xml | 日誌配置檔案,預設不需改動 |
插入記錄
示例程式碼目錄:
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64/examples/tcaplus/C++_tdr1.0_asyncmode_generic_simpletable/SingleOperation/insert
生成表定義介面檔案,如下:
#生成table_test.h, table_test.cpp
sh conv.sh
#檢查Makefile,重點是LIBS和INC兩個變數,參考下面設定
LIBS += -L$(TSF4G_HOME)/lib -L$(TCAPLUS_HOME)/lib -Wl,-Bstatic -ltcaplusserviceapi -ltsf4g_r -lreadline -lncurses -lscew -lexpat -Wl,-Bdynamic -lpthread -lanl
INC = -I$(TSF4G_HOME)/include -I$(TCAPLUS_HOME)/include/tcaplus_service -I../../../C++_common_for_tdr1.0
#編譯
make
#執行編譯好的二進位制檔案,插入記錄,如果有問題,請聯絡TcaplusDB專案組相關人員協助定位問題
./mytest
查詢記錄
示例程式碼目錄:
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64/examples/tcaplus/C++_tdr1.0_asyncmode_generic_simpletable/SingleOperation/get
編譯過程:
#生成table_test.h, table_test.cpp
sh conv.sh
#檢查Makefile,重點是LIBS和INC兩個變數
LIBS += -L$(TSF4G_HOME)/lib -L$(TCAPLUS_HOME)/lib -Wl,-Bstatic -ltcaplusserviceapi -ltsf4g_r -lreadline -lncurses -lscew -lexpat -Wl,-Bdynamic -lpthread -lanl
INC = -I$(TSF4G_HOME)/include -I$(TCAPLUS_HOME)/include/tcaplus_service -I../../../C++_common_for_tdr1.0
#編譯
make
#執行編譯好的二進位制檔案,插入記錄,如果有問題,請聯絡TcaplusDB專案組相關人員協助定位問題
./mytest
#編譯 make #執行編譯好的二進位制檔案,插入記錄,如果有問題,請聯絡TcaplusDB專案組相關人員協助定位問題 ./mytest
修改記錄
示例程式碼目錄:
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64/examples/tcaplus/C++_tdr1.0_asyncmode_generic_simpletable/SingleOperation/update
編譯過程:
#生成table_test.h, table_test.cpp
sh conv.sh
#檢查Makefile,重點是LIBS和INC兩個變數
LIBS += -L$(TSF4G_HOME)/lib -L$(TCAPLUS_HOME)/lib -Wl,-Bstatic -ltcaplusserviceapi -ltsf4g_r -lreadline -lncurses -lscew -lexpat -Wl,-Bdynamic -lpthread -lanl
INC = -I$(TSF4G_HOME)/include -I$(TCAPLUS_HOME)/include/tcaplus_service -I../../../C++_common_for_tdr1.0
#編譯
make
#執行編譯好的二進位制檔案,插入記錄,如果有問題,請聯絡TcaplusDB專案組相關人員協助定位問題
./mytest
刪除記錄
示例程式碼目錄:
/root/TcaplusServiceApi3.46.1.199000.x86_64_release_20201102/release/x86_64/examples/tcaplus/C++_tdr1.0_asyncmode_generic_simpletable/SingleOperation/delete
編譯過程:
#生成table_test.h, table_test.cpp
sh conv.sh
#檢查Makefile,重點是LIBS和INC兩個變數
LIBS += -L$(TSF4G_HOME)/lib -L$(TCAPLUS_HOME)/lib -Wl,-Bstatic -ltcaplusserviceapi -ltsf4g_r -lreadline -lncurses -lscew -lexpat -Wl,-Bdynamic -lpthread -lanl
INC = -I$(TSF4G_HOME)/include -I$(TCAPLUS_HOME)/include/tcaplus_service -I../../../C++_common_for_tdr1.0
#編譯
make
#執行編譯好的二進位制檔案,插入記錄,如果有問題,請聯絡TcaplusDB專案組相關人員協助定位問題
./mytest