《数据仓库工具箱》
2010年时,惠普在做全球500百强企业的数据仓库工程。当时是整个上海地区规模最大的数据仓库之一,拥有近300多名数据仓库及BI工程师,分布于 ETL, Data Modeling, Reporting, Master Data Management 和 BA 多个领域。以至于之后猎头来挖我们,开口就问“你是不是惠普这个团队的?”。
这么多工程师,面试的时候普遍被问到的问题是,“你读过 Kimball 的数据仓库工具箱吗,举例说说事实表与维度表的应用场景?”
可见,本书简直是数仓界教父般的存在。
在没有遇到这本书之前,我们做进销存仓库盘点(期末实物与工厂在线实物比对),订单期初期末营业额结算时,通常会采取全链数据表保存来处理,此时就要求业务停止输入,以保证财务,库存,营运全部都核算正确。显然这是落后的做法。而书中给出的事实累积快照表设计,就能很好的解决这类问题。
再比如,我们要统计每年 iPhone, iPad, Mac 在三大地区亚洲,北美以及欧洲的销量。按照惯常的做法,每年的销量做成一张表,每个地区年销量做成一张表,再用一张表计算每年的 iPhone,iPad, Mac 销量,然后两两 Join 这些表,得到数据。但参考了这本书后,我们知道日期,地区,产品都是销量的维度,将其维度-事实模型刻画在一张表结构中,足以解决任意维度的组合统计。
当我做了2年的CRUD后,看到如此完美的设计,毫不犹豫的犒劳了自己一顿KFC全家桶,那时才800多块的月工资啊,一个全家桶接近120.
《数据库索引设计与优化》
对于游戏玩家来说,三星级别听着肯定耳熟。它很可能代表某个角色的强攻击力,快速回血以及超强耐力。
索引也有星级属性。够简,够快,够用。
这本书写于2005年,英文名是《Retional Database Index Design and the Optimizers》. 全网第一本从硬件,软件角度来考量索引设计的书。如果读过我写的这篇文章 IBM 关系型数据库论文,大概看到这本书会非常亲切。
带读 IBM 关系型数据库经典论文
大量的SQL查询缓慢的终极原因,都是由于随机读产生的。此时,你看到市面上所有写到或用到 SELECT * 的语句时,都应该骂他一句垃圾。这是最最基本的数据库常识。SELECT * 产生大量无用的硬盘随机读,在大数据量查询下,浪费了极多的无用功。
记住简单的衡量查询时间的公式:
查询时间=索引查找时间 N x 随机回表时间
如果能将 N x 随机回表时间 去掉,那是极好的设计。
本书的一大特色,在于把优化影响因子都量化了,CPU时间,IO 时间的预算,都有量化的公式,掌握好这些公式,在优化中,我们SQL程序员就可以有的放矢,而不至于两眼摸瞎。
《设计数据密集型应用》
这是一本超进阶的书。所有数据架构师理应都放在案头参考。无论数据大小,离线或者实时,单机或者分布式,本书都具有参考意义。
小数据,我们也会用到分库分表,再小也会用到分区。时代发展到今天,数据量肯定积累了不少,不分区的数据库应该没有了。分区的应用,极大的方便了管理和数据处理。还记得我写过一秒切换数亿级数据那篇文章嘛,此书便讲了其原理。
大数据,就别说分区了。小数据分区还只停留在单机机器资源利用的维度上,那大数据分区,就是以集群(一群机器)资源为操作单元。此时考虑的问题,不再停留于怎么分区,更多讨论容错与故障转移,还有数据安全。
数据应用中CAP理论肯定不陌生。每个数据库,数据存储的设计,都有其独特的CAP理论实现。本书从关系型数据库的实现到分布式系统(Hadoop)实现,都一一做了阐述,看完神清气爽。
作为数据开发工程师,机器就是我们的战士,如何调度这些战士,完成伟大的事业,还靠自己的理解与领悟。三本书,推荐给你。
世界读书日,好好读书,不负韶华。
--完--