当前位置:网站首页>【深入理解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;
边栏推荐
猜你喜欢

3D打印机耗材受潮

0.0 - how can SolidWorks be uninstalled cleanly?

1.2----- mechanical design tools (CAD software) and hardware design tools (EDA software) and comparison

1.3-----Simplify 3D切片软件简单设置

Altium Designer中off grid pin解决方法

Follow up course supplement of little turtle teacher "take you to learn C and take you to fly"

Recommend an anatomy website

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

Solution de pin hors grille dans altium designer

详解openGauss多线程架构启动过程
随机推荐
【深入理解TcaplusDB技术】TcaplusDB常规单据
Definitions and terms of drawings
Comparison of NAND flash particles SLC, MLC, TLC and QLC
University of Calgary | recommendation system based on Reinforcement Learning
calendar控件编程
510000 prize pool invites you to join the war! The second Alibaba cloud ECS cloudbuild developer competition is coming
从11小时到25秒--还有优化空间吗?
C WinForm embedded flash
Focal and global knowledge distillation for detectors
1.3-----Simplify 3D切片软件简单设置
MySQL多表操作
0816飞达的缺点(改进方向)
lua--迭代器、模块、元表
华为云招募工业智能领域合作伙伴,强力扶持+商业变现
记可视化项目代码设计的心路历程以及理解
3D打印机耗材受潮
【深入理解TcaplusDB技术】集群管理操作
Velocity 语法
卡尔加里大学|基于强化学习的推荐系统综述
Velocity syntax