当前位置:网站首页>【深入理解TcaplusDB技术】入门MySQL Driver
【深入理解TcaplusDB技术】入门MySQL Driver
2022-06-22 18:34:00 【InfoQ】
【深入理解TcaplusDB技术】入门MySQL Driver
- 支持单表的 SELECT、INSERT、DELETE、UPDATE 语句;
- SELECT、DELETE、UPDTATE 操作的 WHERE 子句中必须明确指定一个或多个主键,详见后文《SQL语法使用参考》;
- 在配置了全局索引的情况下,支持基础的聚合函数,详见后文《全局索引查询》;
- 暂不支持 prepared statement;
- 暂不支持 DDL,即 CREATE / DROP TABLE 等;
- 不支持 ORDER BY、GROUP BY;
- 不支持跨表 JOIN。
1. 客户端或驱动的版本兼容
- MySQL client 工具,5.5.24
- Python 的MySQLdb,实际底层使用 mysql c api 的 5.5.24 版本
- JDBC,mysql-connector-java-5.1.49
- .NET mysql driver 8.0.25
2. 表定义和建表
2.1 表定义
<?xml version="1.0" encoding="GBK" standalone="yes" ?>
<metalib name="demo_table" tagsetversion="1" version="1">
<struct name="user" version="1" primarykey="user_id,server_id" splittablekey="user_id">
<entry name="user_id" type="string" size="450" desc="用户ID"/>
<entry name="server_id" type="int64" desc="服务器ID" />
<entry name="nick_name" type="string" size="50" desc="昵称"/>
<entry name="desc" type="string" size="1024" desc="描述信息"/>
<entry name="state" type="Tinyuint" defaultvalue="0" desc="用户状态 0 : AVALIABLE, 1 DELETED"/>
<index name="index1" column="user_id"/>
<index name="index2" column="user_id,server_id"/>
</struct>
</metalib>
- 元素 metalib 是 xml 文件的根元素。
- 包含 primarykey 的 struct 元素是一个表,不包含 primarykey 的 struct 元素为一个普通结构体。
- 每次修改表结构时,版本属性值需要相应地加1,初始版本始终为1。
- primarykey 属性指定主键字段;对于 generic 表,您最多可以指定8个主键字段,对于 list 表,则可以指定7个。
- splittablekey 属性等效于分片键(shard key),TcaplusDB 表被拆分存储到多个存储节点。splittablekey 必须是主键字段之一,一个好的 splittablekey 应该具有高度分散性,这意味着值的范围很广,建议选用字符串类型。
- desc 属性包含当前元素的描述。
- entry 元素定义一个字段,支持的值类型包括 int32,string,char,int64,double,short 等。
- index 元素定义一个索引,该索引必须包含 splittablekey。由于可以使用主键查询表,因此索引不应与主键属性相同。
2.2 建表流程
# step0,使用上述xml格式的表定义,保存为.xml后缀的文本,如table-define.xml。
# step1,进入OMS 页面,菜单栏处打开:业务管理=〉表管理。
# step2,页面Tab栏处,选中:表添加
# step3,选中业务和集群并勾选出来的游戏区, 集群:test_set(1), 业务:tdr_app(2), 游戏区ID: 3, 再点击:批量新增表
# step4,在出来的页面中,浏览页面底部部分,点击:从本地文件中添加,在弹出的页面中选择上述资源下载的示例表定义文件:table-define.xml
# step5,点击:提交,创建示例表: demo_table
# step6,查看表是否创建ok,进入:业务管理=>表管理,选择对应的业务(tdr_app)及游戏区(3), 查看是否出现demo_table表信息
3. 快速体验
3.1 连接说明
- MySQL 的
数据库的概念对应 TcaplusDB 中一个业务的一个区,使用'appid.zoneid'作为数据库名称,如示例表所在的区是2.3。
- MySQL 客户端或驱动连接的地址是 Tcaplus Proxy 节点的 IP + 端口,可在 OMS 的
运维平台 => 集群状态页面查看 IP 和端口号。
- MySQL 第一次连接前,需创建对应的 MySQL 用户并赋予相应的权限,创建流程见下面图文指引。
'appid.zoneid'mysql_native_password3.2 体验示例(使用 mysql client)
mysql -u user_name -p user_passwd --port=15755 --host=xxx.xxx.xxx.xxx 2.3
3.3 体验示例(使用 .NET mysql driver)
public class Database
{
static MySqlConnection conn; // MySql连接
const String server = "xxx.xxx.xxx.xxx"; // 服务器地址,客户端要连接的 proxy 节点的 IP
const String port = "15755"; // 端口号,客户端要连接的 proxy 节点的 Port
const String uid = "user_name"; // 用户名
const String pw = "user_passwd"; // 密码
const String db = "2.3"; // 库名,由TcaplusDB中的业务ID和分区ID拼接而成
public static Boolean Init()
{
try
{
if (conn == null)
{
conn = new MySqlConnection("server=" + server + ";port=" + port + ";user id=" + uid + ";password=" + pw + ";database=" + db);
conn.Open();
Console.WriteLine("database connected.");
}
return true;
}
catch (Exception e)
{
Console.WriteLine("Exception caught: {0}", e);
return false;
}
}
}
4. 数据类型支持
5. SQL 语法使用参考
5.1 插入操作
INSERT INTO demo (key1,key2,key3,value1,value2) values (x1,x2,x3,x4,x5);
INSERT INTO demo (key1,key2,key3,value1,value2) values (x1,x2,x3,x4,x5); INSERT INTO demo (key1,key2,key3,value1,value2) values (x6,x7,x8,x9,x10);
5.2 where子句语法限制
WHERE key1=x1 AND key2=x2 AND key3=x3;
WHERE key1=x1 AND key2=x2 AND key3=x3 AND (过滤条件);
WHERE key1=x1 AND key2=x2;
WHERE key1=x1 AND key2=x2 AND (过滤条件);
5.3 删除操作
DELETE FROM demo WHERE key1=x1 AND key2=x2 AND key3=x3;
DELETE FROM demo WHERE key1=x1 AND key2=x2 AND key3=x3 AND (过滤条件);
DELETE FROM demo WHERE (key1=x1 AND key2=x2 AND key3=x3) OR (key1=x4 AND key2=x5 AND key3=x6);
5.4 更新操作
UPDATE demo SET value1=x1, value2=x2 WHERE key1=x1 AND key2=x2 AND key3=x3;
UPDATE demo SET value1=x1, value2=x2 WHERE key1=x1 AND key2=x2 AND key3=x3 AND (过滤条件);
UPDATE demo SET value1=x1, value2=x2 WHERE (key1=x3 AND key2=x4 AND key3=x5) OR (key1=x6 AND key2=x7 AND key3=x8);
5.5 查询操作
SELECT * FROM demo WHERE key1=x1 AND key2=x2 AND key3=x3;
SELECT * FROM demo WHERE key1=x1 AND key2=x2 AND key3=x3 AND (过滤条件);
SELECT key1,value1 FROM demo WHERE key1=x1 AND key2=x2 AND key3=x3;
SELECT key1,value1 FROM demo WHERE key1=x1 AND key2=x2 AND key3=x3 AND (过滤条件);
SELECT * FROM demo WHERE key1=x1 AND key2=x2;
SELECT * FROM demo WHERE key1=x1 AND key2=x2 AND (过滤条件);
SELECT key1,value1 FROM demo WHERE key1=x1 AND key2=x2;
SELECT key1,value1 FROM demo WHERE key1=x1 AND key2=x2 AND (过滤条件);
SELECT * FROM demo WHERE (key1=x1 AND key2=x2 AND key3=x3) OR (key1=x4 AND key2=x5 AND key3=x6);
SELECT * FROM demo WHERE (key1=x1 AND key2=x2) OR (key1=x3 AND key2=x4);
6. 全局索引查询
6.1 支持的sql查询语句
条件查询
SELECT * FROM `mail` WHERE user_id>="10004" AND server_id=100;
SELECT * FROM `mail` WHERE user_id BETWEEN 10000 AND 10003 AND server_id=100;
SELECT * FROM `mail` WHERE user_id="10000" AND server_id=100 AND mail_id LIKE "210507%";
SELECT * FROM `mail` WHERE user_id>="10004" OR server_id<=200;
分页查询
SELECT * FROM mail WHERE user_id>"10000" LIMIT 100 OFFSET 2;
聚合查询
SELECT server_id, COUNT(DISTINCT user_id), COUNT(*), SUM(state) FROM \`mail\` WHERE user_id>="10000" AND server_id=100;
select count(distinct(a)) from table where a > 1000;
边栏推荐
- 0.1----- process of drawing PCB with AD
- 希尔排序
- 【深入理解TcaplusDB技术】TcaplusDB事务管理——错误排查
- 【深入理解TcaplusDB技术】TcaplusDB 新增业务集群cluster
- 1.3----- simple setting of 3D slicing software
- Compilation error: /usr/bin/ld: /usr/local/lib/libgflags a(gflags.cc.o): relocation R_ X86_ 64_ 32S against `. rodata‘
- Calendar control programming
- 【深入理解TcaplusDB技术】TcaplusDB运维单据
- 商业智能BI数据仓库中的指标、维度和模型到底是什么?
- delegate
猜你喜欢

Comparison of NAND flash particles SLC, MLC, TLC and QLC

1.4----- PCB design? (circuit design) determination scheme

NAND闪存(NAND Flash)颗粒SLC,MLC,TLC,QLC的对比

Nlp-d57-nlp competition D26 & skimming questions D13 & reading papers & finding bugs for more than an hour

Initial experience of ABAQUS using RSG drawing plug-in

Yarn notes

Openpnp debugging ------ 0816 Feida Tui 0402 taping

Chapter I 100 hot questions (1-5)

Explain in simple terms the bloom filter

0816飞达的缺点(改进方向)
随机推荐
Recommend an anatomy website
Openpnp调试 ------ 0816飞达推0402编带
Take the file name in the zip package
【深入理解TcaplusDB技术】集群管理操作
lua--数据类型、变量、循环、函数、运算符的使用
【深入理解TcaplusDB技术】TcaplusDB运维——日常巡检
MySQL多表操作练习题
Concordia University | volume product cycle network for reward generation in reinforcement learning
1.4----- PCB design? (circuit design) determination scheme
Human pose estimation
MySQL数据库DML操作练习
1.3----- simple setting of 3D slicing software
How to use yincan IS903 to master DIY's own USB flash disk? (good items for practicing BGA welding)
Tree, forest and transformation of binary tree
.Net 5.0 通过IdentityServer4实现单点登录之oidc认证部分源码解析
51万奖池邀你参战!第二届阿里云ECS CloudBuild开发者大赛来袭
Canvas picture frame
Some problem records of openpnp using process
自定义控件AutoScaleMode为Font造成宽度增加的问题
【深入理解TcaplusDB技术】TcaplusDB机型管理