Postgresの活用方法
(github.com/Olshansk)- このリポジトリは、「Keep It Simple Stupid, just use postgres」という方針のもと、Postgresをさまざまな用途に活用するツールや事例を集めて紹介している
- 一覧はAmazing CTOのPostgres for Everything記事と@cpursleyのGitHub gistに着想を得ており、Postgres上に新しいツールや活用方法が継続的に登場するため、維持されている
- 範囲はcronジョブ、埋め込みPostgres、メッセージキュー、分析、GIS、監査ログ、アクセス制御、検索、時系列、NoSQL、グラフ、HTTP、API、CDC、キャッシュ、テスト、マイグレーション、パフォーマンスチューニング、モニタリング、拡張、UI、CLI、可視化、パッケージ管理、セキュリティ、金融台帳まで幅広い
- 各項目はPostgres拡張、ライブラリ、APIプラットフォーム、記事、ツールをリンク中心で整理しており、一部はDuckDB、pgvector、PostGIS、PgBouncer、GraphQL、CDCのような具体的な技術と結び付いている
- 特定のコード断片、ツール、プロジェクトを例として追加したい場合は、リンク付きでPRを作成し、新しいpull request templateを使う必要がある
リポジトリの目的と維持方法
- Postgres for Everythingリポジトリの目的は、Postgresをさまざまな用途に使う方法を示すこと
- リポジトリは次の資料に着想を得ている
- Postgres上に新しいツールが登場したり、新たな活用方法が継続的に生まれたりするため、それらを追跡する場所として維持されている
- 別の例があればPRを提出できる
- コード断片、ツール、プロジェクトを紹介するには、リンク付きでPRを作成し、pull request templateを使う必要がある
読み物と事例記事
- Postgresの拡張性、パターン、データベース関数の活用、PostgreSQLの最適化と機能を扱う記事が含まれている
ジョブ実行、埋め込み、キュー
-
Cron Jobs
-
Embeddable Postgres
-
Message Queues
- tembo-io/pgmq
- SKIP LOCKED
- sequinstream/sequin: Postgresの行と変更内容をKafkaやSQSのようなストリーミングプラットフォームやキューに送るCDCツール
- janbjorge/pgqueuer: PostgreSQLを活用するPythonジョブキューライブラリ
- smartpricing/queen: 独立したFIFOパーティション、Kafkaスタイルのconsumer group、exactly-once deliveryを提供するPostgreSQLベースのメッセージキュー
分析、地図、監査、権限
-
Analytics
- paradedb/pg_analytics: PostgresでDuckDBベースのデータレイク分析を提供
- duckdb/pg_duckdb: DuckDB向けの公式Postgres拡張
- BemiHQ/BemiDB: 分析に最適化されたPostgres読み取りレプリカ
- Mooncake-Labs/pg_mooncake: Postgres内にカラム型ストレージとDuckDBのベクトル化実行を追加する拡張
- ClickHouse/pg_clickhouse: SQLの書き換えなしでPostgreSQLからClickHouse分析クエリを実行
-
GIS & Mapping
-
Audit Logs
- supabase/supa_audit
- pgMemento/pgMemento
- pgaudit/pgaudit
- BemiHQ/Bemi: PostgreSQLのデータ変更を自動追跡
-
Access Control & Authorization
検索、時系列、カラム指向、NoSQL、グラフ
-
Full Text Search
- Postgres Full Text Search: 関連リンク集
- pg_search: BM25を使用するPostgres全文検索
- plpgsql_bm25: PL/pgSQLで実装したBM25検索
-
Vector Search
- pgvector/pgvector
- tensorchord/VectorChord: スケーラビリティ、高性能、ディスク効率を目指すPostgreSQLベクトル類似検索拡張
- timescale/pgai: Postgres内でRAG、セマンティック検索、AIアプリケーション開発を支援するpgvectorベースの拡張
- timescale/pgvectorscale: pgvectorを補完するDiskANNベクトルインデックス実装
-
Hybrid Search
- plpgsql_bm25rrf.sql: BM25とpgvectorをReciprocal Rank Fusionで組み合わせたハイブリッド検索
-
Time Series
- timescale/timescaledb: 時系列とイベントのためのPostgreSQL++
- tembo-io/pg_timeseries: PostgreSQL向けオープンソース時系列拡張
-
Column Oriented
- paradedb/paradedb: 検索と分析のためのPostgres
- pg_duckdb: Postgres内のDuckDBカラムストレージ
-
NoSQL
- JSON Types: PostgreSQLのJSONネイティブサポート
- Using JSONB in PostgreSQL: PostgreSQLでJSONデータを保存・インデックス化する方法
-
Graph Data
- Apache Age: リレーショナルデータベースにグラフデータの処理と分析機能を提供するPostgreSQL向けグラフデータベース
外部データ、HTTP、API、GraphQL、CDC
-
Foreign Data
-
HTTP
-
API Platforms
- PostgREST: 既存のPostgreSQLデータベースからRESTful APIを生成
- Hasura GraphQL Engine: メタデータベースのAPIプラットフォーム
-
GraphQL and Alternative Query Languages
- PostGraphile: PostgreSQL向け自動GraphQL API
- supabase/pg_graphql: 単一のSQL関数でGraphQLクエリを可能にするPostgreSQL拡張
- dosco/graphjin: GraphQLをSQLクエリに自動変換
- kaspermarstal/plprql: PRQLで関数を作成するPostgreSQL拡張
-
Events, Replication, CDC
- aws/pgactive: active-activeデータベースを構築するためのAWSのレプリケーション拡張
- xataio/pgstream: DDL変更を含め、Postgresレプリケーションを出力先へ送るCDC CLIとライブラリ
- electric-sql/electric: PostgresデータベースのShapesを同期するHTTP API
- SQL Notify
- debezium/debezium
- 2ndQuadrant/pglogical
キャッシュ、テスト、アプリケーション、マイグレーション
-
Caching
- tidwall/pogocache: レイテンシとCPU効率に焦点を当てたキャッシュ層
- readysettech/readyset
-
Unit Tests
-
HTML & Applications
-
Migrations
- purcell/postgresql-migrations
- Bytebase
- xataio/pgroll
- stripe/pg-schema-diff
- pgschema/pgschema: Terraformスタイルの宣言的スキーママイグレーションワークフローをPostgresに提供するCLI
パフォーマンス、モニタリング、スケーリング、UI
-
Performance Tuning
- Supabase Index Advisor
- Dexter
- HypoPG
- pg_hint_plan
- PGHero
- pg_incremental: 高速で信頼性の高い増分バッチ処理のための拡張
- pgassistant: PostgreSQLのパフォーマンス理解と最適化を支援する開発者向けアシスタント
-
Monitoring
-
Testing
- regresql: PostgreSQLをサポートするSQLクエリ回帰テストツール
-
Scaling & Storage
- Snowflake-Labs/pg_lake: Postgresをスタンドアロンのlakehouseシステムとして活用し、S3のようなオブジェクトストレージ上のIcebergテーブルに対してトランザクションとクエリをサポート
- pgdogdev/pgdog: PostgreSQLのシャーディングに対応したトランザクションプーラー兼論理レプリケーションマネージャー
- pgbouncer/pgbouncer: PostgreSQL向け軽量コネクションプーラー
- orioledb.com: オンディスクとインメモリエンジンの利点を組み合わせるPostgreSQL拡張
-
User Interfaces & Dashboards
- Baserow
- NocoDB
- AppSmith
- mathesar-foundation/mathesar: さまざまな技術レベルのユーザーがPostgresデータを閲覧、編集、クエリ、共同作業できるスプレッドシート型インターフェース
開発者ツール、可視化、パッケージ、セキュリティ、金融
-
CLIs
- dbcli/pgcli: 自動補完と構文ハイライトを提供するPostgresクライアント
- sosedoff/pgweb: Webベースのクロスプラットフォーム PostgreSQLデータベースエクスプローラー
- Maxteabag/sqlit: PostgreSQLを含むSQLデータベース向けTUI
-
Visualization
- dr-jts/pg_svg: PostGIS geometry をスタイル付きSVGドキュメントに変換するPostgreSQL関数集
- Evidence
- Metabase
- Hopara: 製造、IoT、ライフサイエンス、データレイク向けのリアルタイムデータ可視化プラットフォーム
- posit-dev/ggsql: Grammar of Graphics ベースの宣言的データ可視化SQL拡張
-
Package Management
-
Language Servers
- supabase/postgres-language-server: Postgres向け言語ツールとLSP実装のコレクション
-
Data Privacy & Security
- neondatabase/postgresql_anonymizer: PIIや商業的に機密性の高いデータを直接マスキングまたは置換するPostgreSQL拡張
-
Financial Ledgers
- pgledger: PostgreSQLで実装した複式簿記台帳
-
Miscellaneous
- Very comprehensive list of Postgres tooling
- Unsupported PostgreSQL features in Aurora DSQL: AWS Aurora DSQLでサポートされていないPostgreSQL機能の一覧
まだコメントはありません。