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更为可靠,用户在选择时一定要慎重,毕竟切换数据库是一件费力且不讨好的事情。

安卓和iOS相比,还有哪些体验上的不足?

目录 前端技术

虽然我主要使用安卓设备,但也有一段时间体验了苹果iPhone 6S,在我看来安卓比iOS差的地方主要有以下几点:

1、没有统一的消息推送机制。iOS和安卓的应用后台运行的方式完全不同,虽然两个系统都可以同时打开多个应用,但是iOS的应用在切换到后台后就会被冻结起来,这样做的好处就是更加省电,不用担心某款应用在系统后台偷偷运行,浪费资源。同时为了保证微信、QQ这样即使通信类应用可以在被后台冻结后依然可以正常受到消息,苹果iOS有一个统一的消息推送机制,微信、QQ等应用将需要发送的消息统一发给苹果的服务器,然后再由iOS告诉用户,这样就保证即使微信不在iOS后台运行,用户也能收到好友发来的消息。
继续阅读 “安卓和iOS相比,还有哪些体验上的不足?”

把404页面设计成这样,再坏也没脾气了!

目录 前端技术

打开网页页面,有些时候会出现:HTTP 404或Not Found这些字样。

也许有的小伙伴还不太清楚,ME哥在这几简单介绍一下:

HTTP 404或Not Found错误信息是HTTP的其中一种“标准回应信息”(HTTP状态码),此信息代表客户端在浏览网页时,服务器无法正常提供信息,或是服务器无法回应且不知原因。
继续阅读 “把404页面设计成这样,再坏也没脾气了!”

开发必备,如何使用JQuery解析JSON数据

目录 前端技术

目前客户端和服务器主流的交互方式就是使用json,下面就给大家简单说一下JQuery如何处理json数据,尤其是做前端的同学们,一定会经常遇到json的处理问题。而且,现在web前端一般和服务器的交互方式都是ajax和json,那么客户端如何处理json数据,就非常重要了。
继续阅读 “开发必备,如何使用JQuery解析JSON数据”

小白教您HTML5

目录 前端技术

什么是HTML5

官方概念:HTML5草案的前身名为Web Applications 1.0,是作为下一代互联网标准,用于取代html4与xhtml1 的新一代标准版本,所以叫html5。它增加了新的标签和属性,加强了网页的标准、语义化与web表现性能,同时还增加了本地数据库等 Web 应用的功能。
继续阅读 “小白教您HTML5”

同样的面试题,Android的答案和Java不一样

目录 前端技术

众所周知,Java是Android的基础,这就意味着在Android的面试过程中有相当一部分的题目,看起来是在考察你的Java基础。但如果你天真地仅把这些问题当做Java面试题来进行回答的话,基本上会有三种结果:1.运气好的话,面试官会把问题引到Android相关问题的理解上,你就可以回答到点子上了。2.运气差的话,面试官啥也没说,直接进行下一个问题,而你此时还在心里想,“这个问题老子答得好啊“……王炸!
继续阅读 “同样的面试题,Android的答案和Java不一样”