最强PostgreSQL学习镜像更新了
文章开始前推荐2个学习环境:
1、欢迎使用镜像快速体验PostgreSQL/DuckDB强大功能:《最好的PostgreSQL学习镜像》
2、欢迎使用云起实验室: 《免费体验PolarDB开源数据库》
2024.1.6日《国产数据库共话未来趋势》第3期沙龙在上海圆满举办, 视频回放.
更新后的内容:
1、PG 14自带的所有插件.
2、额外安装的插件或工具
类型增强
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, 无符号整型.
nanoid, nanoid类型.
ulid, 半高uuid类型.
snowflake, snowflakeID 分布式数据库全局唯一ID生成器, 比UUID效率高.
函数增强
extra-window-functions, 扩展窗口函数
first-last-agg, 扩展聚合函数
tdigest, 扩展窗口、聚合函数
rational, 扩展插值算法和函数
orafce, 扩展Oracle兼容性
aggs_for_vecs, 数组类型聚合函数扩展.
quantile, 统计分析相关聚合函数扩展.
pgjwt, JSON 值转储格式: JSON Web Tokens
pg_idkit, 集成了大量UUID方法和函数.
pgpcre, 正则. This is a module for PostgreSQL that exposes Perl-compatible regular expressions (PCRE) functionality as functions and operators.
近似统计分析
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 全局临时表的风格.
pipelinedb, 流计算.
pg4ml, 使用 plpgsql 编写的机器学习框架.
PGMQ, pg消息队列.
空间业务场景
pgrouting, 路由算法
pgrouting-doc
pgrouting-scripts
pgsphere, 空间类型+索引
pointcloud, 点云
q3c, 空间类型+索引
postgis-3, 丰富的空间类型+算法+函数接口+索引
postgis-3-scripts
ip4r, IP转地理位置信息
h3, h3_postgis, uber开源的基于H3模型的地图相关插件.
MobilityDB, An open source geospatial trajectory data management & analysis platform. https://github.com/MobilityDB/MobilityDB
向量搜索
similarity, 近似算法, 类型+索引
imgsmlr, 图像搜索, 类型+索引
pgvector, 向量搜索, 类型+索引(ivfflat、hnsw)
pg_sparse, paradedb开源. 稀疏向量搜索. 使用rust编写.
svector, paradedb开源. 稀疏向量搜索(就是pg_sparse, 更名为svector). 使用c编写. https://docs.paradedb.com/blog/introducing_sparse
hnsw, 向量搜索, 类型+索引(hnsw)
pg_embedding, 向量搜索, 类型+索引(hnsw)
lantern, 向量搜索, 类型+索引(usearch implemented hnsw)
lantern_extras, lantern辅助插件: 数据库内置大模型, 外接大模型, 文本|图像向量化, 加速向量索引build等.
vectorize, 结合pgvector和OpenAI的应用解决方案型插件, 实现db4ai, ai4db的应用.
文本场景增强
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, 存储过程和函数的性能分析功能
plrust, rust存储过程语言支持
安全增强
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行为
pg_repack, 几乎不影响业务的收缩膨胀的表和索引浪费的存储空间
pg_migrate, online DDL, fork自pg_repack, 实现最短时间持有排他锁的DDL, DDL过程中支持DML.
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的迁移工具
pgreplay, 回放postgresql log的工具. 需要开启log_statements.
pg_subtrans_infos, 查看子事务信息
pg_subxact_counters, 统计子事务
pgbackrest, 备份管理工具.
elephant-shed-pgbackrest, PG备份管理工具pgbackrest web控制台, 同时集成了一些有趣的工具
PgDD, PostgreSQL Data Dictionary for 开发者, 快速了解数据库概貌. https://github.com/rustprooflabs/pgdd
pg_partman, Partition management extension for PostgreSQL
pg_filedump, pg_filedump is a utility to format PostgreSQL heap/index/control files into a human-readable form.
pg_partman, Partition management extension for PostgreSQL
pg_jobmon, PostgreSQL extension which provides persistent logging within transactions and functions. 事务即使回滚也能留下数据, 使用的是dblink外部事务实现.
pgroll, PostgreSQL zero-downtime migrations made easy
连接池和读写分离
pgpool2, 连接池和读写分离
pgagroal, 高性能连接池
pgbouncer, 高性能连接池
pgcat, 连接池和读写分离,sharding等特性, 未来发展前景比较可观
嵌入式OLAP数据库
DuckDB, 嵌入式的OLAP库, 功能非常强大性能非常好. 兼容SQLite3语法和PostgreSQL语法.
插件列表:
Display all 210 possibilities? (y or n)
address_standardizer parquet_fdw pgtelemetry
"address_standardizer-3" parray_gin pg_tiktoken
address_standardizer_data_us pg4ml pg_track_settings
"address_standardizer_data_us-3" pgagent pg_trgm
adminpack pgaudit pgtt
age pgautofailover pg_utility_trigger_functions
aggs_for_vecs pg_bigm pg_uuidv7
amcheck pg_bm25 pg_variables
anon pg_buffercache pg_visibility
autoinc pg_bulkload pg_wait_sampling
aws_s3 pg_cron pipelinedb
bloom pgcrypto pldbgapi
btree_gin pg_curl pljava
btree_gist pg_dbms_stats pllua
citext pgdd plluau
citus pg_dirtyread plpgsql_check
citus_columnar pgfaceting plprofiler
columnar pgfincore plproxy
credcheck pg_freespacemap plpython3u
cube pggraphblas plr
datasketches pg_hint_plan plrust
dblink pg_idkit pointcloud
dblink_plus pg_ivm pointcloud_postgis
ddlx pg_jieba postgis
decoderbufs pg_jobmon "postgis-3"
dict_int pgjwt postgis_raster
dict_xsyn pgmemcache "postgis_raster-3"
duckdb_fdw pg_migrate postgis_sfcgal
earthdistance pgmp "postgis_sfcgal-3"
embedding pg_nanoid postgis_tiger_geocoder
extra_window_functions pg_net "postgis_tiger_geocoder-3"
file_fdw pg_onnx postgis_topology
first_last_agg pg_partman "postgis_topology-3"
fuzzystrmatch pgpcre postgres_fdw
gevel pgpool_adm powa
h3 pgpool_recovery prefix
h3_postgis pgpool_regclass pre_prepare
hdfs_fdw pg_prewarm prioritize
hll pg_proctab q3c
hnsw pg_profile quantile
hstore pg_qualstats rdkit
hstore_pllua pg_query_rewrite refint
hstore_plluau pg_rational roaringbitmap
hstore_plpython3u pg_repack rum
http pgroonga seg
hypopg pgroonga_database smlar
icu_ext pgrouting sqlite_fdw
imgsmlr pgrowlocks sslinfo
insert_username pg_safer_settings svector
intagg pg_safer_settings_table_dependent_extension tablefunc
intarray pg_safer_settings_table_dependent_subextension table_log
ip4r pg_search tcn
isn pgsentinel tdigest
jsonb_plpython3u pg_show_plans tds_fdw
jsquery pg_similarity temporal_tables
lantern pgsodium timescaledb
lantern_extras pg_sparse timescaledb_toolkit
lo pg_sphere toastinfo
ltree pg_squeeze tsm_system_rows
ltree_plpython3u pg_stat_kcache tsm_system_time
mimeo pg_stat_monitor uint
mobilitydb pg_stat_statements ulid
moddatetime pgstattuple unaccent
mongo_fdw pg_statviz unit
mysql_fdw pg_store_plans "uuid-ossp"
ogr_fdw pg_subtrans_infos vector
old_snapshot pg_subxact_counters vops
oracle_fdw pg_surgery xml2
orafce pgtap zhparser
pageinspect pg_task zson
欢迎关注我的github (https://github.com/digoal/blog) , 学习数据库不迷路.
近期正在写公开课材料, 未来将通过视频号推出, 欢迎关注视频号:
文章中的参考文档请点击阅读原文获得.