drds基础积累-创建表

场景:
        基础知识积累与查询
目的:
        从应用角度:基础知识积累,便于后续查询,由于互联网产品更新迭代非常快,记录的知识可能只适合当下一段时间,
        所以,应当查询官网www.aliyun.com最新最权威文档.
        从开发角度:目前本人水准并不能真正理解分库分表具体实现细节,记录此方便后续理解.
1.概念
        RDS 关系型数据库服务(elational Database Service).
        DRDS 分布式关系型数据库服务(Distributed Relational Database Service).
        DRDS是一款基于MySQL存储、采用分库分表技术进行水平扩展的分布式OLTP数据库服务产品,支持 RDS for MySQL以及POLARDB for MySQL,
        产品目标旨在提升数据存储容量、并发吞吐、复杂计算效率三个方面的扩展性需求.
2.从应用角度理解
        drds是管理RDS关系型数据库服务的中间件,本例中场景就是drds管理底层多个rds即底层的mysql数据库,实现海量数据场景下,分库,分表等功能.
3.本例场景:
        用户操作drds,操作的sql和mysql语法兼容,即几乎都是mysql语句在操作drds,drds后台管理10个rds即10个分库,或者说10个独立的mysql数据库.
        本例分库使用region_no作为分库字段,使用data_date作为分表字段.
        调用:应用编写mysql语法的sql操作drds,drds根据自身策略(包括分库分表技术),将sql落实到具体底层mysql数据库,并组装返回用户需要结果,
         对用户而言,逻辑上就像只操作了一个普通mysql数据库.
4.单库表
         建表后,表只落在一个指定的单库上.

CREATE TABLE `D_LOG_INFO` (
  `task_id` BIGINT (16) NOT NULL COMMENT '任务标识',
  `begin_time` DATETIME DEFAULT NULL COMMENT '记录任务开始时间',
  `end_time` DATETIME DEFAULT NULL COMMENT '记录任务结束时间',
  `flag` VARCHAR (16) COLLATE utf8_bin DEFAULT NULL COMMENT '执行标志 0:失败、1:成功',
  `fail_info` VARCHAR (512) COLLATE utf8_bin DEFAULT NULL COMMENT '记录任务失败信息',
  `data_count` BIGINT (16) COMMENT '记录数据条数',
  `table_name` VARCHAR (128) COLLATE utf8_bin DEFAULT NULL COMMENT '本次任务操作表名',
  PRIMARY KEY (task_id)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '任务日志信息';

5.全局表(广播表)
       建表后,表会落盘到每个分库上,每个分库上数据是相同的,此适合小表,比如配置信息或者标准代码.

CREATE TABLE `D_STANDARD_CODE` (
  `id` VARCHAR (32) COLLATE utf8_bin NOT NULL COMMENT 'id',
  `code_value` VARCHAR (64) COLLATE utf8_bin NOT NULL COMMENT '标准代码值',
  `code_name` VARCHAR (256) COLLATE utf8_bin NOT NULL COMMENT '标准代码名称',
  PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '系统标准代码表' broadcast;

6.分库表
       建表后,每个分库上会有一个表,分库上表数据是独立的.

CREATE TABLE `SENSOR_COLLECT_DATA` (
  `sensor_id` BIGINT (16) NOT NULL '数据id实体唯一标识',
  `data_date` DATE NOT NULL COMMENT COMMENT '数据日期',
  `data_type` VARCHAR (8) COLLATE utf8_bin NOT NULL COMMENT '数据类型(1:温度、2:湿度)',
  `region_no` VARCHAR (32) COLLATE utf8_bin COMMENT '传感器安装区域',
  `s1` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值1',
  `s2` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值2',
  `s3` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值3',
  `s4` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值4',
  `s5` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值5',
  `s6` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值6',
  `s7` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值7',
  `s8` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值8',
  `s9` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值9',
  `s10` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值10',
  `s11` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值11',
  `s12` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值12',
  PRIMARY KEY (`sensor_id`,`DATA_DATE`,`DATA_TYPE`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '传感器采集数据' dbpartition BY HASH (`region_no`);

7.分库分表
       建表后,根据指定分库字段进行分库,根据指定分表字段进行分表.

CREATE TABLE `SENSOR_COLLECT_DATA` (
  `sensor_id` BIGINT (16) NOT NULL '数据id实体唯一标识',
  `data_date` DATE NOT NULL COMMENT COMMENT '数据日期',
  `data_type` VARCHAR (8) COLLATE utf8_bin NOT NULL COMMENT '数据类型(1:温度、2:湿度)',
  `region_no` VARCHAR (32) COLLATE utf8_bin COMMENT '传感器安装区域',
  `s1` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值1',
  `s2` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值2',
  `s3` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值3',
  `s4` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值4',
  `s5` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值5',
  `s6` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值6',
  `s7` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值7',
  `s8` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值8',
  `s9` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值9',
  `s10` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值10',
  `s11` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值11',
  `s12` DECIMAL (12, 5) DEFAULT NULL COMMENT '传感器采集的值12',
  PRIMARY KEY (`sensor_id`,`DATA_DATE`,`DATA_TYPE`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '传感器采集数据' dbpartition BY HASH (`region_no`) tbpartition BY MMDD(`data_date`) tbpartitions 365;

以上,感谢.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值