创建云数据库(RDS/DRDS)维表

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

云数据库 RDS 版

阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和高性能存储,RDS 支持 MySQL、SQL Server、PostgreSQL 和 PPAS(Postgre Plus Advanced Server,一种高度兼容 Oracle 的数据库)引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。

注意:
云数据库(RDS/DRDS)插件中的WITH参数一致,可以通用。
在使用云数据库(RDS/DRDS)作为维表时,RDS或DRDS中必须要有真实的表存在。

DDL定义

实时计算支持使用RDS/DRDS作为维表(注意:目前仅支持MySQL数据存储类型),示例代码如下。

 
 
  1. CREATE TABLE rds_dim_table(
  2. id int,
  3. len int,
  4. content VARCHAR,
  5. PRIMARY KEY (id),
  6. PERIOD FOR SYSTEM_TIME--定义维表的变化周期,表明该表是一张会变化的表。
  7. ) with (
  8. type='rds',
  9. url='jdbc:mysql:XXXXXXXXXX',
  10. tableName='test4',
  11. userName='test',
  12. password='XXXXXX'
  13. );

注意:声明一个维表时,必须要指名主键。维表JOIN的时候,ON的条件必须包含所有主键的等值条件。RDS/DRDS的主键可以定义为表的主键或是唯一索引列。

WITH参数

参数 注释说明 备注
url 地址 RDS的URL链接地址
tableName 表名
userName 用户名
password 密码
maxRetryTimes 最大尝试插入次数 可选,默认为3

Cache 参数

参数 注释说明 备注
cache 缓存策略 默认 None, 可选 LRUALL
cacheSize 缓存大小 当选择 LRU 缓存策略后,可以设置缓存大小,默认 10000 行。
cacheTTLMs 缓存超时时间,单位毫秒。 当选择 LRU 缓存策略后,可以设置缓存失效的超时时间,默认不过期。当选择 ALL 策略,则为缓存reload 的间隔时间,默认不重新加载。
cacheReloadTimeBlackList ALL Cache 时启用,更新时间黑名单,防止在此时间内做cache 更新(如双11场景)。 可选,默认空,格式为2017-10-24 14:00 -> 2017-10-24 15:00, 2017-11-10 23:30 -> 2017-11-11 08:00。用逗号(,)来分隔多个黑名单,用箭头(->)来分割黑名单的起始结束时间。

目前RDS/DRDS提供如下三种缓存策略。

  • None:无缓存。
  • LRU:最近使用策略缓存。需要配置相关参数:缓存大小(cacheSize)和 缓存超时时间(cacheTTLMs)。
  • ALL:全量缓存策略。在Job运行前会将远程表中所有数据load到内存中,之后所有的维表查询都会通过 cache进行。cache命中不到则不存在,并在缓存过期后重新加载一遍全量缓存。全量缓存策略适合远程表数据量小、miss key多的场景。全量缓存相关配置:缓存更新间隔(cacheTTLMs),更新时间黑名单(cacheReloadTimeBlackList)。

    注意:

    • 因为会异步reload,使用cache all的时候,需要将维表JOIN的节点增加一些内存,增加的内存大小为远程表两倍的数据量。
    • 使用CACHE ALL,请特别注意节点的内存,防止内存溢出。

测试案例

 
 
  1. CREATE TABLE datahub_input1 (
  2. id BIGINT,
  3. name VARCHAR,
  4. age BIGINT
  5. ) WITH (
  6. type='datahub'
  7. );
  8. create table phoneNumber(
  9. name VARCHAR,
  10. phoneNumber bigint,
  11. primary key(name),
  12. PERIOD FOR SYSTEM_TIME--定义维表的变化周期
  13. )with(
  14. type='rds'
  15. );
  16. CREATE table result_infor(
  17. id bigint,
  18. phoneNumber bigint,
  19. name VARCHAR
  20. )with(
  21. type='rds'
  22. );
  23. INSERT INTO result_infor
  24. SELECT
  25. t.id
  26. ,w.phoneNumber
  27. ,t.name
  28. FROM datahub_input1 as t
  29. JOIN phoneNumber FOR SYSTEM_TIME AS OF PROCTIME() as w --维表JOIN必须指定
  30. ON t.name = w.name;

关于维表详细语法请参见维表JOIN语法

本文转自实时计算——创建云数据库(RDS/DRDS)维表

相关实践学习
Polardb-x 弹性伸缩实验
本实验主要介绍如何对PolarDB-X进行手动收缩扩容,了解PolarDB-X 中各个节点的含义,以及如何对不同配置的PolarDB-x 进行压测。
相关文章
|
20天前
|
SQL 关系型数据库 MySQL
云数据库 RDS
以下是对四种数据库引擎的介绍
28 6
|
17天前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
40 0
|
2天前
|
SQL 关系型数据库 MySQL
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
|
2天前
|
安全 关系型数据库 MySQL
Mysql注入 -- 数据库导出及读文件
Mysql注入 -- 数据库导出及读文件
4 0
|
3天前
|
SQL 关系型数据库 MySQL
Python中的数据库操作:SQLite与MySQL的连接
Python中的数据库操作:SQLite与MySQL的连接
|
11天前
|
缓存 Cloud Native 关系型数据库
云数据仓库ADB mysql3问题之点击开启没反应如何解决
云数据仓库AnalyticDB是阿里云提供的一种高性能、弹性扩展的云原生数据仓库解决方案;本合集将深入探讨ADB的架构、性能调优、数据管理和应用场景等,以及如何解决在使用过程中可能出现的问题,提高数据仓库的使用效率。
25 2
|
13天前
|
存储 关系型数据库 数据库
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
13 1
|
16天前
|
NoSQL 关系型数据库 MySQL
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
不同系统下进行MySQL安装、MongoDB安装、Redis安装
59 5
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
|
17天前
|
关系型数据库 MySQL 数据库
MySQL员工打卡日志表——数据库练习
MySQL员工打卡日志表——数据库练习
20 0
|
17天前
|
监控 关系型数据库 MySQL
MySQL技能完整学习列表12、性能优化——1、性能指标和监控——2、优化查询和数据库结构——3、硬件和配置优化
MySQL技能完整学习列表12、性能优化——1、性能指标和监控——2、优化查询和数据库结构——3、硬件和配置优化
57 0