多语言展示
当前在线:932今日阅读:126今日分享:42

华为云分布式数据库 DDM 如何创建逻辑表

本文重点介绍购买华为云分布式数据库后,怎么在管理控制台,通过配置参数和建表SQL语句创建逻辑(语句兼容MySQL)。0华为云DDM服务如何创建逻辑库
工具/原料
1

已登录华为云DDM管理控制台。

2

创建逻辑表之前需要先创建逻辑并且关联华为云RDS实例。

3

一个DDM实例下可以创建高达3000张表。

方法/步骤
1

在管理控制台左侧菜单栏选择“DDM实例管理”,进入“DDM实例管理”页面。

2

单击DDM实例名称,进入实例基本信息页面。

3

在实例基本信息页面,选择“逻辑库管理”选项卡,查看DDM实例逻辑库。找到需要新增逻辑表的逻辑库,单击逻辑库右侧的“创建逻辑表”,进入“创建逻辑表”页面。

4

配置逻辑表参数。逻辑表类型:分片表。“分片表”模式下,逻辑表的数据将被按照拆分规则,分到各个分片中存储。全局表。每一个分片上存储全量的数据。拆分算法:拆分规则对分片表适用。将逻辑表中数据拆分到多个数据库分片上的算法。Hash:数据分布比较均匀。Range:适合范围类操作较多的场景。算法元数据:该参数仅当“拆分算法”为“Range”时有效。用于定义数据库分片对应的数据拆分规则,格式如下:算法元数据定义格式:取值范围=分片序号。取值范围定义格式:起始值-结束值。起始值、结束值为非负整数,对应拆分键的一段取值范围,通过中横线连接。取值范围为双闭区间即包括起始值、结束值。取值范围不能有交集。分片序号与数据库分片名称中的后缀数字对应,最小值为0,最大值为逻辑库分片数减1,例如分片db_test_0000对应的分片序号是0。对应同一分片的多个取值范围可以写在一行,逗号分隔,也可以分成多行描述。支持以#或//开头的注释。示例:# range start-end ,data node index// comment0-100,101-300,301,302-500=0600-700=1 //取值范围(起始值-结束值)=分片序号701-800=1801-900=2默认分片:“拆分键”取值不在“算法元数据”定义范围内的记录,保存到默认分片。分片序号与数据库分片名称后缀的数字对应,最小值为0,最大取值为逻辑库分片数减1。拆分键:根据何种条件进行拆分,仅当“逻辑表类型”为“分片表”时该参数有效。拆分键即在水平拆分过程中用于执行拆分算法的数据表字段,指定数据表字段后,还可以进一步选择日期函数,也可以手动输入“日期函数(字段名)”,数据表字段必须是日期类型(date、datetime、timestamp),日期函数适用于需要按时间(年、月、日、周及其组合)对数据进行拆分的场景。日期函数拆分算法取值如下:1.日期函数返回类型为数字型的,支持Hash、Range拆分算法:   -day:每月中的第几天,取值为1-31。   -year:年份,如2018。month:月份,取值为1-12。   -weekofyear:每年内第几周,取值为1-53。关于周的定义请参见MySQL官      网weekofyear函数或ISO标准(ISO8601 week algorithm)。例如 2016-0      1-01是2015年的第53周,2016-01-04才是2016年的第1周   -dayofyear:每年中的第几天,1-366。   -dayofweek:星期几,取值为1-7(1=周日、2=周一...)。   -yyyymm:年月,如201801、201812。   -yyyyweek:年周,如201801、201853。关于年份、周数的定义与weekofy  ear的说明相同。   -yyyyddd:年日,如2018001、2018365。2.日期函数返回类型为字符串型的,只支持Hash拆分算法,不支持range拆分算法:   -mmdd:月日,如0101、1231。 说明:拆分键输入框可以输入分片字段的名 称,也可以输入日期函数和分片字段的组合全局序列:无:不使用全局序列。TIME:使用DDM服务器时间戳作为全局序列ID。DB:从数据库获取序列号作为全局序列ID。设置序列起始值和序列步长,序列步长为单次从数据库获取的序列号数量。例如:“序列起始值”为1,“序列步长”为500,则第一次从数据库获取500个序列号,获取的id为1~1,id使用完后,再按顺序获取接下来的500个序列号。建表SQL:用于创建逻辑表的SQL语句。当“全局序列”设置为“DB”或者“TIME”时,建表SQL中必须存在主键,且主键必须指定为AUTO_INCREMENT属性。如果设置为“TIME”,主键必须为BIGINT类型。建表SQL如下:CREATE TABLE `staff_info` (  `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,  `staffName` VARCHAR(40) NOT NULL,  `sex` ENUM('F','M','S'),  `phone` VARCHAR(16),  `email`  VARCHAR(40),  `employedDate`  DATE,  `department`  VARCHAR(40) ) ENGINE=INNODB AUTO_INCREMENT=1000  DEFAULT CHARSET=utf8;主键id被定为AUTO_INCREMENT属性后,插入数据时会被赋予一个唯一值,不需要在SQL中指定。对应的数据插入举例如下:INSERT INTO staff_info (staffName,sex,phone,email,employedDate,department)   VALUES ('Bill','S','','Bill@ddm.example.com','2017-01-01','Depart.A');说明:1.一次只能创建一张逻辑表。不支持同时执行多条建表SQL,即使拆分键名称完全相同。2.只支持填写一条建表SQL语句,不支持执行除创建逻辑表以外的其他DDL、DML语句,比如ALTER TABLE之类的语法。3.创建“全局序列”为“DB”或者“TIME”的表之后,用MySQL连接DDM插入数据时:   -建议不要给主键ID赋值,否则可能导致数据插入失败。   -如需给主键ID赋值,建议取值与“全局序列”的取值范围区分开,否则可能      会导致全局序列生成的主键ID值重复而引起插入失败。4.建表SQL兼容MySQL注释规范。5.建议不要在SQL语句中包含注释。

5

单击“确定”,开始创建逻辑表。如果选择“覆盖RDS分片上残留的同名数据表”,则会先删除RDS分片上残留的同名数据表,再创建新的同名逻辑表。可以在DDM实例管理页单击“任务进度”,查询创建逻辑表的进度。

推荐信息