进阶数据库和大数据架构必备技能点

点击蓝色“有关SQL”关注我哟

加个“星标”,天天与8000人一起快乐成长

图 | 榖依米

这段时间,真的太忙了。

白天虽然 work from home, 但事情感觉没少做。一开电脑,顺便就把公司远程打开,检查邮件,确定优先级,然后开始编码。一整天都花在工作内容上,家里又不是千尺豪宅,每天摸鱼的时间都比坐班少很多。

工作之余,配合公司的数据挖掘项目,需要跟进很多没有掌握的工具栈,比如 ElasticSearch, Kafka, Spark/Hive 等。这些都是开源项目,所以阅读 Spark/Kafka 源代码成为常事,从 github pull 了很多代码下来,慢慢啃。开源软件有个特性,更新非常快,所以不读源代码,放到特定环境就容易踩雷。

在之前的文章中,我多次提及,现在互联网时代的参考资料实在太多,如果你打算从头到尾读一遍技术书,将会有很多卡壳的地方,对于进展不利。最好的方式,就是将其当做参考书,代码参考库一样。看到有用的代码就拿过来自己测试,修改,比起读一本书,效率更高。

有朋友会说,那自己一点都没有基础,也可以这样做吗。真的是可以的。我对 scala 也没有太多了解。只是以前读过一点 Thinking In Java. 当然太厚,我也没全部读完。就是这点基础,上手去读 Scala  的源码,不懂的地方自己做实验,反而学的更快,对于函数式编程有了深刻的理解。如果一遍遍读书,代码都不敲的话,反而会望而却步,越看越没信心。

阅读源代码,这是有个前提的。你必须知道你在实现一个什么功能。比如我一开始看源码时,就告诉我自己,我要做一个从 MySQL 抽取百万级的数据,用 Spark 做统计汇总,最后回写到 MySQL 中去。那样,我就会从一系列很小的 Demo 做起:

  • 先做一个 Scala 连接 MySQL 的例子

  • 模拟 MySQL 结果集的 Colletion, 用 Spark RDD 来处理

  • 将 Scala 读取到的 MySQL 结果集,与第二步中的 Collection 连接

  • 完成回写

分解开每一步之后,我就去微信读书,Amazon 电子书,Google 里面找案例或源代码。最后这部分就没有问题了。接着热度,把 Spark SQL/DataFrame/Dataset 都过了一遍。水到渠成!

这只是个小插曲,并没有打算来完整讲 Spark/Scala.

在这个过程中,我发现个有意思的事情,在决策支持系统的性能测试中,也经常提及 TPC-DS 这套标准。我觉得是每个资深数据人都应该知道的进阶内容,还是有必要讲讲。

虽然大数据并不仅仅可以用来搭建数据仓库应用,但数仓是大数据近来最常用的项目。而评判一个数据仓库的性能是不是符合项目标准,我们是要有一套方法的, TPC-DS 就是这样一套国际标准。


推荐下这些书,学 Spark 必读.不过细心的朋友,才会注意到这吧

好,言归正传,说下 TPC-DS.

去年写过的一篇 OceanBase(阿里巴巴的分布式数据库)性能超越 Oracle 100%,不知道各位还有印象没,文中提到过 TPC 的概念,就是一套国标(国际标准)。很多知名厂商都在用这套标准,给自家产品做测试。Oracle 常年霸榜,直到去年被 OceanBase 超越。

有些朋友对性能测试会很陌生,不知道怎么去测性能,或者干脆想的很简单,就把平时的存储过程打个log,看看性能趋势图。由于数据库的缓存,不仅仅有数据缓存,执行计划也是有缓存的,所以单用打log的方式并不十分精确。

TPC-DS的测试,是自建了一套测试 Schema,部署到要测试的环境中,然后模拟很多DDL/DML的操作,用来检测性能是否合格,并发是否足够高,是否高可用等关键指标。

当然,我们知道了这个原理,完全可以自己开发一套测试数据和逻辑,用来给自己的产品做测试。

我们看看 TPC-DS 的官方是怎么定义的:

The TPC Benchmark DS (TPC-DS) is a decision support benchmark that models several generally applicable aspects of a decision support system, including queries and data maintenance.

TPC-DS 基准测试,在决策支持系统的多个应用方面建模,包含一系列查询和数据操作。

The benchmark provides a representative evaluation of performance as a general purpose decision support system. A benchmark result measures query response time in single user mode, query throughput in multi user mode and data maintenance performance for a given hardware, operating system, and data processing system configuration under a controlled, complex, multi-user decision support workload.

测试基准衡量了单用户的响应时间,多用户的查询吞吐,在给定硬件,操作系统还有访问量下,数据操作的性能。

The purpose of TPC benchmarks is to provide relevant, objective performance data to industry users. TPC-DS Version 2 enables emerging technologies, such as Big Data systems, to execute the benchmark.

TPC-DS 只要用来给使用者提供参考,比如 Oracle 10g 在 Linux 7 上的表现,以方便购买者做出决策。TPC-DS 的第二版本,为大数据系统提供了测量标准。

TPC-DS 测试可以理解为一套成熟的产品,该产品就是用来测试决策支持系统的一系列性能指标。既然是产品,我们就可以直接拿来用,没错,我们可以从 TPC.org 官网拿来用。具体测试步骤,可以看官方指导。

简单说下它的原理:

  • 采用星型、雪花型多维数据模型

  • 包含7张事实表,17张维度表,平均每表18列

  • 共有99个SQL查询,覆盖SQL99/2003的核心部分,以及OLAP

  • 测试数据集的统计、报表、OLAP查询,数据挖掘

  • 测试用数据有倾斜,完美模拟了真实数据

当然,任何测试,离开了成本都是不可靠的。在IT领域,客户追求的永远是性价比,TPC-D 最终用以每单位性能消耗多少资金来对比各产品优劣。所以打榜,对国际化产品来说,有广告优势。

--完--

往期精彩:

本号精华合集(二)

如何写好 5000 行的 SQL 代码

如何提高阅读 SQL 源代码的快感

我在面试数据库工程师候选人时,常问的一些题

零基础 SQL 数据库小白,从入门到精通的学习路线与书单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值