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

云数据库 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)维表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值