比这个夏天还要热的PostgreSQL数据库来啦!

avatar
@京东科技

什么是PostgreSQL?

云数据库 PostgreSQL 是京东云基于开源的 PostgreSQL 10.6 版本构建的一款功能强大的企业级关系型数据库管理系统。

PostgreSQL有“世界上可获得的最先进的开源数据库”之称,在过去20年的飞速发展中,该数据库已经广泛应用在GIS场景。如:移动应用、物流应用、金融数据分析等各个行业,逐渐成为企业首选商业级数据库。

云数据库可帮助您轻松在云端进行部署、操作、管理和扩展PostgreSQL,省去绝大部分复杂而繁琐的管理工作,更专注于业务流程的开发与建设。

 

一、产品优势

云数据库PostgreSQL相比于传统关系型数据库,具有以下优势:

1、丰富性

支持多种编程语言编写存储过程和函数,可支持主流开发语言包括C/C++/Perl/Python/Java/JavaScript/PHP等,支持广泛的数据类型包括几何类型、网络地址类型、JSON类型等。更允许用户按业务需求自定义数据类型,并可灵活配置和操作。

2、灵活性

提供图形界面化的管理工具和非界面化的命令行查询工具,无论您是想通过脚本控制,还是通过控制台图形化工具操作,PostgreSQL都能满足您的需求。同时,PostgreSQL还提供一款可以整合其他数据库的管理工具,可实现多数据库之间的数据连接和迁移。

3、专业性

支持标准的SQL查询语句,支持PostGIS空间类型,支持GIS几何数据类型、范围类型、IP类型,可满足基于地理位置的空间查询、空间索引、空间分析。

 

二、产品架构

云数据库PostgreSQL整体架构图:

Service:业务逻辑层,负责处理一些业务逻辑 UC:用户中心 Orde:订单系统 Trade:交易系统 Sentinel:哨兵服务,监听实例存活情况等其他职责 Manager:管理服务,执行具体的创建实例,删除实例等其他职责 Container:计算服务,运行云数据库 PostgreSQL 实例 SDN:SDN网络服务 OSS:京东云对象存储服务 JMonitor:监控服务

 

三、产品特性

云数据库PostgreSQL作为一个合格的数据存储服务,核心满足服务高可用性和数据高可用性。

1、高可用性

京东云云数据库 PostgreSQL 采用的是本地盘的数据存储方式,所以为了保证服务的高可用性,那么必须采用集群的方式来部署云数据库 PostgreSQL 服务。

PostgreSQL 的集群方式可以是一主一从,一主两从,或者一主多从,PostgreSQL 把从称之为:Hot Standby。京东云云数据库 PostgreSQL采用一主一从模式,保证了服务高可用性的同时,将成本降至最低。

PostgreSQL和MySQL 一样,将主从同步方式分为全同步、半同步、异步三种方式,考虑性能和数据一致性两大因素,选择半同步方式。

PostgreSQL 从 9.0 版本开始,主从的数据同步方式(同步WAL日志)支持以下两种:

异步流复制:事务提交之后不必等日志传递到 standby 就即可返回,从实例数据有一定的延迟。

同步流复制:当主实例事务提交之后,一定会等到日志传递到 standby后才返回,可以做到数据零丢失。

由于京东云云数据库 PostgreSQL 集群采用的是一主一从架构,如果数据同步方式采用同步流复制,那么当 standby 不可用的时候,会导致无法正常的往 PostgreSQL 集群中写数据。所以为了确保集群的高可用性,京东云云数据库 PostgreSQL 采用的主从数据同步方式为:异步流复制。

同时,京东云云数据库 PostgreSQL 集群是跨机架跨物理机部署的,如果创建的时候选择了跨可用区的话,集群的主从实例还能分别部署在两个不用的可用区。在这样的部署架构下,集群中的主从实例同时不可用的概率极低。

自动高可用—来看下京东云云数据库 PostgreSQL 是如何实现自动高可用的:

京东云云数据库 PostgreSQL 集群包括了主从两个实例,即上图的Master 和 Slave。Master和Slave会定时上报心跳信息给Sentinel服务,汇报自己的存活情况;当Slave长时间未上报心跳信息,Sentinel会认为此时Slave已经不可用了,这时 Sentinel 就会触发自动高可用的命令,告诉Manager需要新建一个从实例,即上图的Slave。Slave会根据一个最近的全量备份进行创建,当创建成功之后,会设置与Master的主从关系,从Master同步增量的数据。

2、高可靠性

京东云云数据库 PostgreSQL 提供了自动备份服务,实例每天会定时的备份一次,同时在此期间产生的所有 WAL* 日志,都会同步到京东云 OSS 服务(OSS 中的数据是三副本存储的)中。

针对云数据库 PostgreSQL 的自动备份,我们采用了官方提供的 pg_baseBackup*命令行工具,定时的在从实例上进行全量数据备份操作,并实时将数据同步到京东云 OSS 服务中,确保了备份操作不会影响用户对主实例的操作。

除了会定时进行全量备份外,针对增量的数据WAL日志,我们也做了同步处理,将日志实时同步到京东云 OSS 服务中。基于这种机制,京东云云数据库 PostgreSQL 允许根据时间点(从当前时间往前推 7 天内的任意时间点)创建新的实例。

自动全量备份—来看下京东云云数据库 PostgreSQL 是如何实现自动全量备份的:

京东云云数据库 PostgreSQL 支持自定义每天全量备份的执行时间。在进行全量备份的过程中,为了不影响正常的业务使用,京东云云数据库 PostgreSQL 的全量备份基于 Slave 实例,并将备份文件实时的上传到京东云 OSS 上。

 

四、应用场景

PostgreSQL由于其强大的数据类型支持及出色的函数扩展及兼容能力,在企业级商用数据库和GIS场景中有广泛的应用,,以下列举几个简单场景。

1、企业级商用数据库

商用数据库要求高可用、高可靠,往往业务逻辑复杂多变,尤其在金融行业如交易系统、财务系统等涉及到资金流转、客户信息管理等,要求数据不能丢失且实时同步。PostgreSQL可保证数据一致的前提下提供高可用性和高可靠性,灵活的数据类型配置可通过简单的编程语句实现复杂逻辑的业务操作。

2、物流行业应用

物流行业快递的配送和揽件算法关系到快递配送或揽件的时效,直接关系到物流公司的运作成本。寄件场景如寄件和揽件同时发生如何根据快递员所在位置调度,货物从终点仓库到网点的物流调度路径问题均是基于地理信息几何数据关系复杂计算的。PostgreSOL支持GIS几何类型和PostGIS插件,可解决基于位置信息的最短路径问题。

3、基于LBS应用

移动互联网发展离不开地理位置信息的存储、查询和计算。应用场景如基于LBS应用如大型游戏、需要支持世界地图、O2O附件商家距离计算、订单配送等问题,基于用户所在商场地理位置商家推荐等。PostgreSQL支持SQL运行位置查询,不需要编写复杂的代码即可实现,提高基于LBS存储与计算效率。

 

结语

云数据库 PostgreSQL 是京东云数据库团队历时1年多的研发产品,此产品凝聚了京东云数据库团队多年PostgreSQL使用经验,提供一个稳定、可靠的数据存储服务。 云数据库 PostgreSQL 易于部署、管理和扩展,默认支持主从热备架构,提供数据备份、故障恢复、监控等全套解决方案,彻底解决数据库运维的烦恼。

同时,京东云数据库 PostgreSQL 通过使用网络隔离、使用白名单限制外网访问等方式,为数据库服务提供了高级别的安全性需求,助您省去绝大部分复杂而繁琐的管理工作,更专注于业务流程的开发与建设。


点击"京东云"了解更多详情