Cách tận dụng Postgres
(github.com/Olshansk)- Kho lưu trữ này tập hợp và giới thiệu các công cụ cũng như ví dụ sử dụng Postgres cho nhiều mục đích khác nhau, theo định hướng “Keep It Simple Stupid, just use postgres”
- Danh sách được lấy cảm hứng từ bài viết Postgres for Everything của Amazing CTO và GitHub gist của @cpursley, và được duy trì vì các công cụ mới hoặc cách tận dụng mới trên nền Postgres liên tục xuất hiện
- Phạm vi rất rộng, bao gồm tác vụ cron, Postgres nhúng, hàng đợi thông điệp, phân tích, GIS, nhật ký kiểm toán, kiểm soát truy cập, tìm kiếm, chuỗi thời gian, NoSQL, đồ thị, HTTP, API, CDC, caching, kiểm thử, migration, tinh chỉnh hiệu năng, giám sát, mở rộng, UI, CLI, trực quan hóa, quản lý gói, bảo mật, cho đến sổ cái tài chính
- Mỗi mục sắp xếp các phần mở rộng Postgres, thư viện, nền tảng API, bài viết và công cụ chủ yếu dưới dạng liên kết; một số mục được liên hệ với các công nghệ cụ thể như DuckDB, pgvector, PostGIS, PgBouncer, GraphQL, CDC
- Người dùng muốn bổ sung ví dụ về đoạn mã, công cụ hoặc dự án cụ thể cần mở PR kèm liên kết và sử dụng pull request template mới
Mục đích và cách duy trì kho lưu trữ
- Mục tiêu của kho lưu trữ Postgres for Everything là cho thấy các cách dùng Postgres cho nhiều mục đích khác nhau
- Kho lưu trữ được lấy cảm hứng từ các tài liệu sau
- Vì các công cụ mới xuất hiện trên nền Postgres hoặc các cách tận dụng mới liên tục được tạo ra, kho này được duy trì như một nơi để theo dõi chúng
- Nếu có ví dụ khác, có thể gửi PR
- Để giới thiệu đoạn mã, công cụ hoặc dự án, cần mở PR kèm liên kết và sử dụng pull request template
Bài đọc và bài viết ví dụ
- Bao gồm các bài viết về khả năng mở rộng của Postgres, pattern, cách dùng hàm trong cơ sở dữ liệu, tối ưu hóa và tính năng của PostgreSQL
Chạy tác vụ, nhúng, hàng đợi
-
Cron Jobs
-
Embeddable Postgres
-
Message Queues
- tembo-io/pgmq
- SKIP LOCKED
- sequinstream/sequin: công cụ CDC gửi các hàng và thay đổi của Postgres tới các nền tảng streaming và hàng đợi như Kafka, SQS
- janbjorge/pgqueuer: thư viện hàng đợi tác vụ Python tận dụng PostgreSQL
- smartpricing/queen: hàng đợi thông điệp dựa trên PostgreSQL, cung cấp phân vùng FIFO độc lập, consumer group kiểu Kafka và exactly-once delivery
Phân tích, bản đồ, kiểm toán, quyền hạn
-
Analytics
- paradedb/pg_analytics: cung cấp phân tích data lake dựa trên DuckDB trong Postgres
- duckdb/pg_duckdb: phần mở rộng Postgres chính thức cho DuckDB
- BemiHQ/BemiDB: bản sao đọc Postgres được tối ưu cho phân tích
- Mooncake-Labs/pg_mooncake: phần mở rộng bổ sung lưu trữ dạng cột và thực thi vector hóa DuckDB bên trong Postgres
- ClickHouse/pg_clickhouse: chạy các truy vấn phân tích ClickHouse từ PostgreSQL mà không cần viết lại SQL
-
GIS & Mapping
-
Audit Logs
- supabase/supa_audit
- pgMemento/pgMemento
- pgaudit/pgaudit
- BemiHQ/Bemi: tự động theo dõi thay đổi dữ liệu PostgreSQL
-
Access Control & Authorization
Tìm kiếm, chuỗi thời gian, dạng cột, NoSQL, đồ thị
-
Full Text Search
- Postgres Full Text Search: tập hợp các liên kết liên quan
- pg_search: tìm kiếm toàn văn trên Postgres sử dụng BM25
- plpgsql_bm25: tìm kiếm BM25 được triển khai bằng PL/pgSQL
-
Vector Search
- pgvector/pgvector
- tensorchord/VectorChord: phần mở rộng tìm kiếm độ tương đồng vector cho PostgreSQL, hướng tới khả năng mở rộng, hiệu năng cao và hiệu quả về đĩa
- timescale/pgai: phần mở rộng dựa trên pgvector hỗ trợ phát triển RAG, tìm kiếm ngữ nghĩa và ứng dụng AI ngay trong Postgres
- timescale/pgvectorscale: triển khai chỉ mục vector DiskANN bổ sung cho pgvector
-
Hybrid Search
- plpgsql_bm25rrf.sql: tìm kiếm lai kết hợp BM25 và pgvector bằng Reciprocal Rank Fusion
-
Time Series
- timescale/timescaledb: PostgreSQL++ cho chuỗi thời gian và sự kiện
- tembo-io/pg_timeseries: phần mở rộng chuỗi thời gian mã nguồn mở cho PostgreSQL
-
Column Oriented
- paradedb/paradedb: Postgres cho tìm kiếm và phân tích
- pg_duckdb: lưu trữ dạng cột DuckDB trong Postgres
-
NoSQL
- JSON Types: hỗ trợ JSON native của PostgreSQL
- Using JSONB in PostgreSQL: cách lưu trữ và lập chỉ mục dữ liệu JSON trong PostgreSQL
-
Graph Data
- Apache Age: cơ sở dữ liệu đồ thị cho PostgreSQL, cung cấp khả năng xử lý và phân tích dữ liệu đồ thị trong cơ sở dữ liệu quan hệ
Dữ liệu bên ngoài, HTTP, API, GraphQL, CDC
-
Foreign Data
-
HTTP
-
API Platforms
- PostgREST: tạo RESTful API từ cơ sở dữ liệu PostgreSQL hiện có
- Hasura GraphQL Engine: nền tảng API dựa trên metadata
-
GraphQL and Alternative Query Languages
- PostGraphile: GraphQL API tự động cho PostgreSQL
- supabase/pg_graphql: phần mở rộng PostgreSQL cho phép truy vấn GraphQL bằng một hàm SQL duy nhất
- dosco/graphjin: tự động chuyển đổi GraphQL thành truy vấn SQL
- kaspermarstal/plprql: phần mở rộng PostgreSQL để viết hàm bằng PRQL
-
Events, Replication, CDC
- aws/pgactive: phần mở rộng sao chép của AWS để tạo cơ sở dữ liệu active-active
- xataio/pgstream: CLI và thư viện CDC gửi sao chép Postgres, bao gồm cả thay đổi DDL, tới đích xuất
- electric-sql/electric: HTTP API đồng bộ hóa Shapes của cơ sở dữ liệu Postgres
- SQL Notify
- debezium/debezium
- 2ndQuadrant/pglogical
Bộ nhớ đệm, kiểm thử, ứng dụng, migration
-
Caching
- tidwall/pogocache: lớp caching tập trung vào độ trễ và hiệu quả CPU
- readysettech/readyset
-
Unit Tests
-
HTML & Applications
-
Migrations
- purcell/postgresql-migrations
- Bytebase
- xataio/pgroll
- stripe/pg-schema-diff
- pgschema/pgschema: CLI mang đến quy trình migration schema khai báo kiểu Terraform cho Postgres
Hiệu năng, giám sát, mở rộng, UI
-
Performance Tuning
- Supabase Index Advisor
- Dexter
- HypoPG
- pg_hint_plan
- PGHero
- pg_incremental: phần mở rộng để xử lý batch tăng dần nhanh và đáng tin cậy
- pgassistant: trợ lý dành cho nhà phát triển, giúp hiểu và tối ưu hiệu năng PostgreSQL
-
Monitoring
-
Testing
- regresql: công cụ kiểm thử hồi quy truy vấn SQL hỗ trợ PostgreSQL
-
Scaling & Storage
- Snowflake-Labs/pg_lake: tận dụng Postgres như một hệ thống lakehouse độc lập, hỗ trợ giao dịch và truy vấn trên các bảng Iceberg trong object storage như S3
- pgdogdev/pgdog: transaction pooler và trình quản lý logical replication có khả năng sharding PostgreSQL
- pgbouncer/pgbouncer: connection pooler gọn nhẹ cho PostgreSQL
- orioledb.com: phần mở rộng PostgreSQL kết hợp ưu điểm của engine on-disk và in-memory
-
User Interfaces & Dashboards
- Baserow
- NocoDB
- AppSmith
- mathesar-foundation/mathesar: giao diện kiểu bảng tính cho phép người dùng ở nhiều trình độ kỹ thuật khác nhau xem, chỉnh sửa, truy vấn và cộng tác trên dữ liệu Postgres
Công cụ cho nhà phát triển, trực quan hóa, gói, bảo mật, tài chính
-
CLIs
- dbcli/pgcli: client Postgres cung cấp tự động hoàn thành và tô sáng cú pháp
- sosedoff/pgweb: trình khám phá cơ sở dữ liệu PostgreSQL đa nền tảng dựa trên web
- Maxteabag/sqlit: TUI cho cơ sở dữ liệu SQL, bao gồm PostgreSQL
-
Visualization
- dr-jts/pg_svg: tập hợp hàm PostgreSQL chuyển đổi PostGIS geometry thành tài liệu SVG có áp dụng style
- Evidence
- Metabase
- Hopara: nền tảng trực quan hóa dữ liệu thời gian thực cho sản xuất, IoT, khoa học sự sống và data lake
- posit-dev/ggsql: phần mở rộng SQL trực quan hóa dữ liệu khai báo dựa trên Grammar of Graphics
-
Package Management
-
Language Servers
- supabase/postgres-language-server: bộ công cụ ngôn ngữ và triển khai LSP cho Postgres
-
Data Privacy & Security
- neondatabase/postgresql_anonymizer: phần mở rộng PostgreSQL trực tiếp masking hoặc thay thế PII hay dữ liệu nhạy cảm về mặt thương mại
-
Financial Ledgers
- pgledger: sổ cái kế toán kép được triển khai bằng PostgreSQL
-
Miscellaneous
- Very comprehensive list of Postgres tooling
- Unsupported PostgreSQL features in Aurora DSQL: danh sách các tính năng PostgreSQL không được hỗ trợ trong AWS Aurora DSQL
Chưa có bình luận nào.