没有合适的资源?快使用搜索试试~ 我知道了~
数据仓库中的拉链表-Clickhouse实现.pdf
需积分: 45 72 下载量 77 浏览量
2019-08-26
19:27:45
上传
评论 1
收藏 107KB PDF 举报
温馨提示
Clickhouse是一个用于联机分析处理(OLAP)的列式数据库管理系统(columnar DBMS)。 传统数据库在数据大小比较小,索引大小适合内存,数据缓存命中率足够高的情形下能正常提供服务。但残酷的是,这种理想情形最终会随着业务的增长走到尽头,查询会变得越来越慢。你可能通过增加更多的内存,订购更快的磁盘等等来解决问题(纵向扩展),但这只是拖延解决本质问题。如果你的需求是解决怎样快速查询出结果,那么ClickHouse也许可以解决你的问题。
资源推荐
资源详情
资源评论



格式:pdf 资源大小:4.7MB 页数:26










格式:pdf 资源大小:195.8KB 页数:23














数据仓库中的拉链表(Clickhouse 实现)
前 言
拉链表是数据仓库中常用的一种保存历史数据的表。曾经 CK 因为不支持 Update 和
delete,从而不能支持拉链表。本文主要研究 CK 拉链表如何实现。值得注意的是 CK 对 Update
的是有限支持,不支持关联更新操作。因此,本文通过 Delete 和 insert 实现拉链表。
在 Clickhouse 中实现拉链表
我们需要一张 ODS 层用户全量表至,至少少需要用它来初始化。
一、每日的用户更新表:
而且我们要确定拉链表的时间粒度,比如说拉链表每天只取一个状态,也就是说如果一
天有 3 个状态变更,我们只取最后一个状态,这种天粒度的表其实已经能解决大部分的问题
了。
另外,补充一下每日的用户更新表该怎么获取,据笔者的经验,有 3 种方式拿到或者间
接拿到每日的用户增量,因为它比较重要,所以详细说明:
我们可以监听 Mysql 数据的变化,比如说用 Canal,最后合并每日的变化,获取到最后
的一个状态。
假设我们每天都会获得一份切片数据,我们可以通过取两天切片数据的不同来作为每日
更新表,这种情况下我们可以对所有的字段先进行 concat,再取 md5,这样就 ok 了。
流水表!有每日的变更流水表。
二、ods 层的 user 表:
现在我们来看一下我们 ods 层的用户资料切片表的结构:
CREATE TABLE IF NOT EXISTS user (
user_num String DEFAULT '',
mobile String DEFAULT '',
reg_date Date
)
ENGINE = MergeTree(reg_date, (user_num, reg_date), 8192);
资源评论


xinghaoyan
- 粉丝: 125
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
