<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PG Development on Yongjie Xue</title><link>https://www.yongjiexue.io/en/tags/pg-development/</link><description>Recent content in PG Development on Yongjie Xue</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 27 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://www.yongjiexue.io/en/tags/pg-development/index.xml" rel="self" type="application/rss+xml"/><item><title>Git for Data: Instant PostgreSQL Database Cloning</title><link>https://www.yongjiexue.io/en/pg/pg-clone/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/pg-clone/</guid><description>How to instantly clone a massive PostgreSQL database without consuming extra storage? PostgreSQL 18 and XFS can spark some serious magic.</description></item><item><title>PostgreSQL Convention 2024</title><link>https://www.yongjiexue.io/en/pg/pg-convention/</link><pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/pg-convention/</guid><description>No rules, no standards. Some developer conventions for PostgreSQL 16.</description></item><item><title>AI Large Models and Vector Database PGVector</title><link>https://www.yongjiexue.io/en/pg/llm-and-pgvector/</link><pubDate>Wed, 10 May 2023 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/llm-and-pgvector/</guid><description>This article focuses on vector databases hyped by AI, introduces the basic principles of AI embeddings and vector storage/retrieval, and demonstrates the functionality, performance, acquisition, and application of the vector database extension PGVECTOR through a concrete knowledge base retrieval case study.</description></item><item><title>Implementing Advanced Fuzzy Search</title><link>https://www.yongjiexue.io/en/pg/fuzzymatch/</link><pubDate>Fri, 05 Mar 2021 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/fuzzymatch/</guid><description>How to implement relatively complex fuzzy search logic in PostgreSQL?</description></item><item><title>PG Replica Identity Explained</title><link>https://www.yongjiexue.io/en/pg/replica-identity/</link><pubDate>Wed, 03 Mar 2021 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/replica-identity/</guid><description>Replica identity is important - it determines the success or failure of logical replication</description></item><item><title>Frontend-Backend Communication Wire Protocol</title><link>https://www.yongjiexue.io/en/pg/wire-protocol/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/wire-protocol/</guid><description>Understanding the TCP protocol used for communication between PostgreSQL server and client, and printing messages using Go</description></item><item><title>Transaction Isolation Level Considerations</title><link>https://www.yongjiexue.io/en/pg/isolation-level/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/isolation-level/</guid><description>PostgreSQL actually has only two transaction isolation levels: Read Committed and Serializable.</description></item><item><title>CDC Change Data Capture Mechanisms</title><link>https://www.yongjiexue.io/en/pg/logical-decoding/</link><pubDate>Wed, 12 Jun 2019 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/logical-decoding/</guid><description>Change Data Capture is an interesting ETL alternative solution.</description></item><item><title>Locks in PostgreSQL</title><link>https://www.yongjiexue.io/en/pg/pg-lock/</link><pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/pg-lock/</guid><description>Snapshot isolation does most of the heavy lifting in PG, but locks still matter. Here’s a practical guide to table locks, row locks, intention locks, and pg_locks.</description></item><item><title>O(n2) Complexity of GIN Search</title><link>https://www.yongjiexue.io/en/pg/gin/</link><pubDate>Fri, 12 Apr 2019 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/gin/</guid><description>When GIN indexes are used to search with very long keyword lists, performance degrades significantly. This article explains why GIN index keyword search has O(n^2) time complexity.</description></item><item><title>Understanding Time - Leap Years, Leap Seconds, Time and Time Zones</title><link>https://www.yongjiexue.io/en/db/reason-about-time/</link><pubDate>Tue, 11 Dec 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/db/reason-about-time/</guid><description>A proper understanding of time is very helpful for correctly handling time-related issues in work and life. For example, time representation and processing in computers, as well as time handling in databases and programming languages.</description></item><item><title>GeoIP Geographic Reverse Lookup Optimization</title><link>https://www.yongjiexue.io/en/pg/geoip/</link><pubDate>Sat, 07 Jul 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/geoip/</guid><description>A common requirement in application development is GeoIP conversion - converting source IP addresses to geographic coordinates or administrative divisions (country-state-city-county-town-village)</description></item><item><title>PostgreSQL Trigger Usage Considerations</title><link>https://www.yongjiexue.io/en/pg/sql-trigger/</link><pubDate>Sat, 07 Jul 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/sql-trigger/</guid><description>Detailed understanding of trigger management and usage in PostgreSQL</description></item><item><title>Understanding Character Encoding Principles</title><link>https://www.yongjiexue.io/en/db/character-encoding/</link><pubDate>Sun, 01 Jul 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/db/character-encoding/</guid><description>Without understanding the basic principles of character encoding, even simple string operations like comparison, sorting, and random access can easily lead you into pitfalls. This article attempts to clarify these issues through a comprehensive explanation.</description></item><item><title>PostgreSQL Development Convention (2018 Edition)</title><link>https://www.yongjiexue.io/en/pg/pg-convention-2018/</link><pubDate>Wed, 20 Jun 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/pg-convention-2018/</guid><description>Without rules, there can be no order. This article compiles a development specification for PostgreSQL database principles and features, which can reduce confusion encountered when using PostgreSQL.</description></item><item><title>Efficient Administrative Region Lookup with PostGIS</title><link>https://www.yongjiexue.io/en/pg/adcode-geodecode/</link><pubDate>Wed, 06 Jun 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/adcode-geodecode/</guid><description>How to efficiently solve the typical reverse geocoding problem: determining administrative regions based on user coordinates.</description></item><item><title>KNN Ultimate Optimization: From RDS to PostGIS</title><link>https://www.yongjiexue.io/en/pg/knn-optimize/</link><pubDate>Wed, 06 Jun 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/knn-optimize/</guid><description>Ultimate optimization of KNN problems, from traditional relational design to PostGIS</description></item><item><title>Distinct On: Remove Duplicate Data</title><link>https://www.yongjiexue.io/en/pg/sql-distinct-on/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/sql-distinct-on/</guid><description>Use Distinct On extension clause to quickly find records with maximum/minimum values within groups</description></item><item><title>Function Volatility Classification Levels</title><link>https://www.yongjiexue.io/en/pg/sql-func-volatility/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/sql-func-volatility/</guid><description>PostgreSQL functions have three volatility levels by default. Proper use can significantly improve performance.</description></item><item><title>Implementing Mutual Exclusion Constraints with Exclude</title><link>https://www.yongjiexue.io/en/pg/sql-exclude/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/sql-exclude/</guid><description>Exclude constraint is a PostgreSQL extension that can implement more advanced and sophisticated database constraints.</description></item><item><title>Implementing Cache Synchronization with Go and PostgreSQL</title><link>https://www.yongjiexue.io/en/pg/notify-trigger-based-repl/</link><pubDate>Thu, 03 Aug 2017 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/notify-trigger-based-repl/</guid><description>Cleverly utilizing PostgreSQL&amp;rsquo;s Notify feature, you can conveniently notify applications of metadata changes and implement trigger-based logical replication.</description></item><item><title>Auditing Data Changes with Triggers</title><link>https://www.yongjiexue.io/en/pg/audit-change/</link><pubDate>Fri, 09 Jun 2017 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/audit-change/</guid><description>Sometimes we want to record important metadata changes for audit purposes. PostgreSQL triggers can conveniently solve this need automatically.</description></item><item><title>Building an ItemCF Recommender in Pure SQL</title><link>https://www.yongjiexue.io/en/pg/pg-recsys/</link><pubDate>Wed, 05 Apr 2017 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/pg-recsys/</guid><description>Five minutes, PostgreSQL, and the MovieLens dataset—that’s all you need to implement a classic item-based collaborative filtering recommender.</description></item><item><title>UUID Properties, Principles and Applications</title><link>https://www.yongjiexue.io/en/pg/uuid/</link><pubDate>Sun, 06 Nov 2016 00:00:00 +0000</pubDate><guid>https://www.yongjiexue.io/en/pg/uuid/</guid><description>UUID properties, principles and applications, and how to manipulate UUIDs using PostgreSQL stored procedures.</description></item></channel></rss>