PolarDB for PostgreSQL(下文简称为 PolarDB)是一款阿里云自主研发的云原生数据库产品,100% 兼容 PostgreSQL,采用基于 Shared-Storage 的存储计算分离架构,具有极致弹性、毫秒级延迟、HTAP 的能力。
PolarDB 还支持时空、GIS、图像、向量、搜索、图谱等多模创新特性,应对企业对数据处理日新月异的需求。
POLARDB_11_STABLE
为稳定分支,持存储计算分离的云原生形态。 distribute
分支支持分布式形态。
PolarDB 采用了基于 Shared-Storage 的存储计算分离架构。数据库由传统的 Share-Nothing 架构,转变成了 Shared-Storage 架构。由原来的 N 份计算 + N 份存储,转变成了 N 份计算 + 1 份存储。虽然共享存储上数据是一份,但是数据在各节点内存中的状态是不同的,需要通过内存状态的同步来维护数据的一致性;同时主节点在刷脏时也需要做协调,避免只读节点读取到超前的 “未来页面”,也要避免只读节点读取到过时的没有在内存中被正确回放的 “过去页面”。为了解决该问题,PolarDB 创造性地设计了 LogIndex 数据结构来维护页面的回放历史,该结构能够实现主节点与只读节点之间的同步。
在存储计算分离后,I/O 单路延迟变大的同时,I/O 的吞吐也变大了。在处理分析型查询时,仅使用单个只读节点无法发挥出存储侧的大 I/O 带宽优势,也无法利用其他只读节点的 CPU、内存和 I/O 资源。为了解决该问题,PolarDB 研发了基于 Shared-Storage 的并行执行引擎,能够在 SQL 级别上弹性利用任意数目的 CPU 来加速分析查询,支持 HTAP 的混合负载场景。
详情请查阅 产品架构。
如果您已安装 Docker,那么可以从 DockerHub 上拉取 PolarDB for PostgreSQL 的 本地存储实例镜像,创建、运行并进入容器,然后直接使用 PolarDB 实例:
# 拉取单节点 PolarDB 镜像
docker pull polardb/polardb_pg_local_instance:single
# 创建运行并进入容器
docker run -it --cap-add=SYS_PTRACE --privileged=true --name polardb_pg_single polardb/polardb_pg_local_instance:single bash
# 测试实例可用性
psql -h 127.0.0.1 -c 'select version();'
version
--------------------------------
PostgreSQL 11.9 (POLARDB 11.9)
(1 row)
对于更多进阶部署方式,请移步在线文档中的 进阶部署。在部署前,我们建议您先了解一下 PolarDB for PostgreSQL 的 架构简介。
请移步本项目的 在线文档网站 查阅完整文档。
如果需要在本地预览或开发文档,请参考 贡献文档。
我们诚挚欢迎社区参与 PolarDB 的贡献,无论是代码还是文档。
以下是贡献者列表(由 contrib.rocks 支持):
PolarDB for PostgreSQL 的源代码遵循 Apache 2.0 许可证,基于遵循 PostgreSQL 许可证的 PostgreSQL 开发。其中还包含了部分遵循其它开源许可证的第三方组件。请移步 LICENSE 和 NOTICE 了解更多信息。
部分代码和设计思路参考了其他开源项目,例如:PG-XC/XL (pgxc_ctl)、TBase (部分基于时间戳的 vacuum 和 MVCC)、Greenplum 以及 Citus (pg_cron)。感谢以上开源项目的贡献。
PolarDB PostgreSQL Slack:https://app.slack.com/client/T023NM10KGE/C023VEMKS02
使用钉钉扫描如下二维码,加入 PolarDB 技术推广组钉钉群
Copyright © Alibaba Group, Inc.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。