TcaplusDB TDR表 C++ SDK 开始使用
使用C++ SDK的前期准备工作主要包括:
- 准备环境;
- 创建业务;
- 创建游戏区;
- 创建表格;
- 收集环境信息;
- 下载SDK;
- 配置开发环境。
以上准备工作已经完成,可以直接跳过。
1. 准备环境
参考创建集群文档,部署TcaplusDB集群,或者申请TcaplusDB服务。
2. 创建业务
参考创建业务文档,创建业务(App)。
3. 创建游戏区
参考创建游戏区文档,创建游戏区(Zone)。
4. 创建表格
参考创建表格文档,创建数据表。
TDR表分为Generic表和List表两种。
4.1. Generic表定义说明
Generic表描述文件样例 下载 。
Generic表描述文件内容示例:
<?xml version="1.0" encoding="GBK" standalone="yes" ?>
<metalib name="table_test" tagsetversion="1" version="1">
<struct name="test" version="1" splittablekey="gameid" primarykey="gameid,itemid,name">
<entry name="gameid" type="uint" />
<entry name="itemid" type="uint" />
<entry name="name" type="string" size="5" />
<entry name="typeid" type="uint8"/>
<entry name="Data" type="tinyuint" defaultvalue="9"/>
<entry name="uname" type="string" size="5" defaultvalue="ab"/>
<index name="index_id" column="gameid" />
</struct>
</metalib>
TDR表描述文件格式说明参见TDR表文档。
4.2. List表定义说明
List表描述文件样例 下载 。
List表描述文件内容示例:
<?xml version="1.0" encoding="GBK" standalone="yes" ?>
<metalib name="table_test" tagsetversion="1" version="1">
<struct name="test" version="1" splittablekey="gameid" primarykey="gameid,itemid,name" customattr2="TableType=LIST;ListNum=3">
<entry name="gameid" type="uint" />
<entry name="itemid" type="uint" />
<entry name="name" type="string" size="5" />
<entry name="typeid" type="uint8"/>
<entry name="Data" type="tinyuint" defaultvalue="9"/>
<entry name="uname" type="string" size="5" defaultvalue="ab"/>
<index name="index_id" column="gameid" />
</struct>
</metalib>
TDR表描述文件格式说明参见TDR表文档。
通过表定义的customattr2中的TableType=LIST来标识是List表,同样通过customattr2中的ListNum属性来指定,单个List最多可以存放多少个元素。
注意:由于List表会内置一个存放List中元素序号的主键字段,因此对于用户来说,最多只能为List表定义7个主键字段。
5. 收集环境信息
使用C++ SDK时,需要用到一些环境相关参数,具体参数和收集方法见下表。
参数 | 值 | 获取方法 |
---|---|---|
目录服务器地址列表 | 获取目录服务地址列表 | |
业务ID | 获取业务ID | |
业务访问密码 | 获取业务访问密码 | |
游戏区ID | 获取游戏区ID | |
数据表名 | test |
6. 下载C++ SDK
C++ SDK发布版本说明和下载连接参见TDR表SDK下载。
7. 配置编译开发环境
环境依赖 | 版本 | 说明 |
---|---|---|
操作系统 | CentOS7 | x86体系 |
C++ | 对应版本下载SDK下载 | C++98和C++11均支持 |
GCC | 对应版本下载SDK下载 | GCC4及其以上版本均支持,按需下载,主要是abi的区别 |
gcc-c++ | 对应版本下载SDK下载 | yum install -y gcc-c++ |
Tbase | 对应版本下载SDK下载 | TDR相关依赖包 |
7.1 SDK各目录介绍
- include目录 SDK的头文件,使用SDK需要包含相应的头文件,所有的API接口均有注释,可在头文件中查看
- lib目录 SDK静态库目录,编译时需要以静态链接的方式进行链接
- example目录 包含了所有的PB和TDR表的操作示例,参见C++ SDK各接口的使用说明了解详情
- bin目录 存放的是TcaplusDB Client工具,点击链接了解使用方式
- cfg目录 存放的是TcaplusDB Client工具配套使用的,log配置文件
7.2 TDR表XML转化为C++代码
- TSF4G_HOME:指定下载的Tbase依赖库的路径,该路径的tools目录下有tdr工具,使用工具转换数据库表为C++代码
${TSF4G_HOME}/tools/tdr --xml2h -o table_test.h table_test.xml ${TSF4G_HOME}/tools/tdr --xml2c -o table_test.cpp table_test.xml
7.3 编译
每个example下均有makefile文件,该文件使用了TSF4G_HOME和TCAPLUS_HOME两个环境变量:
- TSF4G_HOME:指定下载的Tbase依赖库的路径
- TCAPLUS_HOME:指定下载的Tcaplus SDK库的路径
这两个环境变量在example目录下的envcfg.env文件中有设置,可以修改该文件指定正确的路径,然后source envcfg.env
# ================================================================
#Makefile for tcaplus example
#
# Date: 2016-09-14
#
# Copyright (C) 2016 Architechure IRED TENCENT
#
# ================================================================
CPPFILE=$(wildcard *.cpp)
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
.PHONY: all clean
all:
g++ -o mytest $(CPPFILE) $(INC) ${LIBS}
clean:
rm -f mytest mytest.log*
8. 使用C++ SDK
参见C++ SDK各接口的使用说明
9. 常见问题
使用C++ SDK的过程中,有疑问(如查看SDK版本,配置SDK日志打印,升级SDK等),或者遇到报错,可参考“常见问题”和“错误码含义和处理方法”进行处理。
常见问题文档;
错误码含义和处理方法文档。