最好的PostgreSQL學習鏡像,不接受反駁
PostgreSQL相比其他數據庫最強的地方是它的插件成千上萬, 滿足各種業務場景的需求.
DuckDB是全球最小巧但是性能頂天的in process OLAP數據庫, 是數據分析師, 科學家的趁手工具.
這個Docker鏡像集成了PostgreSQL 200+款優秀的extension和tools, DuckDB, MySQL等, 大幅度降低學習環境搭建門檻, 提升你的學習效率, 是目前最好的PostgreSQL/DuckDB學習鏡像.
使用及其簡單.
AMD64 Chip's OS:
# 拉取鏡像, 第一次拉取一次即可. 或者需要的時候執行, 將更新到最新鏡像版本. docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts # 啟動容器 docker run --platform linux/amd64 -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts
##### 如果你想學習備份恢復、修改參數等需要重啟數據庫實例的case, 換個啟動參數, 使用參數--entrypoint將容器根進程換成bash更好. 如下: docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g --entrypoint /bin/bash registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts##### 以上啟動方式需要進入容器后手工啟動數據庫實例: su - postgres; pg_ctl start; # 進入容器 docker exec -ti pg bash # 連接數據庫 psql
ARM64 Chip's OS:
# 拉取鏡像, 第一次拉取一次即可. 或者需要的時候執行, 將更新到最新鏡像版本. docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64 # 啟動容器 docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64
##### 如果你想學習備份恢復、修改參數等需要重啟數據庫實例的case, 換個啟動參數, 使用參數--entrypoint將容器根進程換成bash更好. 如下: docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g --entrypoint /bin/bash registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64 ##### 以上啟動方式需要進入容器后手工啟動數據庫實例: su - postgres; pg_ctl start; # 進入容器 docker exec -ti pg bash # 連接數據庫 psql
插件:
Display all 195 possibilities? (y or n)address_standardizer intagg pg_prewarm plr"address_standardizer-3" intarray pg_proctab pointcloudaddress_standardizer_data_us ip4r pg_profile pointcloud_postgis"address_standardizer_data_us-3" isn pg_qualstats postgisadminpack jsonb_plpython3u pg_query_rewrite "postgis-3"age jsquery pg_rational postgis_rasteraggs_for_vecs lantern pg_repack "postgis_raster-3"amcheck lantern_extras pgroonga postgis_sfcgalanon lo pgroonga_database "postgis_sfcgal-3"autoinc ltree pgrouting postgis_tiger_geocoderaws_s3 ltree_plpython3u pgrowlocks "postgis_tiger_geocoder-3"bloom mimeo pg_safer_settings postgis_topologybtree_gin moddatetime pg_safer_settings_table_dependent_extension "postgis_topology-3"btree_gist mongo_fdw pg_safer_settings_table_dependent_subextension postgres_fdwcitext mysql_fdw pg_search powacitus ogr_fdw pgsentinel prefixcitus_columnar old_snapshot pg_show_plans pre_preparecolumnar oracle_fdw pg_similarity prioritizecredcheck orafce pgsodium q3ccube pageinspect pg_sparse quantiledatasketches parquet_fdw pg_sphere rdkitdblink parray_gin pg_squeeze refintdblink_plus pgagent pg_stat_kcache roaringbitmapddlx pgaudit pg_stat_monitor rumdecoderbufs pgautofailover pg_stat_statements segdict_int pg_bigm pgstattuple smlardict_xsyn pg_bm25 pg_statviz sqlite_fdwduckdb_fdw pg_buffercache pg_store_plans sslinfoearthdistance pg_bulkload pg_surgery tablefuncembedding pg_cron pgtap table_logextra_window_functions pgcrypto pg_task tcnfile_fdw pg_curl pgtelemetry tdigestfirst_last_agg pg_dbms_stats pg_tiktoken tds_fdwfuzzystrmatch pg_dirtyread pg_track_settings temporal_tablesgevel pgfaceting pg_trgm timescaledbh3 pgfincore pgtt timescaledb_toolkith3_postgis pg_freespacemap pg_utility_trigger_functions toastinfohdfs_fdw pggraphblas pg_uuidv7 tsm_system_rowshll pg_hint_plan pg_variables tsm_system_timehnsw pg_ivm pg_visibility uinthstore pg_jieba pg_wait_sampling unaccenthstore_pllua pgjwt pldbgapi unithstore_plluau pgmemcache pljava "uuid-ossp"hstore_plpython3u pgmp pllua vectorhttp pg_net plluau vopshypopg pg_onnx plpgsql_check xml2icu_ext pgpool_adm plprofiler zhparserimgsmlr pgpool_recovery plproxy zsoninsert_username pgpool_regclass plpython3u
額外安裝的插件或工具
類型增強
-
pgmp, PostgreSQL Multiple Precision Arithmetic extension, 支持GMP library, 高性能表達decimal類型.
-
unit, 支持很多國際單位的類型
-
pg_uuidv7, A tiny Postgres extension to create version 7 UUIDs
-
zson, ZSON is a PostgreSQL extension for transparent JSONB compression
-
uint, 無符號整型
函數增強
-
extra-window-functions, 擴展窗口函數
-
first-last-agg, 擴展聚合函數
-
tdigest, 擴展窗口、聚合函數
-
rational, 擴展插值算法和函數
-
orafce, 擴展Oracle兼容性
-
aggs_for_vecs, 數組類型聚合函數擴展.
-
quantile, 統計分析相關聚合函數擴展.
-
pgjwt, JSON 值轉儲格式: JSON Web Tokens
近似統計分析
-
hll, 近似分析, 例如滑動窗口UV, 短視頻場景存儲已讀列表+快速過濾已讀視頻
-
datasketches, 近似統計算法庫
標簽圈選
-
smlar, 標簽相似搜索
-
roaringbitmap, 標簽圈選
-
pgfaceting, 基于rb index的快速降維分析插件(例如任意條件的UV分析, 滑動窗口分析等)
存儲引擎、分析加強:
-
citus, 分布式和列存儲
-
columnar, Hydra Columnar extension. 列存儲引擎.
-
vops, 瓦片存儲和向量化計算
-
orioledb, 基于UNDO機制的存儲引擎. (未集成.)
-
zedstore, 行列混合存儲引擎. (未集成.)
-
pg_cryogen, appendonly的壓縮存儲引擎. (未集成.)
-
pg_ivm, 增量刷新物化視圖
多值列索引擴展加速
-
rum, 多值列+標量復合搜索加速
-
parray_gin, 多值列元素值模糊搜索
多模型業務場景
-
rdkit, 化學類型+算法+索引
-
timescaledb, 時序
-
pggraphblas, 圖式關系加速搜索
-
age, 圖式關系搜索(兼容cypherQL語法).
-
madlib, 機器學習分析庫
-
pg_variables, 會話或事務級內存變量, 例如用于計數器、需要在會話|事務中存儲臨時值的場景.
-
temporal_tables, 自動按字段時間歸檔歷史數據.
-
pgtt, 全局臨時表, 類似Oracle 全局臨時表的風格.
空間業務場景
-
pgrouting, 路由算法
-
pgrouting-doc
-
pgrouting-scripts
-
pgsphere, 空間類型+索引
-
pointcloud, 點云
-
q3c, 空間類型+索引
-
postgis-3, 豐富的空間類型+算法+函數接口+索引
-
postgis-3-scripts
-
ip4r, IP轉地理位置信息
-
h3, h3_postgis, uber開源的基于H3模型的地圖相關插件.
向量搜索
-
similarity, 近似算法, 類型+索引
-
imgsmlr, 圖像搜索, 類型+索引
-
pgvector, 向量搜索, 類型+索引(ivfflat、hnsw)
-
pg_sparse, paradedb開源. 稀疏向量搜索
-
hnsw, 向量搜索, 類型+索引(hnsw)
-
pg_embedding, 向量搜索, 類型+索引(hnsw)
-
lantern, 向量搜索, 類型+索引(usearch implemented hnsw)
-
lantern_extras, lantern輔助插件: 數據庫內置大模型, 外接大模型, 文本|圖像向量化, 加速向量索引build等.
文本場景增強
-
prefix, 前綴范圍模型
-
groonga, 支持wchar的任意模糊搜索
-
pg_bigm, 增強pg_trgm模糊搜索
-
pg_jieba, 結巴中文分詞
-
zhparser, scws中文分詞
-
pg_bm25, paradedb開源. bm25(elastic search目前使用的相關算法)支持, 大數據量文本搜索比傳統tsvector,tsrank提升20x性能.
-
pg_search, paradedb開源. 通過 bm25+hnsw 支持bm25和向量相似文本搜索
數據融合, 冷熱分離
-
mongo_fdw, 讀寫mongo數據源
-
parquet_s3_fdw, 讀寫s3,oss對象存儲和parquet文件. (未集成, 通過duckdb_fdw可以讀寫s3, aliyun oss, 更加快捷)
-
mysql-fdw, 讀寫mysql數據源
-
ogr-fdw, 基于ogr的通用數據源讀寫插件
-
oracle-fdw, 讀寫oracle數據源
-
tds-fdw, 讀寫ms sql數據源
-
dblink_plus, mysql,sqlite3,oracle的dblink
-
duckdb_fdw, 讀寫duckdb數據源. 通過duckdb_fdw還可以讀寫存放在s3的csv, parquet文件.
-
sqlite_fdw, 讀寫sqlite3
-
parquet_fdw, 讀parquet文件.
-
hdfs_fdw, 讀寫hive, spark數據源
-
pgmemcache, 直接的memcache控制函數庫
-
pg_curl, 通過curl支持http,ftp,https等網絡協議. 將遠程數據加載到數據庫中.
-
pg_net, 異步HTTP調用接口.
-
pgsql-http, HTTP 調用接口.
-
pg2arrow , 將pg sql結果轉換為arrow格式的數據文件. 適合與其他arrow生態的數據分析產品、DB交換數據, 融入大數據生態, 加速數據分析.
-
aws_s3, 讀寫aws s3對象存儲.
-
decoderbufs, 邏輯復制decoding, logical decoder output plugin to deliver data as Protocol Buffers
擴展協議, 兼容其他產品
-
FerretDB, 支持mongodb協議, 可使用mongodb客戶端連接. (未集成)
-
babelfish, 支持sql server協議, 可使用sqlserver客戶端連接. (未集成)
-
Apache Arrow Flight SQL adapter, arrow 協議, 可使用arrow driver連接. (未集成, 需PG 15及以上版本.)
存儲過程和函數語言增強
-
jsquery, 增強json語法查詢庫
-
pldebugger, 調試plpgsql函數
-
plpgsql-check, 預檢查plpgsql函數
-
pljava, java存儲過程和函數語言
-
pllua, lua存儲過程和函數語言
-
plproxy, 代理(通常用于sharding和并行數據聚合訪問場景)
-
plv8, google v8存儲過程和函數語言. (未集成, 未來可以通過apt安裝)
-
plpython3, python存儲過程和函數語言
-
plr, R存儲過程和函數語言
-
plprofiler, 存儲過程和函數的性能分析功能
安全增強
-
postgresql_anonymizer, 敏感信息遮蔽
-
pgsodium, 敏感信息遮蔽以及sodium加密庫函數
-
credcheck, 強制約束用戶密碼復雜度
數據庫管理、審計、性能優化等
-
powa, 索引推薦, 等待事件分析, 命中率, 配置變更跟蹤等
-
hypopg, 虛擬索引, 索引推薦
-
pg-qualstats, 索引推薦
-
pg-stat-kcache, 跟蹤cpu、文件系統真實讀寫行為
-
pg-wait-sampling, 等待事件采樣分析
-
show-plans, 執行過程中的SQL執行計劃查詢
-
pg_hint_plan, 強制設定SQL執行計劃
-
plantuner, 增加了一些參數用來控制SQL執行計劃
-
pg_store_plans, 保存SQL執行計劃
-
pg_plan_inspector, 復雜SQL執行計劃優化修正插. 使用機器學習的方法對收集到的SQL和執行計劃等信息進行分析, 從而提升性能. 通過sql安裝, 沒有extension control file
-
pg_stat_monitor, 保存數據庫運行時統計信息快照, 用于分析性能
-
pg_statviz, 保存統計信息快照, 使用matplotlib繪圖.
-
pg_profile, 使用pg_stat_statements, pg_stat_kcache的統計信息打快照并對快照進行分析. 類似awr. 不過我覺得perf insight和pg_stat_monitor更好用.
-
pg_statsinfo, PG數據庫監控工具, 支持按快照選取分析系統運行狀態, 類似Oracle statspark.
-
pg_stats_reporter, pg_statsinfo報告的網頁呈現, 更加美觀, 類似awr效果.
-
pgtelemetry, 一些DBA常用的監控數據庫和操作系統運行狀態的視圖.
-
pgfincore, 修改數據文件的page cache行為
-
repack, 幾乎不影響業務的收縮膨脹的表和索引浪費的存儲空間
-
squeeze, 幾乎不影響業務的收縮膨脹的表和索引浪費的存儲空間, 支持設置閾值, 自動調度.
-
pgagent, 定時任務
-
pg_cron, 定時任務
-
pg_task, 數據庫后臺任務管理. 類似oracle dbms_jobs
-
pgaudit, 審計用戶行為
-
tablelog, 審計表的修改過程
-
dirtyread, 臟讀
-
wal2json, WAL日志轉換為json
-
pg_bulkload, 高速導入數據
-
sqlbench, 壓測tpc-c
-
pgxnclient, pgxn插件管理
-
icu-ext, 擴展的icu字符集
-
pg_plan_filter, 基于cbo的限制插件, 例如限制某些用戶執行cost大于指定值的SQL. 防止用戶"搗亂".
-
pg_query_rewrite, 自定義查詢重寫規則的插件.
-
pg_track_settings, 跟蹤審計GUC參數設置.
-
pg_utility_trigger_functions, 常用功能場景的觸發器函數.
-
pg_safer_settings, 記錄guc參數設置, 并增加一些基于角色的guc 參數setting權限控制和審計.
-
ddlx, 生成數據庫對象的create語句的插件
-
pg_dbms_stats, 統計信息快照, 使用統計信息快照生成執行計劃. 類似基線, 確保執行計劃的普遍最優性.
-
pg_rman, 塊級別數據庫增量備份, 根據數據塊的LSN判斷自上次備份后是否被修改. 類似Oracle incremental backup.
-
online_analyze, 事務中分析DML后的統計信息, 適合OLAP跑復雜任務場景的及時統計信息刷新, 用于確保復雜SQL的執行計劃正確性.
-
gevel, 觀察gin,gist,sp-gist索引內部結構的插件.
-
toastinfo, 觀察toast存儲結構
-
pg_later, PG 異步SQL執行插件.
-
mimeo, 表級別復制(邏輯復制前的方法, 現在不建議使用)
-
pre_prepare, 數據庫端prepared statement自動保存, 便于pool調用.
-
prioritize, 結合OS PID task優先級功能, 設置pg backend pid cpu調度優先級
-
pgsentinel, postgresql extension providing Active session history
-
pgwatch2, PostgreSQL metrics monitor/dashboard. 暫未集成
-
pg_top, postgresql的top命令, 類似linux top.
-
pgcenter, 類似pg_top, 可一屏顯示多個實例的top情況. pgCenter is a command line admin tool for PostgreSQL.
-
pg_proctab, 配合pg_top使用, 觀察遠程postgresql的top資源.
-
pgbadger, A fast PostgreSQL Log Analyzer. http://pgbadger.darold.net/
-
pg_auto_failover, Postgres extension and service for automated failover and high-availability. https://github.com/hapostgres/pg_auto_failover
-
pghero, A performance dashboard for Postgres. https://github.com/ankane/pghero
-
ora2pg, oracle,mysql遷移到postgresql的工具
-
pgloader, 使用fdw讀取其他數據庫的數據, 并快速遷移到PostgreSQL的遷移工具
連接池和讀寫分離
-
pgpool2, 連接池和讀寫分離
-
pgagroal, 高性能連接池
-
pgbouncer, 高性能連接池
-
pgcat, 連接池和讀寫分離,sharding等特性, 未來發展前景比較可觀
嵌入式OLAP數據庫
-
DuckDB, 嵌入式的OLAP庫, 功能非常強大性能非常好. 兼容SQLite3語法和PostgreSQL語法.
未來可能還會新增的插件或產品(你有什么想要的插件可以在issue中留言: https://github.com/digoal/blog):
該鏡像制作腳本已開源, 歡迎伙伴們一起來更新維護:
https://github.com/digoal/postgresql_docker_builder
歡迎關注我的github (https://github.com/digoal/blog) , 學習數據庫不迷路.
近期正在寫公開課材料, 未來將通過視頻號推出.

浙公網安備 33010602011771號