PolarDB PostgreSQL 快速入门
什么是PolarDB PostgreSQL

PolarDB PostgreSQL(下文简称为PolarDB)是一款阿里云自主研发的云原生数据库产品,100%兼容PostgreSQL,采用基于Shared-Storage的存储计算分离架构,具有极致弹性、毫秒级延迟、HTAP的能力。
- 极致弹性:存储与计算能力均可独立地横向扩展。
- 当计算能力不够时,可以单独扩展计算集群,数据无需复制。
- 当存储容量/IO不够时,可以单独扩展存储集群,而不中断业务。
- 毫秒级延迟:
- WAL日志存储在共享存储上,RW到所有RO之间仅复制WAL的元数据。
- 独创的LogIndex技术,实现了Lazy回放和Parallel回放,理论上最大程度地缩小了RW和RO节点间的延迟。
- HTAP能力:基于Shared-Storage的分布式并行执行框架,加速在OLTP场景下的OLAP查询。一套OLTP型的数据,可支持2套计算引擎:
- 单机执行引擎:处理高并发的TP型负载。
- 分布式执行引擎:处理大查询的AP型负载。
PolarDB还支持时空、GIS、图像、向量、搜索、图谱等多模创新特性,应对企业对数据处理日新月异的需求。
另外,除了上述Shared-Storage云原生的模式,PolarDB还支持以Shared-Nothing模式部署,详见distribute分支的Readme。
分支说明
PolarDB后续默认分支为main分支,支持存储计算分离的形态。distribute分支是分布式形态(对应之前的master分支)。
产品架构和版本规划
PolarDB采用了基于Shared-Storage的存储计算分离架构。数据库由传统的Share-Nothing,转变成了Shared-Storage架构。由原来的N份计算+N份存储,转变成了N份计算+1份存储。虽然共享存储上数据是一份,但是数据在内存中的状态是不同的,需要通过内存状态的同步来维护数据的一致性;同时主节点在刷脏时也需要做协调,避免只读节点读取到超前的“未来页面”,也要避免只读节点读取到过时的没有在内存中被正确回放的“过去页面”。为了解决该问题,PolarDB创造性地设计了LogIndex数据结构来维护页面的回放历史,该结构能够在主节点到只读节点进行同步。
在存储计算分离后,IO单路延迟变大的同时,IO的吞吐也变大了。在处理分析型查询时,仅使用单个只读节点无法发挥出存储侧的大IO带宽优势,也无法发挥其他只读节点的CPU/Mem/IO。为了解决该问题,PolarDB研发了基于Shared-Storage的并行执行引擎,能够在SQL级别上弹性利用任意数目的CPU来加速分析查询,支持HTAP的混合负载场景。
详情请查阅产品架构和版本规划。
文档
快速入门
我们提供了三种途径来使用PolarDB数据库:阿里巴巴云服务、搭建本地存储的实例、搭建基于PFS共享存储的实例(即将上线)。
阿里巴巴云服务
阿里云云原生关系型数据库PolarDB PostgreSQL引擎:官网地址。
搭建本地存储的实例
我们提供了一键部署脚本,助您快速编译PolarDB内核并搭建本地实例。本节介绍了如何通过提供的一键部署脚本,快速搭建存储为本地磁盘的PolarDB实例。
**操作系统要求:**CentOS 7.5及以上。以下步骤在CentOS 7.5上通过测试。
**说明:**请使用同一个用户进行以下步骤。请勿使用root用户搭建实例。
- 下载PolarDB源代码,地址:https://github.com/alibaba/PolarDB-for-PostgreSQL/tree/main。
- 安装相关依赖:
sudo yum install readline-devel zlib-devel perl-CPAN bison flex
sudo cpan -fi Test::More IPC::Run
- 根据不同的搭建场景,可选择不同的脚本执行命令:
- 只编译数据库源码,不创建本地实例:
./polardb_build.sh --noinit
- 编译并创建本地单节点实例,节点为主节点(端口为5432):
./polardb_build.sh
- 编译并创建本地多节点实例,节点包括:
- 主节点1个(端口为5432)。
- 只读节点1个(端口为5433)。
./polardb_build.sh --withrep --repnum=1
- 编译并创建本地多节点实例,节点包括:
- 主节点1个(端口为5432)。
- 只读节点1个(端口为5433)。
- 备库节点1个(端口为5434)。
./polardb_build.sh --withrep --repnum=1 --withstandby
- 编译并创建本地多节点实例,节点包括:
- 主节点1个(端口为5432)
- 只读节点2个(端口分别为5433与5434)
- 备库节点1个(端口为5435)。
./polardb_build.sh --withrep --repnum=2 --withstandby
- 部署完成后,需要进行实例检查和测试,确保部署正确。
- 实例检查:
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql -p 5432 -c 'select version();'
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql -p 5432 -c 'select * from pg_replication_slots;'
- 一键执行全量回归测试:
./polardb_build.sh --withrep --repnum=1 --withstandby -r-check-all -e -r-contrib -r-pl -r-external -r-installcheck-all
软件许可说明
PolarDB的代码的发布基于Apache 2.0版本和PostgreSQL代码的软件许可。相关的许可说明可参见License和NOTICE。
致谢
部分代码和设计思路参考了其他开源项目,例如:PG-XC/XL(pgxc_ctl)、TBase(部分基于时间戳的vacuum 和MVCC)、Greenplum以及Citus(pg_cron)。感谢以上开源项目的贡献。
联系我们
- 使用钉钉扫描如下二维码,加入PolarDB技术推广组钉钉群。
企业级分布式开源数据库 PolarDB for PostgreSQL-阿里云开发者社区
PolarDB PostgreSQL 快速入门的更多相关文章
- PostgreSQL快速入门
一.PostgreSQL是什么? PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS). 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们. PostgreSQ ...
- OpenStack云计算快速入门之二:OpenStack安装与配置
原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...
- 私有仓库GitLab快速入门篇
私有仓库GitLab快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 安装文档请参考官网:https://about.gitlab.com/installation/#ce ...
- 第一章 使用开发者模式快速入门 Odoo 12
本文为最好用的免费ERP系统Odoo 12开发手册系列文章第一篇. Odoo提供了一个快速应用开发框架,非常适合创建商业应用.这类应用通常用于保留业务记录,增删改查操作.Odoo 不仅简化了这类应用的 ...
- Python快速入门PDF高清完整版免费下载|百度云盘
百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...
- MySQL数据库快速入门与应用实战(阶段一)
MySQL数据库快速入门与应用实战(阶段一) 作者 刘畅 时间 2020-09-02 实验环境说明: 系统:centos7.5 主机名 ip 配置 slavenode3 172.16.1.123 4核 ...
- Nodejs ORM框架Sequelize快速入门
Nodejs ORM框架Sequelize快速入门 什么是ORM? 简单的讲就是对SQL查询语句的封装,让我们可以用OOP的方式操作数据库,优雅的生成安全.可维护的SQL代码.直观上,是一种Model ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
随机推荐
- 在Asp .net core 中通过属性映射实现动态排序和数据塑形
目录 属性映射服务实现 动态排序 数据塑形 属性映射服务实现 public class PropertyMappingValue { public IEnumerable<string> ...
- .net core signalR 全局异常处理
Hub的异常拦截 { } { } *:first-child { } *:last-child { } { } { } { } { } { } { } { } { } { } h6:first-chi ...
- Spring第一课:基于XML装配bean(四),三种实例化方式:默认构造、静态工厂、实例工厂
Spring中基于XML中的装配bean有三种方式: 1.默认构造 2.静态工厂 3.实例工厂 1.默认构造 在我们在Spring的xml文件中直接通过: <bean id=" ...
- 我对数据库关系代数中减法sql实现的思考:mysql脚本
一.创建数据库,创建表结构 CREATE DATABASE Test_sub DEFAULT CHARACTER SET utf8; USE Test_sub; CREATE TABLE studen ...
- REST设计风格:你写的 RESTful API 到第几层了?
理解REST 在理解其真正概念前,我们先来明确: REST它的核心思想是面向资源的抽象(相对于RPC就是面向过程抽象),它是一种设计风格的指导,而非具有较强约束的协议. REST源于Roy Thoma ...
- rabbitMq可靠性投递之配置(消息至交换机,至队列不通的回调)
@Bean public RabbitTemplate rabbitTemplate(CachingConnectionFactory factory) { //若使用confirm-callback ...
- 微信小程序 div选中效果
._left{ position: relative; margin-top: 40rpx; width: 40%; height: 350rpx; border-radius: 12rpx; tex ...
- java agent简介
java agent简介 主要就是两种,一种的方法是premain,一种是agentmain.这两种的区别是: premain是在jvm启动的时候类加载到虚拟机之前执行的 agentmain是可以在j ...
- client-go实战之一:准备工作
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- JVM双亲委派模型及其优点
JVM双亲委派模型及其优点 什么是双亲委派模型? 双亲委派模型: 如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器, ...