【TcaplusDB知识库】C++快速上手PB表的增删查改操作
2021/11/24 11:10:02
本文主要是介绍【TcaplusDB知识库】C++快速上手PB表的增删查改操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【TcaplusDB知识库】C++快速上手PB表的增删查改操作
PROTOBUF 说明
PB (PROTO) 表是基于 PROTOBUF 协议设计的 TcaplusDB 表,PROTOBUF 协议是 Google 开源的通用 RPC 通信协议,用于 TcaplusDB 存储数据的序列化、反序列化等操作,具体关于 PROTO 表的定义说明可参考章节:表定义语言(PB, TDR)。PROTO 表定义以 protobuf 格式来定义表结构,支持丰富的数据类型, 可参考 protobuf 支持的类型。
入门
快速入手 PROTOBUF 协议表的开发涉及几个步骤,下面介绍如何基于 TcalusDB 的腾讯云环境或本地 Docker 版环境,快速上手基于 C++ 进行 PROTO 表的增删查改操作。所有操作均在申请的开发测试机或云主机进行。
环境要求
SDK 部署环境要求
-
机器配置: 建议 2c4g, Centos7 64bit, 腾讯云 CVM
-
GCC 版本: 4.8.5 以上
-
protobuf 版本: 3.5.0 以上
-
TcaplusDB SDK 版本 : 3.46.0 以上
其它要求 (非必须)
TcaplusDB 除了腾讯云环境,也支持本地版环境.本地环境主要用于开发调试. 对于本地版环境,需要额外部署 docker 环境. 具体请参考资料:[Linux] TcaplusDB Local版部署。
如果是基于 Docker 本地版进行 SDK 调试, 可以参考上述链接文档进行相关操作. TcaplusDB 还提供了 tcapluscli 工具进行相关资源操作, 如资源创建,删除,查看. 具体可查阅:TcaplusDB CLI工具.
SDK 依赖安装
系统依赖库安装
SDK 依赖一些系统库,主要如下:
-
autoconf
-
automake
-
libtool
-
curl
-
make
-
g++
-
unzip
-
gcc-c++
-
openssl
-
openssl-devel
-
zlib-devel
可通过 yum 一建安装:
yum install -y autoconf automake libtool curl make g++ unzip gcc-c++ openssl openssl-devel zlib-devel
依赖安装完后,有一些 lib 需要手动创建一下软链:
cd /usr/lib64 #查看当前libcrypto.so前缀库名 ls libcrypto.so.* #以libcrypto.so.1.0.2k举例,将此so建软链 ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so
protobuf 安装
需要下载源码编译安装,或安装已经编译好的 protobuf. 版本要求:3.5.0以上
. 下载地址: protobuf-cpp-3.5.0.tar.gz. 具体源码编译安装步骤:
./configure --prefix=/usr/local/protobuf make make check make install
注:如果编译过程有问题,一般是少系统库问题,可参阅网上资料解决.
安装完后, 可测试是否 ok. 进/usr/local/protocbuf/bin 目录,执行:
./protoc --version # 显示版本号 libprotoc 3.5.0
SDK 安装
下载 TcaplusDB C++ PB SDK. 下载方式: TcaplusPbApi3.46.0.
TcaplusDB 资源准备
TcaplusDB 表准备
准备 PROTO 表示例文件
这里以示例中的 game_players.proto 举例,表名: tb_online
, 表类型: GENERIC
。文件具体内容如下:
syntax = "proto3"; package myTcaplusTable; //import tcaplusdb extensions import "tcaplusservice.optionv1.proto"; message tb_online { //define primary key option(tcaplusservice.tcaplus_primary_key) = "openid,tconndid,timekey"; //primary key fields int32 openid = 1; //QQ Uin int32 tconndid = 2; string timekey = 3; //non-primary key fields string gamesvrid = 4; int32 logintime = 5 ; repeated int64 lockid = 6; pay_info pay = 7; message pay_info { uint64 total_money = 1; uint64 pay_times = 2; } map<string, pay_info> projects = 8; }
将上述文件内容保存为table_test.proto
。
TcaplusDB 表创建-OMS
步骤 1-集群创建
参考, 新增业务新增集群cluster
步骤 2-表格组创建
参考, 新建游戏区新建表格组tablegroup
步骤 3-表创建
参考, 新建表
TcaplusDB 表创建-Docker 环境
对于需要本地开发调试的用户,TcaplusDB 也提供 docker 环境进行示例操作.
步骤 1-获取集群信息
查看 PROTO 集群(业务)信息. 对于 Docker 本地版,集群已经默认创建好一个供大家使用,所以不用再创建集群。对于 PROTO 集群,已经默认创建一个pb_app
的业务,集群接入 ID (AccessID) 默认为3
。
步骤 2-获取表格组信息
查看表格组(游戏区)信息. 对于 Docker 本地版, 已经默认在pb_app
集群(业务)下创建了一个表格组(游戏区), 默认 ID 为1
. 如果用户想自行创建, 可参考TcaplusDB CLI工具, 手册中有描述如何创建表格组.
步骤 3-创建表
创建表. 针对上述示例 proto 表定义文件 table_test.proto. 用 tcapluscli 工具进行创建.
#查看表创建命令提示帮助 ./tcapluscli table -h #创建一个表, 指定endpoint-url, 表格组id: group-id, 表类型: PROTO, 表定义文件:table_test.proto, 放当前路径, 如果用户自行创建了表格组,则group-id替换为自己创建的id即可 ./tcapluscli table create create --endpoint-url=http://localhost --access-id=3 --group-id=1 --schema-type=PROTO --schema-file=table_test.proto
备注:如果表创建提示失败, 一般有几类原因:
-
Error1: 集群 access-id 出错, 默认为 3, 填其它如果未创建有问题
-
Error2: 表格组 group-id 出错, 默认为 1, 如果用户自己创建了表格组,这里需要替换为自己创建的表格组 id
-
Error3: schema-type 出错, 业务默认为 PROTO, 如果填其它则报错
-
Error4: schema-file 出错, 可能找不到 shcema file, 建议把 proto 文件放在和 tcapluscli 同目录下
示例代码
以 C++ 示例代码为例,介绍如何使用 PROTOBUF 接口进行 TcaplusDB 表数据操作,这里主要介绍 Generic 类型表操作。
步骤 1-SDK 下载
参考上述 SDK 下载部分. 解压 SDK 到机器对应目录.
cd /root tar zxvf TcaplusPbApi3.46.0.199033.x86_64_release_20201210.tar.gz
步骤 2-集群连接信息获取
示例代码中涉及连接 TcalusDB 部分, 连接信息配置在 SDK 目录:
/root/TcaplusPbApi3.46.0.199033.x86_64_release_20201210/release/x86_64/examples/tcaplus/C++_common_for_pb2/common.h
修改配置信息如下:
/*********************测试例子前需要用户手动修改的地方BEGIN**************************************/ // 目标业务的tcapdir地址, 即集群地址, 获取方式, 腾讯云参考: https://cloud.tencent.com/document/product/596/31652, docker环境: ip (docerk机器ip):9999 static const char DIR_URL_ARRAY[][TCAPLUS_MAX_STRING_LENGTH] = { "tcp://172.17.32.17:9999", }; // 目标业务的tcapdir 地址个数, 默认1个 static const int32_t DIR_URL_COUNT = 1; // 目标业务的表名 static const char * TABLE_NAME = "tb_online"; // 目标业务的App ID, 即集群接入ID, 腾讯云参考: https://cloud.tencent.com/document/product/596/31652, docker环境: 3 (默认proto业务) static const int32_t APP_ID = 70; // 目标业务的Zone ID, 表格组id, 腾讯云参考: https://cloud.tencent.com/document/product/596/31652, docker环境: 1 (默认1, 也可自行创建) static const int32_t ZONE_ID = 1; // 目标业务的业务密码, 腾讯云参考: https://cloud.tencent.com/document/product/596/31652, docker环境: 进web控制台,业务管理->业务维护->选中pb_app业务,查看密码 static const char * SIGNATURE = "Tcaplus@2020"; /*********************测试例子前需要用户手动修改的地方END**************************************/
步骤 3-配置环境变量
以 SDK 中如下目录示例举例:
#pb3协议, add操作 /root/TcaplusPbApi3.46.0.199033.x86_64_release_20201210/release/x86_64/examples/tcaplus/C++_pb3_coroutine_simpletable/SingleOperation/add
-
envcfg.env: 配置 PROTOBUF_HOME 和 TCAPLUS_HOME 环境变量
export PROTOBUF_HOME=/usr/local/protobuf; export TCAPLUS_HOME=/root/TcaplusPbApi3.46.0.199033.x86_64_release_20201210/release/x86_64/;
步骤 4-生成表接口定义代码
-
示例目录
cd /root/TcaplusPbApi3.46.0.199033.x86_64_release_20201210/release/x86_64/examples/tcaplus/C++_pb3_coroutine_simpletable/SingleOperation/add
-
生成接口定义
sh conv.sh
步骤 5-修改 Makefile
示例:
# ================================================================ #Makefile for tcaplus example # # Date: 2016-09-14 # # Copyright (C) 2016 Architechure IRED TENCENT # # ================================================================ CPPFILE=$(wildcard *.cpp) CCFILE=$(wildcard *.cc) #GENERATE_FILE=$(shell ./conv.sh ) # ${PROTOBUF_HOME} change to ${PROTOBUF_HOME}/lib LIBS += -L $(PROTOBUF_HOME)/lib -L$(TCAPLUS_HOME)/lib -Wl,-Bstatic -ltcaplusprotobufapi -lprotobuf -lscew -lexpat -Wl,-Bdynamic -lpthread -lz -ldl -lcrypto -lanl # ${PROTOBUF_HOME} change to ${PROTOBUF_HOME}/include INC =-I$(PROTOBUF_HOME)/include -I$(TCAPLUS_HOME)/include/tcaplus_pb_api/ -I../../../C++_common_for_pb2 .PHONY: all clean all: g++ -o mytest $(CCFILE) $(CPPFILE) $(INC) ${LIBS} clean: rm -f mytest mytest.log*
步骤 6-执行示例
./mytest
步骤 7-查看插入数据
TcaplusDB 提供有 tcaplus_client 工具进行数据查看, 在 SDK 目录下有对应的tcaplus_client
. 具体使用参考:TcaplusDB Client.
cd /root/TcaplusPbApi3.46.0.199033.x86_64_release_20201210/release/x86_64/bin #demo connect, -a: access-id/appid, -z: tablegroup-id/zone-id, -s: password, -d: connect address ./tcaplus_client -a 3 -z 1 -s ABCDEFEFEF -d 172.17.12.1:9999 #demo select, specify primary key of table select * from tb_online where openid=1 and tconndid=2 and timekey='12345';
备注: tcaplus_client 和 tcapluscli 的区别是: tcaplus_client 主要是数据层的操作工具( 如数据的增删查改), tcapluscli 主要是资源层的操作(如表/表格组/集群的创建,删除,查询)TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。
这篇关于【TcaplusDB知识库】C++快速上手PB表的增删查改操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享
- 2024-12-25flutter项目 as提示Cannot resolve symbol 'embedding'提示什么意思?-icode9专业技术文章分享
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享