面试官:你有没有做过模型设计相关的优化?【面试吹牛草稿系列】

最先回答

做过,我之前做过一个缓慢变化维表的模型设计优化

第一步讲:为什么做?

  • 数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化,与数据增长较为快速的事实表相比,维度变化相对缓慢。
  • 如果维度的历史信息不需要保存,那么每天直接覆盖是不是就可以了呢?但是,大多数场景下,历史维度信息都需要保存下来,供业务分析使用。此时,如何更好地处理缓慢变化维就显的至关重要。

第二步讲:别人怎么做?

分区全量表:开发简单;取数简单;浪费存储

dt=0305(第一天)

id    status
1001    1
1002    1
1003    1

dt=0306(新增两条数据1004和1005,并且修改一条数据1001和删除一条数据1002)

id    status
1001    2
1003    1
1004    3
1005    1

第三步讲:我怎么做?

拉链表:开发难度大;取数难理解;节约存储

第一天初始化一级分区和二级分区

dt_start=0305  dt_end=9999
id    status
1001    1
1002    1
1003    1

如果需要查询0305当天数据,查询语句如下:

select * 
from table
where dt_start <= 0305 and dt_end > 0305

第二天新增两条数据1004和1005,并且修改一条数据1001和删除一条数据1002,需要做如下操作:

dt_start=0305  dt_end=9999
id    status
1003    1

dt_start=0305  dt_end=0306
id    status
1001    1
1002    1

dt_start=0306  dt_end=9999
id    status
1001    2
1004    3
1005    1

如果需要查询0306当天数据,查询语句如下:

select *
from table
where dt_start <= 0306 and dt_end > 0306

第四步讲:带来的收益

使用拉链表这种方式对xx维表优化后,减少了5GB的存储,占用磁盘存储降低了50%

第五步讲:未来的思考(开始吹牛)

paimon表:开发简单;取数简单;节约存储;涉及技术架构迭代

这个关乎到数仓整体架构的优化,如果将paimon作为整个数仓的底层存储架构,那么我们就不需要像拉链表那样去维护不同时刻的版本,paimon的snapshot就可以实现这个能力,用户可以通过最新的快照来访问表的最新数据,同时可以通过时间旅行,访问表的过去状态。

#数据人的面试交流地##牛客创作赏金赛#
大数据开发面试笔记 文章被收录于专栏

包括大数据篇、计算机语言篇、计算机基础篇、算法刷题篇、面试经验篇等五大篇章: 大数据篇包括框架原理、源码解析、调优技巧、大数据场景题、项目实战、数仓理论等模块;计算机语言篇包括Java、Linux、大厂常考SQL面试题等模块;计算机基础篇包括计算机网络、操作系统、数据库、数据结构等模块;算法刷题篇包括大厂高频算法题、刷题速成计划等模块 面试经验篇包括BAT、美团、字节、快手、京东等大厂的面经合集

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-15 12:20
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
写不来代码的小黑:这么小的城市能有做it的公司也不容易
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务