MySQL与Postgres大不同 Uber选择了前者

目录 前端技术

在一百年前,人类的第一台计算机还没能诞生,黑纸白字是人们记录信息的唯一方式,档案馆是信息的集结地,数据分析还只能通过人工的分类,检索来完成。1951年Univac系统使用磁带和穿孔卡片作为数据存储,成为人类向大数据迈进的里程碑。

从文件系统发展到数据库系统,人们对于数据信息处理能力越来越强,出现了以做数据库发家的甲骨文公司(即IOE中的O:Oracle),也有很多种免费、开源的数据库供我们使用。在现实生活中,包括Facebook、优步等企业都选择了开源、免费的数据库。其中,MySQL与Postgres已经成为最受欢迎的两种免费数据库,他们之间有有什么异同呢?7月末,优步公司宣布将数据库从Postgres切换到MySQL,个中原因又是什么呢?

MySQL与Postgres大不同 优步选择了前者

从Postgres(PG

MySQL与Postgres大不同 优步选择了前者

MySQL(以上图片来自:eng.uber.com)

根据优步官方解释,此次更换数据库的原因是Postgres数据复制效率低下,Postgres更新已有行的效率低于MySQL,Postgres需要重写每一个行索引,而MySQL只更新改变的索引。也就是说,此次更换的原因并非孰优孰劣,MySQL与Postgres各有自己的特点。

MySQL与Postgres大不同 优步选择了前者

PostgreSQL

索引:PostgreSQL取决于存储引擎。MyISAM:BTREE,InnoDB:BTREE。同时PG可以使用函数和条件索引。相比之下,MySQL支持B-树、哈希、R-树和Gist索引。在索引的复制能力方面MySQL更优,这也成为优步更换数据库的重要原因。

一致性:数据的一致性是衡量一个数据库优劣的重点,PostgreSQL是完全支持ACID���性的,它对于数据库访问提供了强大的安全性 保证,充分利用了企业安全工具,如Kerberos与OpenSSL等。在MySQL中,开发人员可以将服务器设定为严格SQL模式才能达到目的,否则可能会产生不规范数据。

稳定性:PostgreSQL的稳定性极强,Innodb等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多MySQL用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。当然,对于MySQL而言,不同的版本稳定性也不尽相同,MySQL官方网站会提供稳定版本下载,开发环境使用的MySQL版本应该和生产中的大版本一致,用户可选择最新的稳定版本。

MySQL与Postgres大不同 优步选择了前者

MySQL

应该说这两种数据库都是开源、免费并能运行在多个操作系统上的,无论是可扩展性、数据的一致性和可靠性都比较稳定。但二者在应用环境、场景和部分特性上不尽相同。二者没有完全意义上的好坏,从整个发展过程来讲,最初PostgreSQL的发展速度较慢,导致MySQL一度成为霸主,如今,双方各有优劣,都成为不同应用场景下的最优数据库。

自从MySQL被收购后,虽然仍保持开源的姿态,但实际上都有专业的工程师在码代码,发展也十分迅速,并出现了Standard、Enterprise、Classic、Cluster、Embedded与Community等多个版本,Twitter、Facebook与Wikipedia都是MySQL的忠实用户。PostgreSQL则一直标榜自己为最先进的开源数据库,同时它又比MySQL出现的早了九年,让它在教育和部分国外企业中备受欢迎,同时其数据一致性与完整性也是PostgreSQL的高优先级特性。

总的来说,MySQL更为灵活,PostgreSQL更为可靠,用户在选择时一定要慎重,毕竟切换数据库是一件费力且不讨好的事情。