热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Tcaplus使用总结

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Tcaplus使用总结相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Tcaplus使用总结相关的知识,希望对你有一定的参考价值。






一、Tcaplus是什么?

游戏数据库 TcaplusDB 是专为游戏设计的 NoSQL 分布式数据存储服务,支持 Protobuf 接口访问,Tcaplus 将 Cache 与硬盘结合,追求高性能的同时,也节省成本,很好地支持全区全服和分区分服,并针对游戏爆发增长和长尾运维特点提供不停机扩缩容、备份容灾、快速回档等全套解决方案,安全可信赖。目前应用于《王者荣耀》、《穿越火线》、《火影忍者》等数百款流行游戏。


二、使用步骤

特别要注意的是,在购买时,连接协议里选择TDR,这样就支持xml表定义了。


如何定义表


<metalib name&#61;"demo_table" tagsetversion&#61;"1" version&#61;"1">
<struct name&#61;"user" version&#61;"1" primarykey&#61;"user_id,server_id" splittablekey&#61;"user_id">
<entry name&#61;"user_id" type&#61;"string" size&#61;"450" desc&#61;"用户ID"/>
<entry name&#61;"server_id" type&#61;"uint64" desc&#61;"服务器ID" />
<entry name&#61;"nick_name" type&#61;"string" size&#61;"50" desc&#61;"昵称"/>
<entry name&#61;"desc" type&#61;"string" size&#61;"1024" desc&#61;"描述信息"/>
<entry name&#61;"state" type&#61;"Tinyuint" defaultvalue&#61;"0" desc&#61;"用户状态 0 : AVALIABLE, 1 DELETED"/>
<index name&#61;"index1" column&#61;"user_id"/>
<index name&#61;"index2" column&#61;"user_id,server_id"/>
struct>
<struct name&#61;"mail" version&#61;"1" primarykey&#61;"user_id,server_id,mail_id" splittablekey&#61;"user_id" >
<entry name&#61;"user_id" type&#61;"string" size&#61;"50" desc&#61;"用户ID"/>
<entry name&#61;"server_id" type&#61;"uint64" desc&#61;"服务器ID" />
<entry name&#61;"mail_id" type&#61;"uint64" desc&#61;"邮件ID" />
<entry name&#61;"state" type&#61;"Tinyuint" defaultvalue&#61;"0" desc&#61;"邮件状态(0 未读/1 已读)"/>
<entry name&#61;"from" type&#61;"string" size&#61;"50" desc&#61;"邮件发送方名字"/>
<entry name&#61;"subject" type&#61;"string" size&#61;"100" desc&#61;"邮件标题"/>
<entry name&#61;"content" type&#61;"string" size&#61;"1024" desc&#61;"邮件正文"/>
<index name&#61;"index1" column&#61;"user_id"/>
<index name&#61;"index2" column&#61;"user_id,server_id"/>
<index name&#61;"index3" column&#61;"user_id,mail_id"/>
struct>
<struct name&#61;"server" version&#61;"1" primarykey&#61;"server_id" splittablekey&#61;"server_id" >
<entry name&#61;"server_id" type&#61;"uint64" desc&#61;"服务器ID" />
<entry name&#61;"server_name" type&#61;"string" size&#61;"50" desc&#61;"服务器名称"/>
<entry name&#61;"capacity" type&#61;"uint64" desc&#61;"服务器最大承载容量"/>
<entry name&#61;"desc" type&#61;"string" size&#61;"1024" desc&#61;"描述信息"/>
<entry name&#61;"state" type&#61;"Tinyuint" defaultvalue&#61;"0" desc&#61;"server状态 0 : AVALIABLE, 1 DELETED"/>
<index name&#61;"index1" column&#61;"server_id"/>
struct>

metalib>

通过 client 工具访问 TcaplusDB 数据

1.tcaplus_client 是一个 TcaplusDB 表访问的客户端工具&#xff0c;可通过下表中的下载链接进行下载&#xff0c;Linux x86_64 平台的 TcaplusServiceAPI 发布包包含64位 Linux 版本的 tcaplus_client 工具&#xff1a;


版本发布时间操作系统下载包名
3.46.0.1990332020/12/28Linux x86_64下载

2.下载完成 TcaplusServiceApi 安装包后&#xff0c;将其 通过上传工具 上传至与 TcaplusDB 集群同一VPC&#xff0c;同一子网的云服务器中&#xff0c;然后解压。

tar -xf TcaplusPbApi3.46.0.199033.x86_64_release_20201210.tar.gz -C tcaplus

解压完成后&#xff0c;进入至 tcaplus 的 bin 目录中&#xff0c;并赋予可执行权限&#xff1a;

cd tcaplus/release/x86_64/bin
chmod &#43;x tcaplus_client

直接执行./tcaplus_client命令&#xff0c;会提示连接数据库所需的参数信息&#xff0c;用户可以根据自己的集群信息进行填写


参数说明是否必填
-a接入 ID
-z表格组 ID
-s集群密码
-d集群 IP 地址及端口
-e需要执行的 SQL 语句&#xff0c;需要双引号包含

./tcaplus_client -a 15 -z 1 -s "ooxx" -d 172.16.0.7:9999

返回结果

&#61;&#61;&#61;&#61;&#61;&#61; Welcome to use tcaplus_client, use "help" to show usage &#61;&#61;&#61;&#61;&#61;&#61;
tcaplus> help;
--------------------------------------------------------------------------------
help: show usage of commands, example: "help select;".
show: get server status related information. executing "help show;" for details.
exit/quit: exit the client.
count: print record number in the database.
desc: print table field name and type.
select: query records from database.
insert: insert a new record into database.
replace: replace a record into the database.
update: update a record in the database.
delete: delete record(s) from database.
dump: dump records from database.
load: load records into the database.
--------------------------------------------------------------------------------

查看数据库集群状态

tcaplus> show status;
------------------------------------------------------------------
Access_id(app_id) &#61; 15
------------------------------------------------------------------
TableGroup_id(zone_id) &#61; 1
------------------------------------------------------------------
[dir_server_url]
dir_server_url[0]: 172.16.0.7:9999
------------------------------------------------------------------
[Proxys]
proxy[0]:tcp://172.16.0.7:10001 CONNECTED Authened
proxy[1]:tcp://172.16.0.7:10002 CONNECTED Authened
------------------------------------------------------------------
[The connected dir server]
tcp://172.16.0.7:9999
------------------------------------------------------------------

查看所有表

tcaplus> show tables;
----------------------------------------------------------
| Table Name Type Protocol |
----------------------------------------------------------
| server GENERIC TDR |
| user GENERIC TDR |
| mail GENERIC TDR |
----------------------------------------------------------

查看表结构

tcaplus> desc mail;
Table Structure From: Tcaplus System
TableName: mail
TableType: GENERIC, IdlType: TDRXML
SvrTdrCurrentVersion: 1
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|Field |Type |Key |Index|Size|Version|DefaultValue|Count|Select|Desc |
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|user_id |string|PRI,SPLT|- |50 |1 |- |1 |- |用户ID |
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|server_id|uint64|PRI |- |8 |1 |- |1 |- |服务器ID |
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|mail_id |uint64|PRI |- |8 |1 |- |1 |- |邮件ID |
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|state |uint8 |- |- |1 |1 |0 |1 |- |邮件状态(0 未读/1 已读)|
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|from |string|- |- |50 |1 |- |1 |- |邮件发送方名字 |
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|subject |string|- |- |100 |1 |- |1 |- |邮件标题 |
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
|content |string|- |- |1024|1 |- |1 |- |邮件正文 |
&#43;---------&#43;------&#43;--------&#43;-----&#43;----&#43;-------&#43;------------&#43;-----&#43;------&#43;-----------------------&#43;
7 rows in set (113 us)

插入&#xff1a;

tcaplus> insert into mail (user_id, server_id, mail_id, state,from,subject,content) values ("10001",1,202106301221,0,"系统","新手邮件","欢迎你&#xff0c;来到我们的虚拟世界");
insert success
insert time: 6427 us

查询表格的记录总数

tcaplus> count mail;
--------------------------------------------------------------------------------
| TableName Count |
--------------------------------------------------------------------------------
| mail 1 |
--------------------------------------------------------------------------------

查询&#xff1a;

tcaplus> select * from mail where user_id &#61; "10001" and server_id &#61; 1;
&#43;-------&#43;---------&#43;------------&#43;-----&#43;------&#43;----------&#43;----------------------------&#43;
|user_id|server_id|mail_id |state|from |subject |content |
&#43;-------&#43;---------&#43;------------&#43;-----&#43;------&#43;----------&#43;----------------------------&#43;
|"10001"|1 |202106301221|0 |"系统"|"新手邮件"|"欢迎你&#xff0c;来到我们的虚拟世界"|
&#43;-------&#43;---------&#43;------------&#43;-----&#43;------&#43;----------&#43;----------------------------&#43;
1 records selected, select time: 41306 us

如果要列显示&#xff1a;

tcaplus> select * from mail where user_id &#61; "10001" \\G;
user_id: "10001"
server_id: 1
mail_id: 202106301221
state: 0
from: "系统"
subject: "新手邮件"
content: "欢迎你&#xff0c;来到我们的虚拟世界"
1 records selected, select time: 5450 us

更新&#xff1a;

tcaplus> update mail set state &#61; 1, from &#61; "系统2" where user_id &#61; "10001" and server_id &#61; 1 and mail_id&#61;202106301221;
update success
update time: 7497 us

删除&#xff1a;

tcaplus> delete from mail where user_id &#61; "10001" and server_id &#61; 1 and mail_id&#61;202106301221;
delete success
delete time: 5367 us

如果要通过部分key 删除符合条件的记录&#xff0c;如下使用&#xff1a;

tcaplus> delete from mail where user_id &#61; "10001" and server_id &#61; 1 by partkey;
delete success
delete time: 8567 us

导出

tcaplus> dump * into mail.txt from mail limit 10;

会导出到本目录下&#xff0c;打开后&#xff0c;内容如下&#xff1a;

[root&#64;VM_0_13_centos bin]# cat mail.txt
user_id,server_id,mail_id,state,from,subject,content
"10001",1,202106301221,0,"系统","新手邮件","欢迎你&#xff0c;来到我们的虚拟世界"

导入

tcaplus> load mail infile mail.txt;
loaded 1 records successful

索引查询
当开启全局索引功能后&#xff0c;TcaplusDB 将支持按照普通字段查询&#xff0c;查询条件中的字段必须是建立了全局索引的字段。
如果是聚合查询&#xff0c;那么聚合查询的字段也必须是建立了全局索引的字段。
一个索引查询请求&#xff0c;最多返回3000条记录。

支持的查询语句
条件查询
支持&#61;, >, >&#61;, <, <&#61;, !&#61;, between, in, not in, like, not like, and, or
聚合查询
当前支持的聚合查询包括&#xff1a;sum, count, max, min, avg&#xff0c;如&#xff1a;

以下两个指令要等到3.51.0才能支持
设置生命周期
毫秒级别

tcaplus> setttl mail ttl&#61;60000 where user_id &#61; "10001" and server_id &#61; 1 and mail_id&#61;"202106301221";

读取生命周期

tcaplus> getttl from mail where user_id &#61; "10001" and server_id &#61; 1 and mail_id&#61;"202106301221";

退出

tcaplus> exit

当你不知道某个指令如何使用时&#xff0c;可以用help 前缀看帮助内容&#xff1a;

help select

参考链接&#xff1a;游戏数据库TcaplusDB


总结

TcaplusDB是腾讯出品的分布式NoSQL数据库&#xff0c;存储和调度的代码完全自研。具备缓存&#43;落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。






推荐阅读
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 本文介绍了如何将包含复杂对象的字典保存到文件,并从文件中读取这些字典。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • com.hazelcast.config.MapConfig.isStatisticsEnabled()方法的使用及代码示例 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 本文详细解析了一种实用的函数,用于从URL中提取查询参数。该函数通过处理URL中的搜索部分,能够高效地获取并解析出所需的参数值,适用于各种Web开发场景。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
author-avatar
被爱的超萌baby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有