【观点】最适合数据分析师的数据库为什么不是MySQL?!

数据分析师都想使用数据库作为数据仓库处理并操作数据,那么哪一款数据库最合适分析师呢?

虽然网上已经有很多对各种数据库进行比较的文章,但其着眼点一般都是架构、成本、可伸缩性和性能,很少考虑另一个关键因素:分析师在这些数据库上编写查询的难易程度。最近,Mode的首席分析师Benn Stancil发布了一篇文章,从另一个角度阐释了哪一款数据库最适合数据分析师。

Benn Stancil认为数据分析工作不可能一蹴而就,分析师在使用数据库的过程中阻碍他们速度的往往不是宏观上的性能,而是编写查询语句时的细节。例如,在Redshift中如何获取当前时间,是NOW()、CURDATE()、CURDATE、SYSDATE 还是WHATDAYISIT。

在Mode公司,分析师每天都会使用各种不同的语言编写几千个查询,运行在Mode编辑器里的查询超过百万个,而Benn Stancil就是从这些数据出发,对MySQL、PostgreSQL、Redshift、SQL Server、BigQuery、Vertica、Hive和Impala这八款数据库进行了比较。

1

查询错误是否容易解决

首先,Benn Stancil认为查询错误是否容易解决是衡量数据库的一个最基本指标。数据库提供的错误信息(通常是语法错误、函数名错误、逗号错位等)最能表明该系统是否会对数据分析师造成极大的挫败感。通过对8种数据库查询错误频率的比较,Benn Stancil发现Vertica和SQL Server错误率最高,MySQL和Impala最低,如图所示:

但是,对于该结果Benn Stancil认为可能有点不严谨,因为Impala、MySQL和Hive是开源的免费产品,而Vertica、SQL Server和BigQuery不是,后三者的用户通常是有充足分析预算的大型企业,其较高的错误率很有可能是由于使用更深入而不是语言“更难用”。

2

复杂性

除了错误率之外,Benn Stancil还讨论了复杂性。虽然不同语言其查询长度、查询复杂性和语言复杂性之间的关系盘根错节,要界定清楚很难,但可以间接使用查询长度作为度量的指标,因为一门语言之所以简单很有可能是因为它简洁。这八种数据库查询长度的统计结果如下:

如果说单纯地比较最终的长度有失偏颇,那么可以看看随着分析的逐步深入,查询逐渐变复杂的过程中,其修改次数与长度之间的关系:

该图显示,经过20次左右的编辑之后,查询长度通常会变为之前的2倍,而在100次编辑之后,长度会变为之前的3倍。那么在修改的过程中,其编辑次数与出错的比率又是什么样子的呢?

从图中可以看出,PostgreSQL、MySQL和Redshift的错误率较低,Impala、BigQuery和SQL Server的错误率较高。另外,和之前一样,Vertica的错误率依然最高。

3

分析师技能

此外,Benn Stancil认为分析师的技能也很重要。他对使用多个数据库并且在每个数据库上至少运行了10个查询的分析师进行了统计,计算了这些分析师在每个数据库上的查询错误率,并根据统计结果构建了下面的矩阵:

该矩阵展示的是顶部数据库与左边数据库相比其错误率的差别,数值越高表现就越差。例如,Hive和BigQuery交叉处的“20.2”表示:对使用这两款数据库的分析师,其使用Hive的错误率要比使用BigQuery高20.2。最底部的Total行是结果总计,从中可以看出MySQL和PostgreSQL始终表现较好;Vertica跳跃最大,几乎是从最底部跳到了中游,打败了SQL Server 和Hive,这也暗示了Vertica的高错误率很可能是由于分析师的能力而不是语言本身。

最后,Benn Stancil认为在分析的这8个数据库中,MySQL和PostgreSQL编写SQL最简单,应用也最广泛,但与Vertica和SQL Server相比它们的特性不够丰富,而且速度要慢。综合各方面的因素,Redshift或许才是最好的选择。

来源:数盟

原文发布于微信公众号 - PPV课数据科学社区(ppvke123)

原文发表时间:2016-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

第4篇:SQL

前言 确实,关于SQL的学习资料,各类文档在网上到处都是。但它们绝大多数的出发点都局限在旧有关系数据库里,内容近乎千篇一律。而在当今大数据的浪潮下,SQL早就被...

39090
来自专栏java架构学习交流

java 面试,java 后端面试,数据库方面对初级和高级程序员的要求

本内容摘自 java web轻量级开发面试教程 对于合格的程序员,需要有基本的数据库操作技能,具体体现在以下三个方面。 l  第一,针对一类数据库(比如MySQ...

24270
来自专栏数据库新发现

数据库性能和数据库安全:面试题上以小见大

友情链接:http://enmotech.com/web/classify/43.html

11600
来自专栏带你撸出一手好代码

到底该不该使用存储过程

看到《阿里巴巴java编码规范》有这样一条 ? 关于这条规范,我说说我个人的看法 我觉得用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术...

45590
来自专栏木东居士的专栏

拉链表是什么

69560
来自专栏学习有记

你对数据库管理员的定义是什么?

12940
来自专栏杨建荣的学习笔记

关于大数据和数据库的讨论(r5笔记第30天)

前几天上了水木社区,发现还是有大牛的,看了关于大数据和数据库的讨论,还是蛮有意思的,限于篇幅和版面,我做了部分的提取和整理。 先看看这位人士的分析,对于行业的现...

47960
来自专栏数据和云

千头万绪:从一道面试题看数据库性能和安全的方方面面

这个问题在朋友圈引起了很多朋友的兴趣,转发并且提问,希望有一个标准答案输出作为参考。

9210
来自专栏杨建荣的学习笔记

最近的几个技术问题总结和答疑(九)(r10笔记第16天)

最近的琐事比较多,而提问题的朋友还是不少,很多消息都没有来得及回复,各种事情一堆起来,不少问题想起来已经过了好几天了,所以还是来整理一篇技术问答为好。 ...

34740
来自专栏数据和云

拨云见日 - 深入解析Oracle TX行锁(下)

优化的核心思想:Balance is the ONLY key to Optimizer. 上期回顾:拨云见日—深入解析Oracle TX 行锁(上) 前文中我...

35090

扫码关注云+社区

领取腾讯云代金券