《OdooERP应用与开发案例教程》试读:第二章-PostgreSQL概述

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 文/开源智造联合创始人老杨本文来自《OdooERP应用与开发案例教程》的试读章节。书籍尚未出版,请勿转载。欢迎您反馈阅读意见。 PostgreSQL是Odoo支持的数据库。PostgreSQL是起源于大学的一个历史很长的开源数据库系统。

文/开源智造联合创始人老杨

本文来自《OdooERP应用与开发案例教程》的试读章节。书籍尚未出版,请勿转载。欢迎您反馈阅读意见。

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!

文章编辑:开源智造(OSCG) - 源自欧洲,业界领先的免费开源ERP Odoo金牌服务机构


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
关系型数据库 Java 数据库连接
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
191 3
|
3月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
319 0
|
3月前
|
关系型数据库 Linux 网络安全
很详细的PostgreSQL安装部署教程
很详细的PostgreSQL安装部署教程
87 0
|
5月前
|
SQL 关系型数据库 PostgreSQL
【sql】PostgreSQL物化视图表使用案例
【sql】PostgreSQL物化视图表使用案例
53 0
|
6月前
|
关系型数据库 数据库 PostgreSQL
|
6月前
|
存储 JSON 关系型数据库
PostgreSQL Json应用场景介绍和Shared Detoast优化
PostgreSQL Json应用场景介绍和Shared Detoast优化
|
6月前
|
负载均衡 监控 关系型数据库
PostgreSQL从小白到高手教程 - 第48讲:PG高可用实现keepalived
PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived
221 1
|
6月前
|
SQL 关系型数据库 OLAP
PostgreSQL从小白到高手教程 - 第46讲:poc-tpch测试
PostgreSQL从小白到高手教程 - 第46讲:poc-tpch测试
152 3
|
6月前
|
关系型数据库 OLAP OLTP
PostgreSQL从小白到高手教程 - 第45讲:poc-tpcc测试
CUUG PostgreSQL技术大讲堂系列公开课第45讲-POC-TPCC测试的内容,往期视频及文档,请联系CUUG。
151 1
|
6月前
|
Oracle 关系型数据库 数据库
PostgreSQL从入门到精通教程 - 第42讲:pg_rman部署与使用
PostgreSQL从入门到精通教程 - 第42讲:pg_rman部署与使用
170 1