如果关注开源技术,其实法国人在MYSQL 和PG 上是毫不示弱的。MYSQL 的那位就不提了,MHA MGR 代理高可用的那位大神,估计使用过他的软件的人不会太少,但知道那个软件是他的的人,太少。
今天看看另一位,法国的Artist OF postgresql , 这位哥哥目前为 Citus 工作,写过的PG的书也是不少了。

偶然看到他的演讲,名字就叫 The art of postgresql 。
——————————————————————————————
以下为翻译内容(听的有时候不大准,英语太烂,一个法国人说的英语,请谅解其中的一些失误)
今天我要讲的是,The art of postgresql,我想问问这屋子里面是开发者多还是DBA ,是开发者的举手。希望我今天的演讲能帮助更多的开发者。
我先介绍以下我自己,我服务于POSTGRESQL 是在上个世纪,我现在的工作在citus 一个分布式的Postgresql的版本,当然他现在属于微软,这个分布式的版本,对于你有很多数据库时时有帮助的。你可以有很多的works以及coordinator 每一片有不同的数据,然后发送SQL从不同的分片上获取数据。
Ok我们开始正题
Why PostgreSQL ?
开发人员为什么要用 PostgreSQL,如果你在一个公司使用不同的程序栈例如JAVA, python , PHP 等等, postgresql 会给你解决什么问题,developer 用什么来存储,将需要存储的东西变为 XML 存入内存,或者存储在AWS S3 等等都可以,POSTGRESQL 不是要解决你的存储的问题,POSTGRESQL 是要解决你的数据管理,解决数据的一致性和隔离的问题,我们的用户在同一个时间使用同一个应用程序,
你的程序是来解决一个用户在一个时间点的问题,数据库要解决的是整个用户群在一个时间点的问题,例如一些操作的顺序性,来保证你整个商业逻辑的正确性。
我们如何解决一致性,关系数据库要解决的问题 ACID,学过DBMS 都应该知道。那那种数据库没有ACID, 台底下说出 MONGODB ,一片哄笑,大爷说着不是我挑起来的。另外说起MYSQL,如果要使用外键规则来检测你商业的正确性,你只能在你的应用程序上来做,MYSQL 让你在数据库级别上丢失了一致性。
开发者知道自己在做什么,那是最好,但你要记住,你需要在应用程序里面来处理这样的关系,你自己来保证ACID。再给你们举个例子,如果你们要进行DD语句的操作,如果此时你的磁盘已经满了,你的系统应该回滚,但有些数据库就不行,如果遇到这样的情况你都不知道你在哪(画外音,纯粹和MYSQL过不去),你们应该很庆幸,POSTGRESQL 可以回滚在这样的情况下。很高兴的告诉你们POSTGRESQL DD 也是支持一致性的。

我们在来谈谈到底是在应用程序上做一致性检测好,还是在数据库上做好,两者的工作量以及你的代码量都是不一样的,通常他们是交替的,你中有我我中有你。
(省略翻译,这个大爷又把isolation解释了一遍),但整体都是在通过application来对应数据库的isolation.
Postgresql 可以给开发者什么,这才算是一个数据库重要的部分
1 Transactions (real transactions)
2 SQL (complicated SQL)
3 object Oriented
4 Extenstions
5 Rich data types
6 data processing
7 advanced indexing
8 Arrays xml json
下面这大爷,开始讲 SQL for Developers


从上下两个图,中可以看出POSTGRESQL 更改字段的类型,是非常方便的。尤其在你有一亿的数据量的情况下。
接下来是 SQL and Algorithms(算法),大爷,直接给出两个对比


完成同样的功能,PYTHON 要多少行,SQL 写的很简单,一目了然。
原文作者:;如有侵权,请联系管理员删除。