PostgreSQL是Odoo支持的数据库。PostgreSQL是起源于大学的一个历史很长的开源数据库系统。包括美国航天局NASA、德国证券交易中心、中国的平安、腾讯的微信支付、阿里巴巴的阿里云都在用PostgreSQL数据库。

PostgreSQL历史

上世纪70年代Edgar F. Codd博士研究关系数型据库理论时候,实际开发了一个数据库产品Ingres。Ingres名字是“Interactive Graphics Retrieval System”的缩写。后来的Sybase、微软的SQL Server也是基于这个Ingres数据库开发的产品。

1985年,加利福尼亚大学伯克利分校的Michael Stonebraker博士等人继承数据库Ingres,发布了Postgres数据库,这就是PostgreSQL的起源。1989年,Postgres 1.0在研究机构小范围内发布。1994年,Postgres发布了4.2版,随后,Postgres作为大学数据库研究项目终止了。

当时的Postgres数据库的查询语言不是SQL,是Postgres独有的。当时参与人员的感觉是“Postgres的引擎非常好,但没有方向盘,就像是用操作杆驾驶的汽车一样非常难操作”,也就是说Postgres的查询语言太难用了。因此,伯克利分校的研究生们用SQL替换了Postgres的查询语言,发布了Postgres95 。

虽然替换成SQL了,Postgres95(相当于Postgres版本5.0)在性能和可靠性方便还有待改善,另外开发人员太少也是个问题。因此,1996年,参考FreeBSD的做法,Postgres开发者分成了Core和Committer两种角色推进。

1995年,脱离大学研究项目,发布了Postgres95,而后,Postgres社区发起了命名的讨论,是用Postgres95,Postgres96呢,还是别的名字?最后决定,因为是在Postgres的基础上增加了SQL,因而用PostgreSQL的名字。版本也改成了5.0,6.0的版本号。

1996年,改名为PostgreSQL后一个月,1997年1月,发布了PostgreSQL 6.0。6.5版则增加了MVCC(MultiVersion Concurrency Control),性能大幅提高,同时增加了日文、中文等多字节字符的支持。

2000年前后出现了几个PostgreSQL服务的企业。最初诞生的是“PostgreSQL Inc”,该公司虽然在1997年设立了社区网站,但商业上却没有成功,慢慢地消失了。2000年“Great Bridge Inc”公司诞生了,该公司目标是做“数据库领域的红帽子”,同年入选了“25 Coolest Global Companies”,但也没多久就消失了。2004年诞生了EnterpriseDB公司,该公司一直持续到现在。该公司依托PostgreSQL开发者一起,面向企业提供PostgreSQL技术支持服务。

PostgreSQL的分支很多,基于PostgreSQL的衍生品也很多。SRA OSS的“PowerGres”,“富士通的Enterprise PostgreSQL”广为人知。其他的如数据仓库产品“Netezza”(被IBM收购),并行处理产品“Greenplum”,亚马逊Web Service之一的数据库服务“Redshift”,集群数据库“StormDB”,流数据库“TelegraphCQ”及其商业版“Truviso”(被思科收购),国内的阿里云PostgreSQL数据库服务等,都是基于PostgreSQL开发的。


PostgreSQL特性

PostgreSQL是一个功能强大的开源数据库系统。经过长达20年以上的积极开发和不断改进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSQL可以运行在所有主流操作系统上,包括Linux、Unix(AIX、BSD、HP-UX、SGI IRIX、Mac OS X、Solaris和Tru64)和Windows。PostgreSQL是完全的事务安全性数据库,完整地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等,也包含各种文档。

作为一种企业级数据库,PostgreSQL以它所具有的各种高级功能而自豪,像多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等。它支持国际字符集、多字节编码并支持使用当地语言进行排序、大小写处理和格式化等操作。它也在所能管理的大数据量和所允许的大用户量并发访问时间具有完全的高伸缩性。目前已有很多PostgreSQL的系统在实际生产环境下管理着超过4TB的数据。一些PostgreSQL系统的极限值如下表所列:


极限值:

最大单个数据库大小 不限

最大数据单表大小 32 TB

单条记录最大 1.6 TB

单字段最大允许 1 GB

单表允许最大记录数 不限

单表最大字段数 250 - 1600 (取决于字段类型)

单表最大索引数 不限

由于PostgreSQL的优异性能,它已赢得最终用户和业内的多次大奖,包括Linux新媒体(Linux New Media)的最佳数据库奖和5次Linux期刊编辑选出的最佳数据库奖。


PostgreSQL用户

PostgreSQL的知名用户包括Skype、NTT、Salesforce的Heroku云数据库平台、Etsy等大型企业。PostgreSQL在日本数据库市场有超过60%的市场占有率,大量的制造业、游戏行业、企业ERP系统都采用了PostgreSQL。

2010年以来,随着中国互联网的迅速崛起, PostgreSQL在国内迅速发展,受到越来越多的企业尤其是互联网企业重视。据公开报导,腾讯、阿里、中国平安、苏宁、去哪儿网、斯凯网络等企业都在大规模应用PostgreSQL。尤其是腾讯,基于PostgreSQL架构了TDW(Tencent Distributed Warehouse腾讯分布式数据仓库)平台,存储腾讯海量核心业务数据。

TDW(Tencent Distributed Warehouse):腾讯分布式数据仓库,是腾讯公司海量数据处理平台的核心部件,承载着腾讯公司各业务群产品数据(如互联网增值、SNS、网游、电商等)的储存和处理工作。目前,TDW支持百PB级数据的离线存储和计算,为业务提供海量、高效、稳定的大数据平台支持和决策支持。



据2017年PostgreSQL技术大会腾讯大数据工程师的发言,腾讯TDW数据仓库集群超过100台服务器,超过100T(1T = 1000G)的数据量。

苏宁Citus系统案例。苏宁Citus是一个大数据分析系统,业务场景大致是,每5分钟从多个业务系统抽取业务数据到Citus数据库,每次要更新Citus中10张明细表,大约更新30万条数据记录。Citus中保留最近若干天的数据,数据总量大约3000万条记录。Citus数据库每5分钟分析抽取一次数据,形成30多张不同用途的业务报表。

Citus原来是基于IBM的DB2数据库构建的,如下图所示,DB2已经不堪重负,尤其是大促时候。而且,预计一年后数据量将增长到10倍,也就是每5分钟要更新300万条数据,Citus数据量将达到3亿条数据记录。



苏宁Citus技术团队调查研究之后,决定用PostgreSQL替换IBM DB2数据库。替换后的压力测试表明,系统实际性能表现超过设计目标50%以上。上线运行半年以来,效果相当稳定。苏宁的案例表明,PostgreSQL性能表现远优于IBM的DB2!