大而全、小而美,品PG和MySQL间的“爱恨情仇”

最近数据库领域有几个比较火的事情:

第二件事是,北京云栖大会上阿里云宣布基于MySQL分支的AliSQL开源。AliSQL在MySQL社区版的基础上做了大量的性能与功能的优化改进,性能优于社区版MySQL70%左右,并且尤其适合电商、云计算以及金融等行业环境。

那么,PG和MySQL有哪些技术特性,哪个更强,带着这些问题,云栖说本期邀请了几位达人和大家讨论一番。

这几位大神可不一般,他们分别是:

第一位是来自阿里云技术专家周正中(德歌),贵为校长,在阿里云负责PG数据库架构的工作,社区也在大力做PG的推广。

第二位是阿里云高级技术专家彭立勋,主要负责Redis
for MySQL源码的研发,也是中国MySQL社区用户组主席团成员、杭州用户主席,同时在RDB社区担任reptation模块的负责人。

第三位是来自云徙科技技术总监唐成,曾写过《PG的修炼之道》。

第四位是来自阿里云技术专家罗龙九(玄惭),现在负责专家服务组,对外帮助用户更好的使用RDS。

视频回顾:

以下是精彩内容整理:

 

主持人:关于Uber公司宣布其数据库从PostgresSQL切换到MySQL,对此各位专家怎么看?

德歌:当得知这个消息后,也阅读了相关工程师的文章,文章中的对PostgresSQL的观点还停留在多年以前的理解下,所以我对文章中的一些观点做了一些反馈,以及深入的在源码层面写了一些东西。

唐成:我也读了那篇文章,我觉得他可能对PostgresSQL的特性认识有一些偏差,我学习过Orcale、MySQL和PostgresSQL,我觉得每一种数据库都有它的长处和短处,对PostgresSQL来说,功能强大是它的一个长处,但PostgresSQL的DBA人数较少,同时能深入了解PostgresSQL的人也比较少,这可能导致很多人对它有一些误解。

罗龙九:一个企业选择数据库时,不仅要考虑数据库的功能,也要考虑数据库的生态,它的相关的职业人员的一些储备,还要考虑它的应用框架,在上层应用上对于开发团队的使用习惯。

彭立勋:数据库没有绝对的好坏,主要看业务适合哪个数据库。

 

主持人:德歌的文章发表后,引起了开发者的热议讨论。那么,请德歌为我们简单介绍下这篇文章背后的故事以及PostgresSQL的一些技术特性?

德歌:PostgresSQL在很多的应用场景里都有在使用,其中,地理位置信息的应用场景是最多的。各种数据库都会对SQL的兼容性进行适配,PG在开源数据库方面做得比较好,它是基于SQL2011来做的,
这里面涉及到许多特性,比如递归查询、树查询,PG在使用树形数据结构的查询的SQL语法支持是比较好的。企业通常对多维数据分析会有一些要求,开发人员要经常修改程序去适应变化的需求,在数据库里会有支持多维分析的数据库语法,PG在这方面的支持也是比较好的。此外,PG在复杂查询这部分做的也比较好,对于企业来说,如果希望数据库帮助减轻开发工作量,PG是不错的选择。

 

主持人:PG在技术难题上社区都有哪些拓展的地方呢,(像垃圾清理机制、PG的MVCC以及PG的扩展能力等等)?

德歌:关于垃圾回收,很多使用PG的用户可能对于这部分的理解不是那么的深入,垃圾回收是由PG的多版本原理所导致,使用PG去更新一条记录或者去删除一条记录时,它只是对原来这行的版本做一个标记,而基于回滚段的做法是把老的技术段拷贝到回滚段,PG的标记做法到后期需要对垃圾版本做回收,PG是通过几个参数控制回收频率和回收速度。

彭立勋:PG功能完善是毫无疑问的,基本上遵循了数据库设计原理中的所有规范,包括支持所有特性,课本上真正的内容都会实现出来,但是PG这么多复杂功能能不能经过重重考验还是受大家质疑的。

唐成:PG库的很多东西,包括MVCC,是经过很多代的优化的。PG在业界是以稳定、可靠著称的,PG中添加的功能是要经过很长时间逐步优化的,而且,社区开发人员对代码是比较谨慎的,代码分隔是比较严谨的,以保证它的稳定性。

罗龙九:PG相对于MySQL来说,第一是功能通俗化,第二是功能公布后很多人在使用时一定要知道这些技术点的最佳实践是什么,在开发设计阶段怎么去规避它,希望在PG社区有更多的用户去学习,能够有更多的人带领大家更深入的了解PG的技术实践,才能发挥它的价值。

 

主持人:PG稳定性方面做了哪些改进和优化呢?

德歌:PG稳定性主要体现在几个点。一是崩溃性的恢复,数据库所在的主机崩溃掉,再拉起后可以恢复并且到一个一致性的状态。一是可靠性,PG会做检查点,然后对第一次变更或产生的张页对应的数据文件的配置会记录到日志中,从而在崩溃性的恢复时会从检查点拿到配置做恢复,当然,PG是在硬件可靠的前提下,在软件层做可靠性的保障。另外,在时间上,用户在非常大的压力下长时间的使用,数据库还能维持一个稳定的性能,不管是我们做大压力的测试还是在实际的应用场景中,PG表现都是非常稳定的。

 

主持人:请几位专家简单介绍下即将开源的AliSQL?

彭立勋:AliSQL是基于MySQL,根据我们自己的使用经验和场景做了很多优化,阿里使用MySQL已经非常久了,遇到过很多比较特殊的场景,而且阿里本身对稳定性和性能要求是比较高的,所以我们做了许多优化,可以保持高并发时依然保持高稳定性。另外,我们在监控方面做了线程类的监控,可以看到每个线程使用多少内存,这对运维是非常有好处的。安全方面,我们做了透明加密,对文件单独进行加密,即使你的文件被拷走,没有密钥也是打不开的。中间件和数据库的配合,我们可以做到透明传输,用户虽然使用中间件访问数据库,我们做了很多透明优化,使用户感觉不到中间件的存在。在各种云数据库评测中,AliSQL的Redis稳定性在云数据库中是最好的,这与其它使用官方版本的云平台有很大的差异,官方版本的基线要低很多。

罗龙九:AliSQL的前身是为阿里业务而生的,我们针对阿里的业务场景做了很多优化,比如双十一零点的库存秒杀优化,AliSQL即将开源,使用AliSQL就可以很容易复制一些技术,去快速的帮助业务发展。

 

主持人:怎样看待AliSQL即将开源?

唐成:阿里在使用MySQL的过程中积累了很多最佳实践,阿里对于MySQL做了很多优化补丁和提高稳定性方面的事情,阿里能把这些东西分享出来,对大家来说是喜事。

德歌:从PG社区角度来说,对AliSQL开源是非常期待的,PG对于中国互联网行业的用户数还是少的,互联网行业的用户诉求可以通过AliSQL看到。而且PG社区会更新在互联网领域的一些特性,会把AliSQL做的一些事情在PG上做一些尝试。

 

主持人:AliSQL在性能和稳定性方面做了哪些改进和优化?

彭立勋:MySQL的锁是非常多的,AliSQL对MySQL的锁进行了分析,缩小锁的范围或者去掉锁。云上的用户有很多用法,官方没有覆盖到的case我们是可以修复掉的。

罗龙九:MySQL在主备复制上只支持单线程、库级别的,在云上的主备复制延时对稳定性造成了很大伤害,我们在官方的基础上做了很多改进,包括并行复制等,我们从源码级别保证用户即使使用错了,我们可以帮助用户规避这些问题。依托于我们强大的源码团队,我们已经开始着手官方不支持的新功能进行开发,帮助用户在稳定性、安全性、性能上做很多事情。

 

主持人:PG和MySQL各自适用于哪些场景?

德歌:PG的功能非常强大,类似于开源版本的Orcale,PG在全景扫描、聚合查询上都支持CPU并行,也支持基于GPU的并行计算,这在数据库领域是走在前沿的。PG在Gis领域的地位不可撼动,比如高德、国家社会总局等都在使用。在物流方面,智能调度已经成为了物流行业非常核心的话题,PG在物流上做的非常好,围绕Gis扩展出非常多的功能,包括很多调度算法都可以直接移植到数据库中计算,解决了数据在网络上不断传输的问题。PG是类似于数据库平台的产品,已经超越了传统的数据库概念,在图像搜索上也可以把图像放到数据库中去做。我们可以扩展数据库的功能,我们可以把让数据产生价值的一些想法嫁接到数据库端做,包括基因测序、模糊查询等都可以和PG结合起来。在生态方面,国内PG的人才相对于MySQL是非常匮乏的,社区也会举办公开课带动大家了解PG,培养更多的人才。

唐成:PG是对开发人员很友好的数据库,功能很容易扩展。

罗龙九:PG比较大而全,开发人员可以做很多东西,对于初创型公司,需要这样的数据库帮助业务快速发展。MySQL是小而美,可以快速入门,开发人员有足够的能力在应用端实现,不需要数据库。这是从研发人员不同的角度不同的思维方式去看数据库的使用,针对不同的研发人员,不同的业务场景,选择不同的数据库。

彭立勋:PG希望把业务放在数据库中做,而MySQL只能把数据当成一个存储器,非计算器,MySQL对于存储过程的支持不是特别全,MySQL并不适合在数据库上做很多计算的处理。

 

主持人:在整个社区的生态上,未来的技术走向是?

德歌:并行计算在向前发展,现在的并行计算支持到全面扫描、聚合查询等,对于创建索引等目前还是不支持的,接下来PG会更加深入的实现并行计算。PG的接口应该会持续的开放,PG希望更多的用户一起来玩,PG中国社区把高校、企业聚合到一起,共建生态。

彭立勋:MySQL会和InnoDB做更多的绑定,Myisam会慢慢退出历史舞台。Percona社区正集中做ToKuDB,会在ToKuDB上提升性能。MariaDB会一直保持下去,只兼容新功能不会剔除旧功能,会增加一些超前功能督促MySQL官方做一些工作。中国MySQL用户组每年会举行一些会议,使MySQL爱好者在一起分享最佳实践,并且把收集到的需求带到MySQL官方,指导大家朝着需要的方向进行开发。

唐成:PG、MySQL进入非互联网行业才刚刚起步,未来几年在非互联网行业开源数据库份额会飞速增长。

罗龙九:云数据库服务趋势越来越大,对传统的企业和DBA生存会有很大的挑战。在做云服务时,要去考虑DBA的生存状态,让大家一起来做才是最好的。

 

脱口秀的最后,几位大神互相讨论了起来,其中玄惭对德歌的发难也是将本次座谈推向了一个小高潮:

罗龙九:对于红包场景、秒杀场景互联网已经生活化了,阿里会有秒杀补丁等解决方式,而PG是进程式的数据库,像突发的短连接、高并发连接时,对PG带来的伤害是比较大的。对此,PG是如何解决这个问题的?

德歌:PG确实是进程模式的,短连接对PG是有很大的损伤。但PG用户是可以使用连接池的,连接池有基于线程模式的,像PGBouncer等都可以解决这个问题。蜂拥而至的秒杀对单条记录会有不断的Update,关于老版本的回收利用,是由垃圾回收进程负责的,只要配置足够好,就不会有太大问题;这么多的Update,PG以巧妙的方式来解决这个问题,PG提供了一个advisory lock技术,在锁行之前去规避掉更新,传统做法是排队,更新后后面做的就是无用功,PG是在排队前告诉你没有资格排队了,代码不需要去执行到锁这条记录,省掉了代码层的执行,效率很高。通过这几项技术可以解决使用线程模式的用户在进程模式下不能解决的问题。

时间: 2024-09-27 10:31:43

大而全、小而美,品PG和MySQL间的“爱恨情仇”的相关文章

网络营销之“大而全”VS“小而美”

中介交易 SEO诊断 淘宝客 云主机 技术大厅 说起网络营销,很多人脑海中马上就蹦出SEO.SEM与EDM等词汇.笔者公司最近服务的一家小儿退热贴厂家,就陷入了在网络营销方面投入大,产出少,不可控等恶性循环中.该公司一度曾想放弃网络营销,笔者所在的团队给这家公司做出了一些分析,思路如下. 一.网络营销的思路 笔者认为,目前大多数中小企业展开的网络营销出现推广手法多而无用,投入产出不可控.而笔者团队给企业进行网络营销策划为:少走冤枉路.少花冤枉钱.少浪费时间,从而提高成功的几率.这种思路是王通前辈

华北电商:讲究规模大而全 同时力求速度

速度,是电子商务的一个独特文化.这尤在华北电商这个群体充分体现. 相比于华南派的务实和华东派的细致,华北派的行事风格似乎更追求速度:快速崛起.迅速融资.密集风投.但,仅有速度能成为赢家么?作为南都创富志"电商脸谱"专题的最后一期,我们以华北电商来解读这一命题. 爱规模 华北派电商的根基在北京,京派电商的特质也代表着这一区域的个性. 与华东派电商们的精细,在细分领域做得十分扎实不同,京派电商们讲究规模大而全,同时力求速度.虽然从垂直转型"超市型"业态是B2C的行业趋势

50位中外AI领袖论剑AI World,世界人工智能大会10大亮点全回顾

AI大片震撼开启AI World 2017 新智元AI World 2017世界人工智能大会开场视频:如果你没有亲临现场,一定要看,年度AI大片,不容错过! 2017年11月8日,由新智元主办的 AI World 2017 世界人工智能大会在北京国家会议中心隆重启幕,国内外上百位AI领袖作了覆盖技术.学术和产业最前沿的报告和讨论.超过2000名 AI 精英共襄盛会. 会上,新智元创始人兼CEO杨静与助理来也CTO胡一川发布了全球首个AI专家互动资讯平台"新智元V享圈",基于此打造百万级

SEO之网站定位应“专而精”并非“大而全”

网站的定位是做网站必须先考虑好的,首先 应该考虑自己的网站能够给用户提供什么内容,其次是如何利用网站来盈利,现在的网站大大小小,形形色色的都有,充满互联网的每一个角落,有蓬勃生机的,有危在旦夕的,从网站的发展来看,做站应该根据自己的情况去考虑,提前考虑的越周到,或许网站就能走的越远. 现在网站竞争性虽然很大,但依然还是有很多大型的网站出炉,因为他们有团队在运作,有资源有资金;但对于个人站长来说,做一个大型的网站,虽然看上去很气派,但真正要维护起来,却是一件很困难的事,因为网站涉及的行业多,涉及的

大数据全栈式开发语言 – Python

前 段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做"Fullstack JavaScript",是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB)开发,一个Web应用开发人员,只需要学会一门 语言,就可以实现整个应用. 受此启发,我发现Python可以称为大数据全栈式开发语言.因为Python在云基础设施,DevOps,大数据处理等领域都是炙手可热的语言. 领域 流行语言 云基础设施 Python, Java, Go DevOps

图片-请大神帮忙!!!用mysql制表时性别输入中文却不能显示

问题描述 请大神帮忙!!!用mysql制表时性别输入中文却不能显示 解决方案 你安装mysql的时候没选utf8 改下编码就可以

抛弃大而全 窄众网站才是个人站长的发展之路

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 新浪.搜狐.网易一直以来都是个人站长羡慕的对象,心想有一天自己的站也能这么NB,咱就不用这么辛苦,翘个二郎脚也能数钱.于是乎有意无意的就将网站向着大而全的方向前进,像本人的不少个人站长朋友,网站栏目繁多,我用手指加脚指都数不过来. 当然,有能力网站越综合越好,但对于个人站长而言,本人认为,大而全是不对的.大而全除了能满足下自己的小小虚荣心外,

utf-8-跪求各位大神解答!!ubuntu下mysql编码改为utf8之后中文还是乱码

问题描述 跪求各位大神解答!!ubuntu下mysql编码改为utf8之后中文还是乱码 大神们请莫先喷我为何要问这种幼稚问题TAT 情况如下: ubuntu14.04下安装mysql5.5(最简单的安装方法:apt-get install...) 考虑到mysql默认编码为latin,会出现中文乱码,所以按照网上的方法修改了 my.cnf 如下: 之后重启mysql,查看了编码 本以为一切搞定,事与愿违,我试了试插入中文的字段,结果乱码 在workbench中也是这样 apply之前: appl

大数据全流程平台在互联网金融的实现

本文讲的是大数据全流程平台在互联网金融的实现, 如果有这么一家公司,它把数据视为它的生命线,那么它对数据系统一定有非常非常多的需求,它可能会要求它们的数据系统足够灵活,可以非常方便的加减数据源,它可能需要实时查询裸数据,也有可能对这个数据进行各种各样的计算,它还有可能去提高每次访问的实时性,同时也有可能提高批量离线分析时的性能以及水平扩展能力,如果你是一个架构师,你会怎样设计这套系统呢? 大家下午好,我是来自宜信的侯松,我今天分享的主题是<大数据全流程平台在互联网金融场景下的实现和借鉴意义>,