Comparison
Module:
Categories:
Comparing to RDS
Pigsty is an AGPLv3-licensed, local-first RDS alternative that can be deployed on your own physical machines/virtual machines, or on cloud servers.
Therefore, we chose the world’s leading Amazon Cloud AWS RDS for PostgreSQL and China’s market leader Alibaba Cloud RDS for PostgreSQL as benchmarks.
Both Alibaba Cloud RDS and AWS RDS are proprietary cloud database services, offered only on the public cloud through a leasing model. The following comparison is based on the latest PostgreSQL 16 main branch version, with the comparison cut-off date being February 2024.
Features
Item | Pigsty | Aliyun RDS | AWS RDS |
---|---|---|---|
Major Version | 12 - 17 | 12 - 17 | 12 - 17 |
Read on Standby | Of course | Not Readable | Not Readable |
Separate R & W | By Port | Paid Proxy | Paid Proxy |
Offline Instance | Yes | Not Available | Not Available |
Standby Cluster | Yes | Multi-AZ | Multi-AZ |
Delayed Instance | Yes | Not Available | Not Available |
Load Balancer | HAProxy / LVS | Paid ELB | Paid ELB |
Connection Pooling | Pgbouncer | Paid Proxy | Paid RDS Proxy |
High Availability | Patroni / etcd | HA Version Only | HA Version Only |
Point-in-Time Recovery | pgBackRest / MinIO | Yes | Yes |
Monitoring Metrics | Prometheus / Exporter | About 9 Metrics | About 99 Metrics |
Logging Collector | Loki / Promtail | Yes | Yes |
Dashboards | Grafana / Echarts | Basic Support | Basic Support |
Alerts | AlterManager | Basic Support | Basic Support |
Extensions
Here are some important extensions in the PostgreSQL ecosystem. The comparison is base on PostgreSQL 16 and complete on 2024-02-29:
Category | Pigsty | Aliyun RDS PG | AWS RDS PG |
---|---|---|---|
Add Extension | Free to Install | Not Allowed | Not Allowed |
Geo Spatial | PostGIS 3.4.2 | PostGIS 3.3.4 | PostGIS 3.4.1 |
Time Series | TimescaleDB 2.14.2 | ||
Distributive | Citus 12.1 | ||
AI / ML | PostgresML 2.8.1 | ||
Columnar | Hydra 1.1.1 | ||
Vector | PGVector 0.6 | pase 0.0.1 | PGVector 0.6 |
Sparse Vector | PG Sparse 0.5.6 | ||
Full-Text Search | pg_bm25 0.5.6 |
||
Graph | Apache AGE 1.5.0 | ||
GraphQL | PG GraphQL 1.5.0 | ||
Message Queue | pgq 3.5.0 | ||
OLAP | pg_analytics 0.5.6 | ||
DuckDB | duckdb_fdw 1.1 | ||
CDC | wal2json 2.5.3 | wal2json 2.5 | |
Bloat Control | pg_repack 1.5.0 | pg_repack 1.4.8 | pg_repack 1.5.0 |
Point Cloud | PG PointCloud 1.2.5 | Ganos PointCloud 6.1 |
AWS RDS 扩展
AWS RDS for PostgreSQL 16 可用扩展(已刨除PG自带扩展)
name | pg16 | pg15 | pg14 | pg13 | pg12 | pg11 | pg10 |
---|---|---|---|---|---|---|---|
amcheck | 1.3 | 1.3 | 1.3 | 1.2 | 1.2 | yes | 1 |
auto_explain | yes | yes | yes | yes | yes | yes | yes |
autoinc | 1 | 1 | 1 | 1 | null | null | null |
bloom | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
bool_plperl | 1 | 1 | 1 | 1 | null | null | null |
btree_gin | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.2 |
btree_gist | 1.7 | 1.7 | 1.6 | 1.5 | 1.5 | 1.5 | 1.5 |
citext | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 |
cube | 1.5 | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 | 1.2 |
dblink | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
dict_int | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
dict_xsyn | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
earthdistance | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
fuzzystrmatch | 1.2 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
hstore | 1.8 | 1.8 | 1.8 | 1.7 | 1.6 | 1.5 | 1.4 |
hstore_plperl | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
insert_username | 1 | 1 | 1 | 1 | null | null | null |
intagg | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
intarray | 1.5 | 1.5 | 1.5 | 1.3 | 1.2 | 1.2 | 1.2 |
isn | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 |
jsonb_plperl | 1 | 1 | 1 | 1 | 1 | null | null |
lo | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
ltree | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 | 1.1 | 1.1 |
moddatetime | 1 | 1 | 1 | 1 | null | null | null |
old_snapshot | 1 | 1 | 1 | null | null | null | null |
pageinspect | 1.12 | 1.11 | 1.9 | 1.8 | 1.7 | 1.7 | 1.6 |
pg_buffercache | 1.4 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_freespacemap | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_prewarm | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 |
pg_stat_statements | 1.1 | 1.1 | 1.9 | 1.8 | 1.7 | 1.6 | 1.6 |
pg_trgm | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 | 1.4 | 1.3 |
pg_visibility | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_walinspect | 1.1 | 1 | null | null | null | null | null |
pgcrypto | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pgrowlocks | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pgstattuple | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 |
plperl | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
plpgsql | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
pltcl | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
postgres_fdw | 1.1 | 1.1 | 1.1 | 1 | 1 | 1 | 1 |
refint | 1 | 1 | 1 | 1 | null | null | null |
seg | 1.4 | 1.4 | 1.4 | 1.3 | 1.3 | 1.3 | 1.1 |
sslinfo | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
tablefunc | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
tcn | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
tsm_system_rows | 1 | 1 | 1 | 1 | 1 | 1 | 1.1 |
tsm_system_time | 1 | 1 | 1 | 1 | 1 | 1 | 1.1 |
unaccent | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
uuid-ossp | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
Aliyun Extensions
阿里云 RDS for PostgreSQL 16 可用扩展(已刨除PG自带扩展)
name | pg16 | pg15 | pg14 | pg13 | pg12 | pg11 | pg10 |
---|---|---|---|---|---|---|---|
bloom | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
btree_gin | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.2 |
btree_gist | 1.7 | 1.7 | 1.6 | 1.5 | 1.5 | 1.5 | 1.5 |
citext | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 |
cube | 1.5 | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 | 1.2 |
dblink | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
dict_int | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
earthdistance | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
fuzzystrmatch | 1.2 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
hstore | 1.8 | 1.8 | 1.8 | 1.7 | 1.6 | 1.5 | 1.4 |
intagg | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
intarray | 1.5 | 1.5 | 1.5 | 1.3 | 1.2 | 1.2 | 1.2 |
isn | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 |
ltree | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 | 1.1 | 1.1 |
pg_buffercache | 1.4 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_freespacemap | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_prewarm | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 |
pg_stat_statements | 1.1 | 1.1 | 1.9 | 1.8 | 1.7 | 1.6 | 1.6 |
pg_trgm | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 | 1.4 | 1.3 |
pgcrypto | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pgrowlocks | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pgstattuple | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 |
plperl | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
plpgsql | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
pltcl | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
postgres_fdw | 1.1 | 1.1 | 1.1 | 1 | 1 | 1 | 1 |
sslinfo | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
tablefunc | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
tsm_system_rows | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
tsm_system_time | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
unaccent | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
uuid-ossp | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
xml2 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
Performance
Metric | Pigsty | Aliyun RDS | AWS RDS |
---|---|---|---|
Best Performance | PGTPC on NVME SSD evaluation sysbench oltp_rw | RDS PG Performance Whitepaper sysbench oltp scenario per-core QPS 4000 ~ 8000 | |
Storage Specs: Maximum Capacity | 32TB / NVME SSD | 32 TB / ESSD PL3 | 64 TB / io2 EBS Block Express |
Storage Specs: Maximum IOPS | 4K random read: up to 3M, random write 2000~350K | 4K random read: up to 1M | 16K random IOPS: 256K |
Storage Specs: Maximum Latency | 4K random read: 75µs, random write 15µs | 4K random read: 200µs | 500µs / inferred for 16K random IO |
Storage Specs: Maximum Reliability | UBER < 1e-18, equivalent to 18 nines MTBF: 2 million hours 5DWPD, for three years | Reliability 9 nines, equivalent to UBER 1e-9 Storage and Data Reliability | Durability: 99.999%, five nines (0.001% annual failure rate) io2 details |
Storage Specs: Maximum Cost | 31.5 ¥/TB·month ( 5-year warranty amortized / 3.2T / enterprise-grade / MLC ) | 3200¥/TB·month (List price 6400¥, monthly package 4000¥) 3-year prepay total 50% off for this price | 1900 ¥/TB·month for using the maximum specs 65536GB / 256K IOPS maximum discount |
Observability
Pigsty offers nearly 3000 monitoring metrics, providing over 50 monitoring dashboards, covering database monitoring, host monitoring, connection pool monitoring, load balancing monitoring, etc., offering users an unparalleled observability experience.
Pigsty offers 638 PostgreSQL-related monitoring metrics, while AWS RDS only has 99, and Aliyun RDS has merely single-digit metrics:
Additionally, there are some projects that offer the capability to monitor PostgreSQL, but they are relatively basic and simplistic:
- pgwatch: 123 Metrics
- pgmonitor : 156 Metrics
- datadog : 69 Metrics
- pgDash
- ClusterControl
- pganalyze
- Aliyun RDS : 8 Metrics
- AWS RDS : 99 Metrics
- Azure RDS
Maintainability
** Metric** | Pigsty | Aliyun RDS | AWS RDS |
---|---|---|---|
System Usability | Simple | Simple | Simple |
Configuration Management | Configuration file / CMDB based on Ansible Inventory | Can use Terraform | Can use Terraform |
Change Method | Idempotent playbooks based on Ansible Playbook | Operations via console | Operations via console |
Parameter Tuning | Automatically adapts based on node with four preset templates: OLTP, OLAP, TINY, CRIT | ||
Infra as Code | Native support | Can use Terraform | Can use Terraform |
Customizable Parameters | Pigsty Parameters 283 items | ||
Service and Support | Commercial subscription support available | After-sales ticket support provided | After-sales ticket support provided |
No Internet Deployment | Possible offline installation and deployment | N/A | N/A |
Database Migration | playbooks for zero-downtime migration from existing Postgres into Pigsty | Provides cloud migration assistance Aliyun RDS Data Synchronization |
Cost
Experience shows that the per-unit cost of hardware and software resources for RDS is 5 to 15 times that of self-built solutions, with the rent-to-own ratio typically being one month. For more details, please refer to Cost Analysis.
Factor | Metric | Pigsty | Aliyun RDS | AWS RDS |
---|---|---|---|---|
Cost | Software License/Service Fees | Free, hardware about 20 - 40 ¥/core·month | 200 ~ 400 ¥/core·month | 400 ~ 1300 ¥/core·month |
Service Support Fees | Service about 100 ¥/ core·month | Included in RDS costs |
Other Vendors
Kubernetes Operators
Pigsty refuse to run database inside kubernetes, but if you wish to do so, there are other options:
- PGO
- StackGres
- CloudNativePG
- TemboOperator
- PostgresOperator
- PerconaOperator
- Kubegres
- KubeDB
- KubeBlocks
Reference:
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.