PostgreSQL
文章平均质量分 73
PostgreSQL学习分享
梦想画家
开源软件爱好者,乐于博客分享,业余时间喜欢跑步和科幻,希望与意趣相投朋友一起学习交流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
打破“关键词”牢笼:混合检索(全文+语义)重塑搜索体验的完整指南
本文将拆解全文检索与语义检索的得分机制,详解七种主流融合算法(从易到难),结合实战案例演示完整流程,为不同场景提供可落地的选型与实操方案,助力开发者搭建更智能的搜索系统。原创 2026-01-23 14:55:14 · 1143 阅读 · 0 评论 -
从选型到落地:Trino赋能智能制造数据驱动实践
智能制造转型中,制造业面临多系统数据孤岛、实时分析滞后等核心痛点。Trino凭借联邦查询、低延迟、零数据迁移等优势成为破局关键。本文以生产全链路质量追溯为实战场景,阐述Trino选型逻辑、部署落地流程及最佳实践,验证其技术价值,为制造企业数据驱动转型提供可复用参考。原创 2026-01-10 21:53:21 · 824 阅读 · 0 评论 -
PG用户OLAP落地不用愁!DuckDB与Trino集成方案深度解析+实战指南
对于多数中小企业或团队而言,搭建分布式OLAP集群(如ClickHouse、Doris集群)不仅意味着高昂的服务器与运维成本,还需面临数据迁移、架构改造的潜在风险。此时,基于现有PG环境集成轻量级OLAP工具,成为“低成本、快落地”的最优解。本文将聚焦两款主流集成方案——**PG + DuckDB**与**PG + Trino**,从技术原理、核心优势对比、真实业务落地案例到最佳实践,全方位解析如何为PG赋能OLAP能力,助力你快速找到适配自身业务的落地方案。原创 2026-01-10 20:33:34 · 1048 阅读 · 0 评论 -
RAG应用表格数据处理全攻略:从结构化提取到精准生成
本文针对表格数据在RAG全流程中普遍存在的结构丢失、语义模糊、检索低效、生成不规范四大核心痛点,提出一套覆盖“预处理-检索-生成”的分层解决方案。内容涵盖表格提取与结构化表征方法、语义/结构化混合检索策略、生成优化与后处理技巧,并附LangChain+OpenAI+PostgreSQL端到端实现示例。通过“结构保留+语义增强+混合检索”的核心逻辑,帮助开发者突破表格数据处理瓶颈,提升RAG应用对结构化数据的利用能力与落地效果。原创 2026-01-09 20:27:02 · 1294 阅读 · 0 评论 -
告别RAG两难困境!父子切分技术让长文本检索精度与完整性双突破
本文结合律所百万级合同检索的真实落地案例,系统拆解父子切分技术的核心逻辑、适配场景,详解基于PostgreSQL+pgvector的“3表独立架构”设计规范,提供从文件切分到检索落地的完整可复用代码,最终实现检索召回率提升30%+、回答准确率突破95%,为长文本RAG项目提供开箱即用的解决方案。原创 2026-01-07 20:57:22 · 1196 阅读 · 0 评论 -
实战优化:基于 pgvector 的向量存储与检索效率提升全攻略
本文以企业级大文件(如万字文档、PDF)语义检索场景为实战案例,从 pgvector 字段设计、大文件分割策略、向量精度优化、数据库表结构设计四个核心维度,系统拆解如何在不损失计算精度的前提下,同步实现存储空间压缩 30%+、检索效率提升 5 倍+的优化路径。文中所有方案均配套可直接落地的代码示例与真实测试数据,无缝适配生产环境部署需求。原创 2026-01-07 20:43:06 · 1102 阅读 · 0 评论 -
破局OLAP困境:PostgreSQL集成列存储数据的终极方案——DuckDB FDW深度实践
PostgreSQL作为经典的行存储数据库,在事务型(OLTP)场景中表现卓越,但面对海量列存储数据(如Parquet、ORC)的分析型(OLAP)需求时,常陷入性能瓶颈。本文先剖析PostgreSQL适配OLAP与列存储的核心必要性,系统对比主流方案的优劣,最终聚焦高性能方案DuckDB FDW,通过“电商用户行为分析”“政务数据跨源查询”“企业IOT设备监控”三大实战场景,提供从环境部署到查询优化的完整落地流程,为企业构建“事务+分析”一体化数据架构提供可直接复用的技术参考。原创 2026-01-03 11:40:08 · 1537 阅读 · 0 评论 -
TimescaleDB Hyperfunctions实战指南:解锁时序数据高级分析能力
TimescaleDB 的 Hyperfunctions 是专为时序数据场景设计的高级分析函数集,精准弥补了标准 SQL 在时序数据深度分析中的短板。本文将系统梳理 Hyperfunctions 的核心价值与功能分类,针对时间分桶、统计汇总、趋势分析、异常检测等高频业务场景,逐一拆解关键函数的用法、实战示例及适用场景,助力开发者快速掌握 Hyperfunctions 并落地到实际业务,高效挖掘时序数据的核心价值。原创 2026-01-03 01:00:00 · 1068 阅读 · 0 评论 -
深度解析TimescaleDB:从优势对比到Hyperfunctions实战,玩转时间序列数据
在物联网、监控、金融等领域爆发式增长的时间序列数据,对存储和分析工具提出了极高要求。TimescaleDB作为基于PostgreSQL的开源时间序列数据库扩展,兼具关系型数据库的稳定性与时间序列数据库的高性能。本文从核心优势切入,通过与传统数据库、主流时序数据库的详细对比,清晰展现其独特价值;并深入解析超级表(Hypertable)、Hyperfunctions等核心特性,搭配从环境搭建到实战操作的完整流程,帮助开发者快速上手并高效运用TimescaleDB处理时间序列数据。原创 2026-01-02 20:35:17 · 1268 阅读 · 0 评论 -
PostGIS实战指南:从环境搭建到LBS周边查询(含常用函数)
PostGIS 是 PostgreSQL 最强大的开源空间扩展模块,它为传统关系型数据库注入了地理空间数据处理能力,可轻松实现地理位置存储、空间关系查询、缓冲区分析等核心功能,广泛应用于城市规划、物流配送、环境监测等领域。本文将通过“概念讲解+实操示例”的方式,从环境搭建到进阶分析,全方位带大家掌握 PostGIS 的核心用法,所有示例代码均可直接运行。原创 2026-01-02 09:53:39 · 1377 阅读 · 0 评论 -
Apache AGE 实战进阶:从图查询到知识图谱+LLM知识问答全流程
在关联数据密集型场景中,传统关系型数据库的多表关联查询效率瓶颈日益凸显。Apache AGE 作为 PostgreSQL 的原生图数据库扩展,实现了关系型数据与图数据的无缝融合,无需独立部署图数据库即可享受高效的关联分析能力。本文从 Apache AGE 核心价值切入,通过两个实战案例(校园社交网络图查询、企业知识图谱构建)完整覆盖图数据建模、插入、核心查询全流程;在此基础上,进一步扩展 LLM 与知识图谱的融合方案,实现智能知识问答功能。全文提供可直接复用的代码示例与配置步骤,助力开发者快速掌握 Apac原创 2026-01-02 02:30:00 · 1098 阅读 · 0 评论 -
告别关键词!PostgreSQL+pgvector 玩转语义和图像检索
在 AI 驱动的语义检索时代,传统关键词搜索已难以满足“理解内容”的需求。pgvector 作为 PostgreSQL 的向量扩展,让数据库具备了高效的向量存储与检索能力,无需额外部署独立向量数据库,极大简化了架构。本文结合实战场景,从环境搭建、文本转向量模型选型(BERT vs BGE)、数据处理、索引优化到最终检索实现,完整拆解 pgvector 的应用流程,并通过可直接运行的 Python 代码示例,帮助开发者快速落地语义检索功能。原创 2026-01-01 17:14:58 · 1293 阅读 · 0 评论 -
揭秘 PostgreSQL 中文全文检索:从原理到实战,用 jieba 分词打造高效搜索引擎
在信息爆炸的时代,快速、精准地从海量数据中检索信息至关重要。PostgreSQL 作为功能强大的开源数据库,内置了高效的全文检索引擎。然而,其原生能力对中文支持不佳。本文将深入剖析 PostgreSQL 全文检索的核心原理,讲解 `to_tsvector`、`to_tsquery`、`ts_rank_cd` 等关键函数的用法,并通过一个完整的实战案例,展示如何结合业界流行的 `jieba` 分词库,在应用程序端完成中文分词,再利用 PostgreSQL 的强大功能实现高性能的中文全文检索。原创 2026-01-01 16:09:04 · 1675 阅读 · 0 评论 -
PostgreSQL WAL归档与时间点恢复(PITR):完整技术指南
PostgreSQL的WAL(预写式日志)归档是实现时间点恢复(Point-In-Time Recovery, PITR)的核心机制。本文深入解析WAL归档的工作原理,详细说明配置步骤,并提供完整的PITR操作流程。通过实际案例演示如何从备份恢复到指定时间点,帮助数据库管理员掌握这一关键技能,确保企业数据安全。原创 2025-07-09 07:22:44 · 1647 阅读 · 0 评论 -
PostgreSQL复制技术全解析:从物理复制到逻辑复制的实践指南
PostgreSQL作为企业级数据库的核心组件,其复制技术是构建高可用架构和数据同步解决方案的基础。本文深入剖析PostgreSQL两大复制技术——物理复制与逻辑复制的实现原理、配置方法和应用场景。通过对比分析两者的技术特点,帮助读者根据业务需求选择合适的复制方案。文章包含详细的配置示例、性能优化建议和实际应用案例,为数据库管理员和架构师提供全面的实践指导。原创 2025-07-09 00:00:00 · 1383 阅读 · 0 评论 -
PostgreSQL分区裁剪:原理、实践与性能优化指南
本文深入探讨PostgreSQL中Partition Pruning(分区裁剪)技术的实现原理、应用场景和优化方法。通过详细解析分区裁剪的工作机制,结合范围分区、列表分区和哈希分区的实际案例,展示如何有效利用这一优化技术提升查询性能。文章还提供了监控分区裁剪效果的方法和常见问题的解决方案,帮助读者在实际工作中充分发挥PostgreSQL分区表的性能优势。原创 2025-07-08 01:30:00 · 927 阅读 · 0 评论 -
PostgreSQL中的HASH分区:原理、实现与最佳实践
PostgreSQL的HASH分区一种数据分布技术,它通过哈希函数将表数据均匀分散到多个分区中。这种分区方式特别适合需要将数据均匀分布且没有明显自然分区键的场景。本文将深入介绍HASH分区的原理、实现方法、性能特点以及实际应用案例,帮助您在合适的场景中有效利用这一功能。原创 2025-07-07 20:33:34 · 1680 阅读 · 0 评论 -
PostgreSQL中的BRIN索引:大数据量场景下的高效索引方案
在PostgreSQL数据库中,当面对海量数据表的查询优化时,传统B-tree索引可能面临存储空间大、维护成本高的问题。**BRIN索引(Block Range INdex)**作为一种特殊的索引类型,专门为大数据量场景设计,能够在极小的存储开销下提供高效的查询性能。本文将深入介绍BRIN索引的工作原理、适用场景、创建方法、性能优化技巧,并通过实际案例展示其应用效果。原创 2025-07-07 14:37:46 · 1141 阅读 · 0 评论 -
PostgreSQL中的行级安全(Row-Level Security, RLS):精细化数据访问控制
在数据库安全领域,**行级安全(Row-Level Security, RLS)** 是一种强大的机制,允许数据库管理员(DBA)或开发者定义细粒度的访问控制策略,确保用户只能访问或修改符合特定条件的数据行。通过本文,您将掌握如何在 PostgreSQL 中高效应用 RLS,提升数据安全性。原创 2025-07-07 13:49:48 · 1752 阅读 · 0 评论 -
PostgreSQL中的rank()窗口函数:实用指南与示例
在数据分析和数据库管理中,经常需要对数据进行排名操作。PostgreSQL提供了强大的窗口函数`rank()`,可以方便地对结果集中的行进行排名。本文将详细介绍`rank()`函数的使用方法,并通过多个实用示例展示其在不同场景下的应用。原创 2025-07-03 17:19:45 · 1160 阅读 · 0 评论 -
PostgreSQL TRANSLATE() 函数详解:定义、应用与对比
在数据库操作中,字符串处理是一项常见且重要的任务。PostgreSQL 提供了丰富的字符串函数来满足各种文本处理需求。其中,`TRANSLATE()` 函数是一个简单但功能强大的工具,用于字符级别的替换操作。本文将详细介绍 PostgreSQL 中的 `TRANSLATE()` 函数,包括其定义、实际应用场景、具体示例,并与其他相关函数进行对比分析。原创 2025-06-24 02:00:00 · 1482 阅读 · 0 评论 -
PostgreSQL对称between比较运算
本文介绍PostgreSQL对称between比较功能:between symmetric,在动态拼接SQL时利用它可以简化判断。PostgreSQL 9.4 及以上版本支持操作符,MySQL、Oracle、MsSQL没有对应功能。原创 2025-01-03 15:49:41 · 931 阅读 · 0 评论 -
介绍PostgreSQL CTE(common table expressions)
介绍PostgreSQL CTE(common table expressions)本文我们学习如何使用PostgreSQL CTE(common table expressions)简化复杂查询。介绍 common table expressionsPostgreSQL CTE(common table expressions) 是临时结果,可以在其他SQL中引用,如SELECT, INS...原创 2019-04-27 22:19:08 · 6877 阅读 · 1 评论 -
PostgreSQL ROLLUP教程
PostgreSQL ROLLUP教程本文介绍如何使用PostgreSQL ROLLUP生成多组集合。概述PostgreSQL ROLLUP 是group by 的子句,是生成多个分组集合的快捷功能。与Cube子句的差异是,rollup 不生成基于特定列所有可能的分组集合,生成分组集合为其子集。ROLLUP假设输入列之间存在层次结构,从而生成有意义的所有分组集合。这就是为什么ROLLUP经...原创 2019-07-21 22:10:01 · 6477 阅读 · 0 评论 -
SQL分析函数教程 - rollup - cube
SQL 分析函数教程 - rollup - cubeoracle 有一些令人兴奋的ANSI SQL扩展功能,可以快速实现计算聚合和上卷功能,主要语句包括:rollup、cube、group。这些简单SQL可以很容易实现聚合功能,无需我们通过存储过程实现。下面先从rollup语法开始。使用Rollup实现分组聚合ROLLUP语句在跨指定的维度组上计算多个级别的小计。它还计算了一个总数。ROLL...原创 2019-07-23 08:41:41 · 1674 阅读 · 0 评论 -
PostgreSQL 窗口函数教程
PostgreSQL 窗口函数教程本文我们学习如何使用PostgreSQL 窗口函数跨与当前行相关的一组行执行计算。准备示例表首先我们创建两个实例表用于演示:products 和 product_groups创建表语句:CREATE TABLE product_groups ( group_id serial PRIMARY KEY, group_name VARCHAR ...原创 2019-07-28 18:03:55 · 1827 阅读 · 0 评论 -
PostgreSQL通过pg_trgm扩展的三元索引实现全文检索
本文介绍利用pg_trgm扩展实现全文检索。1. 概述PostgreSQL可以使用三元索引增强全文检索。三元算法对字符串进行分词,如“dog” 被分为 “d”,”do”,”dog”,”og”多个词。pg_trgm扩展支持三元匹配。也在Gist和Gin索引上使用三元匹配操作提升检索速度或性能。对于全文搜索提供了不同的同义词,同时也可以使用Trigram来实现打字更正和建议。下面通过示例说明。2. 模糊匹配这里先介绍postgresql几种模糊操作符:like都比较熟悉的大小写敏感匹配,ili原创 2021-03-05 22:23:04 · 2818 阅读 · 1 评论 -
Golang PostgreSql数据库事务处理
Golang PostgreSql数据库事务处理对于数据库执行多个更新操作时,事务会将多个操作当成单个单元处理,要成功都成功,否则都失败。本文通过实例说明Go Sql事务处理。1. 环境准备 搭建PostgreSql数据库环境,我们打算在postgre数据库中新建表meta_data(id, source),然后插入记录测试事务。 go操作数据库的包为"database/sql",这里数据库使用postgreSql,需要导入github.com/lib/pq;下面是准备数据库连接代码。impo原创 2020-08-05 15:52:36 · 1672 阅读 · 0 评论 -
PostgreSQL CAST 转换数据类型
本文介绍PostgreSQL CAST操作转换数据类型。1. PostgreSQL CAST介绍很多时候需要转换数据类型。PostgreSQL 提供了CAST操作实现类型转换。语法如下:CAST ( expression AS target_type );表达式可以是常量、列、表达式目标数据类型即想转换的数据类型*cast :: operator除了上面的语法,还有另外的语法实现同样功能;expression::type,举例:SELECT '100'::INTEGER, '0原创 2020-12-20 10:47:11 · 42869 阅读 · 6 评论 -
通过例子看懂MVCC(Multi Version Concurrency Control)
本文简要介绍MVCC并解释其工作原理。也许你已看到很多相关的理论知识,这里希望使用最容易理解的示例进行说明。1. 什么是MVCC(Multi Version Concurrency Control)简言之,一条记录有多个版本。举例:用户A插入一条ID为1的记录(存储该记录在数据页上)。用户B更新ID为1的记录。一条插入记录并被另一个用户更新。首先插入记录,旧版本记录被新的更新语句改变,变成了新版本记录。但新版本记录在数据页上是独立新增,不是更新原来记录。MVCC对每个变化存储不同的版本,而不原创 2020-12-31 17:31:23 · 912 阅读 · 0 评论 -
介绍 PostgreSql 两个有用的比较操作
介绍 PostgreSql 两个有用的比较操作本文介绍PostgreSql中两个非常方便、有用的比较操作,OVERLAPS 和 BETWEEN SYMMETRIC。1. OVERLAPS(重叠)OVERLAPS操作,用于检测两个日期范围是否重叠。举例:SELECT (DATE '2016-01-10', DATE '2016-02-01') OVERLAPS (DATE '2016-01-20', DATE '2016-02-10');结果返回true。时间范围边界有两种方式:日期(tim原创 2020-11-15 17:04:32 · 1768 阅读 · 0 评论 -
介绍 PostgreSQL STRING_AGG() 和 ARRAY_AGG()函数
本文学习如何使用介绍 PostgreSQL STRING_AGG 函数,使用分割连接多个字符串。1. 介绍PostgreSQL STRING_AGG()PostgreSQL STRING_AGG() 函数是聚集函数,使用分隔符连接一组字符串,但结尾不会多余分隔符。语法如下:STRING_AGG ( expression, separator [order_by_clause] )expression 可以解析成字符串的任何有效表达式。如果是其他数据类型,需要显示转换为字符串。separa原创 2020-12-20 17:21:47 · 8566 阅读 · 0 评论 -
PostgreSQL 分区表教程
由于数据库中存储了大量数据,性能和可伸缩性是受到影响的两个主要因素。随着加载表数据的增加,需要更多的数据扫描、页交换到内存,以及其他表操作成本也会增加。分区可能是一个很好的解决方案,因为它可以将一个大表划分为更小的表,从而减少表扫描和内存交换问题,从而提高数据库性能。分区有助于扩展PostgreSQL,它将大型逻辑表拆分为较小的物理表,这些物理表可以根据使用情况存储在不同的存储介质上。通过使用显示分区及利用postgres_fdw实现的外部表,用户可以更好地利用伸缩性。自从 PostgreSQL10 支原创 2021-01-10 21:26:28 · 2652 阅读 · 1 评论 -
PostgreSQL Update join 和 Delete join 教程
本文学习如何使用 Update join 和 Delete join 语法,实现基于另一张表更新和删除表数据。Update join语法介绍Update join用于基于另一张表更新表数据,语法如下:UPDATE t1SET t1.c1 = new_valueFROM t2WHERE t1.c2 = t2.c2;from 关键字后面指定另一张表,where指定关联条件。对于t1表中每一行,update语句检查表t2,如果t1.c2 与 t2.c2 相等,则更新t1.c1为新的值。示例.原创 2021-09-02 20:11:35 · 13210 阅读 · 1 评论 -
PostgreSQL Substring教程
本文介绍PostgreSQL Substring函数,用于从字符串中抽取字串。1. Substring函数语法该函数返回字符串,语法有多种形式。1.1 三个参数SUBSTRING ( string ,start_position , length )参数解释:string 可以是 char, varchar, text等数据类型。start_position 是integer类型,指定从哪开始抽取. 如果等于零,则从第一个字符开始。虽然其他数据库可以为负数,但这里只能是正数。length原创 2021-01-12 20:34:23 · 28230 阅读 · 1 评论 -
PostgreSQL 从 csv 文件导入数据
本文我们学习如何把csv数据文件导入至PostgreSQL中。创建实例表和数据首先创建persons表,包括五个字段:idfirst_namelast_namedob : 出生日期emailCREATE TABLE persons ( id SERIAL, first_name VARCHAR(50), last_name VARCHAR(50), dob DATE, email VARCHAR(255), PRIMARY KEY (id))准备csv数.原创 2021-07-27 13:08:38 · 12540 阅读 · 0 评论 -
PostgreSQL 完全外连接(FULL OUTER JOIN) 教程
本文学习如何使用PostgreSQL 完全外连接,从两个或多个表中查询数据。完全外连接介绍完全外连接合并左连接和右连接的结果。对于连接表不匹配的行,完全连接设置每一列的值为null 。如果一个表的行与另一个表匹配,那么结果将包含来自两个的相应列。假设需要从A,B两个完全连接查询结果,语法如下:SELECT * FROM AFULL [OUTER] JOIN B on A.id = B.id;其中 [OUTER] 关键字为可选的。下图使用韦恩图表示完全连接:图1其结果包括两个表匹配的.原创 2021-09-13 17:15:21 · 7591 阅读 · 0 评论 -
PostgreSQL SERIAL创建自增列
PostgreSQL SERIAL创建自增列本文我们介绍PostgreSQL SERIAL,并展示如何使用serial类型创建表自增列。PostgreSQL SERIAL伪类型PostgreSQL序列是一种特殊的用于生产整数序列数据库对象。序列通常用于主键列,与mysql的AUTO_INCREMENT 概念类似。创建表时使用serial伪类型定义序列:CREATE TABLE table_...原创 2019-06-22 21:44:08 · 32654 阅读 · 9 评论 -
PostgreSQL Array 教程
本文带你学习PostgreSQL Array 类型,包括如何操作数组类型以及一些常用函数。Array类型数组类型是 Postgresql 的重要角色之一。每种数据都有其伴随的数组类型,如integer 对应 integer[] ,character 对应 character[] 。针对自定义数据类型,PostgreSQL在后台也创建了对应的伴随数组类型。PostgreSQL 支持任何有效的数据类型列为数组类型,包括内置类型、用户定义类型、枚举类型。下面示例,定义contacts 表,phone .原创 2021-07-04 12:00:03 · 7530 阅读 · 1 评论 -
PostgreSql psql 中必须掌握的一组常用命令
PostgreSql psql 中必须掌握的一组常用命令本文带你学习PostgreSql中一组常用命令,帮助你更快、更有效从PostgreSql中查询数据。连接PostgreSQL 数据库下面命令指定用户连接至数据库,回车后输入对应密码。psql -d database -U user -W举例postgres用户连接postgres数据库:psql -d postgres -U postgres -W用户 postgres 的口令:psql (10.15)postgres=#原创 2020-11-15 21:11:25 · 2491 阅读 · 1 评论
分享