超级维度表处理(亿行数据级别)

最近在优化公司的数据仓库项目中ETL部分,发现有一处明显可以改进的地方,发出来和大家分享一下。

在数据仓库中一个一个超级大维度表(1亿左右的记录),更新这个维度表的时候,采取的策略是最简单的1类渐变维度,即存在则更新,不存在则插入。

原先的方式是在ETL过程中先查找这个大表本身,如果存在就打上update标记,不存在就打上insert标记,最后通过分支来分别插入和更新数据记录。每次执行这个job的时候,都要耗去相当多的时间,以前也没有想过去优化。

研究了一下,这个维度表中含有创建时间和最近更新时间这两个字段,发现我只要通过判断这两个时间是否在同一天就可以判断是该插入还是该更新(这里说明一下,我们的数据仓库数据一天更新一次,增量更新的是前一天数据),这样就省去了大量的查找表操作,要知道到这么大一个表里面去频繁做lookup是非常低效的。

action,修改了程序,发现该job执行效率提升了60%,oh yeah。

这里前提是维度表中有创建时间和最近更新时间这两个字段,其实如果没有最近更新时间也是可以做到的,那么就需要另外存放一个值,每天跑这个job的时候,把这个值更新为数据所属的日期,那么这个日期就可以当成上面的最近更新时间来用。

时间: 2024-11-12 03:35:57

超级维度表处理(亿行数据级别)的相关文章

1.3万亿条数据查询如何做到毫秒级响应?

关注微信公众号"程序员黄小斜",选择"置顶或者星标" 一起成为更好的自己! ![](https://img2018.cnblogs.com/blog/1813797/201912/1813797-20191230133159470-930879899.jpg) 作者:孙晓光 出处:http://itindex.net/ 知乎,在古典中文中意为"你知道吗?",它是中国的 Quora,一个问答网站,其中各种问题由用户社区创建,回答,编辑和组织. 作为

每天4亿行SQLite订单大数据测试(源码)

SQLite单表4亿订单,大数据测试 SQLite作为嵌入式数据库的翘楚,广受欢迎!新生命团队自2010年以来,投入大量精力对SQLite进行学习研究,成功应用于各系统非致命数据场合. SQLite极致性能 关闭同步,Synchronous=Off,提升性能.添删改操作时不必同步等待写入磁盘,操作系统会延迟若干毫秒批量写入 设置WAL模式,Journal Mode=WAL,减少锁定.写入向前日志模式,避免多线程访问时锁定数据库,写入时不必使用排它锁影响其它线程读取,而是把事务操作写入到WAL文件

谷歌代码库已超过 20 亿行代码,他们是如何管理的

谷歌代码库已超过 20 亿行代码,他们是如何管理的? IT蓝豹发表于 2015/10/22 Google有多庞大?要回答这个问题,我们可以看收入,看股价,看客户数量,看影响力.但是这都还不够充分.说到规模,那么Google绝对是一个巨大的计算机软件帝国.为了印证着一点,我们还可以看看Google的代码规模. 周一,Google员工 Rachel Potvin 在一个硅谷举办的工程会议上提到了代码量这个问题(看视频,请科学上网).根据她的估计,你平时用到的Google互联网服务的软件(包括搜索服务

谷歌为什么把上十亿行代码都放在一个仓库里

相对于一般公司,Google 使用了单一代码仓库,很多人不理解为什么这么做.本文作者是谷歌基础设施小组的工程师,他对这个问题进行了详细解读. 早期 Google 员工决定使用集中式源代码管理系统来管理代码库.这种方法已经在 Google 运行了 16 年以上,而今天绝大多数的 Google 软件仍然存储在一个共享的代码库中. 随着 Google 开发软件数量稳步增加,Google 代码库的规模也呈指数增长. 因此,用于管理代码库的技术也发生了显著变化. 本文概述了该代码库的规模,并详细介绍了 G

【PPT&视频】《陈新河:万亿元大数据产业新生态》——央视网大数据名人讲堂之大数据产业系列

[PPT&视频]<陈新河:万亿元大数据产业新生态>--央视网大数据名人讲堂之大数据产业系列 原创 2016-07-16 陈新河 软件定义世界(SDX) 热门下载(点击标题即可阅读) ?[下载]2015中国数据分析师行业峰会精彩PPT下载(共计21个文件) 因微信限制,部分图不能显示出来,高清完整版全文请扫描二维码,见每篇文章底部专栏 <陈新河:万亿元大数据产业新生态>--央视网大数据名人讲堂之大数据产业系列 嘉宾介绍 陈新河   中关村大数据产业联盟副秘书长 Talking

Google如何管理20亿行代码

<Wired>今天一篇文章谈到Google的代码量已达到20亿行,并简单介绍了Google是如何管理这些代码的. 这20亿行代码,涉及搜索.Gmail.文档.地图.YouTube.Google+等绝大多数Google提供的服务,存储在"一个"代码仓库中,两万五千名Google工程师都可以访问--这可能是世界上最大的单一代码库.只有几个例外:涉及机要信息的代码,如PageRank算法,或者相对独立的项目,如Android和Chrome系统储存在其他单独代码库中.工程师之间可以

MySQL命令行数据操作使用心得(总结版)

Char 0~255 Varchar 0~65535 text 0~65535(只能保存字符) Longtext 0~4294967295(只能保存字符) CMD登陆mysql mysql -u root -p mysql -P 3306 -uroot -p123456  (-P必须大写表示端口) 1,数据库操作databases 创建数据库 create database 显示数据库 show databases 删除数据库 drop database  <数据库名> 连接数据库 Use &

一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存

Top K 算法详解应用场景: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节.        假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个.一个查询串的重复度越高,说明查询它的用户越多,也就是越热门.),请你统计最热门的10个查询串,要求使用的内存不能超过1G. 必备知识:什么是哈希表?        哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进

使用Python Pandas处理亿级数据

在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章<别老扯什么Hadoop了,你的数据根本不够大>指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择.这次拿到近亿条日志数据,千万级数据已经是关系型数据库的查询分析瓶颈,之前使用过Hadoop对大量文本进行分类,这次决定采用Python来处理数据: 硬件环境 CPU:3.5 GHz Intel Core i7 内存:32 GB HDDR 3 1600 MHz 硬盘:3 TB Fusion Drive 数据分析