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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB资源隔离技术:在多租户环境中的应用与优化
【5月更文挑战第29天】PolarDB,阿里云的云原生数据库,在多租户环境中通过逻辑(Schema/Partition隔离)和物理(分布式存储计算节点)隔离保障数据安全和资源独占。它支持动态资源分配,适应不同租户需求,处理大规模并发,提供租户管理及数据访问控制功能。通过优化资源分配算法、提升事务处理能力和强化监控告警,PolarDB确保性能和稳定性,满足多租户的高效数据库服务需求。
77 1
|
9天前
|
监控 关系型数据库 分布式数据库
PolarDB开源项目成熟,强调插件开发与第三方工具集成,打造丰富生态。
【7月更文挑战第3天】PolarDB开源项目成熟,强调插件开发与第三方工具集成,打造丰富生态。插件开发涉及需求分析、接口设计、编码、测试和文档撰写。示例展示了性能监控插件的Go代码实现。此外,与DMS的数据迁移工具及Prometheus+Grafana监控系统的集成示例,展示了其易用性。PolarDB通过开放接口鼓励开发者参与生态建设,共同推动数据库技术进步。
23 1
|
12天前
|
关系型数据库 MySQL Serverless
Serverless 应用引擎产品使用合集之在SAE2.0上的应用如何访问云原生数据库PolarDB MySQL版集群
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
14天前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之Federated引擎有哪些基本概念和术语概述
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
18天前
|
关系型数据库 MySQL 数据库
关系型数据库MySQL开发要点之多表设计案例详解代码实现
关系型数据库MySQL开发要点之多表设计案例详解代码实现
28 2
|
16天前
|
关系型数据库 分布式数据库 API
PolarDB产品使用问题之如何保持应用的链接字符串不变,进行迁移
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2月前
|
SQL 关系型数据库 测试技术
关系型数据库应用代码审查
【5月更文挑战第21天】
28 1
|
2月前
|
存储 关系型数据库 物联网
【PolarDB开源】PolarDB在物联网(IoT)数据存储中的应用探索
【5月更文挑战第27天】PolarDB,阿里云的高性能云数据库,针对物联网(IoT)数据存储的挑战,如大规模数据、实时性及多样性,展现出高扩展性、高性能和高可靠性。它采用分布式架构,支持动态扩展,保证99.95%的高可用性,并能处理结构化、半结构化和非结构化数据。通过SDK实现数据实时写入,支持SQL查询和冷热数据分层,有效降低成本。随着IoT发展,PolarDB在该领域的应用将更加广泛。
138 1
|
2月前
|
监控 关系型数据库 分布式数据库
【PolarDB开源】PolarDB在电商场景的应用:应对高并发与数据一致性挑战
【5月更文挑战第26天】阿里云PolarDB是为电商解决高并发和数据一致性问题的云原生数据库。它采用读写分离、弹性扩展和分布式缓存策略应对高并发,通过全局时钟、分布式事务和数据复制保证数据一致性。在大型促销活动中,电商平台可提前扩容、启用读写分离、优化索引并设置监控告警来应对挑战。PolarDB助力电商构建高性能、高可用的数据处理系统,赢得市场优势。
129 1
|
28天前
|
SQL 关系型数据库 PostgreSQL
【sql】PostgreSQL物化视图表使用案例
【sql】PostgreSQL物化视图表使用案例
19 0