<?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 Vonng</title><link>https://vonng.com/en/tags/pg-development/</link><description>Recent content in PG-Development on Vonng</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>rh@vonng.com (Ruohang Feng)</managingEditor><webMaster>rh@vonng.com (Ruohang Feng)</webMaster><copyright>© 2025 Ruohang Feng</copyright><lastBuildDate>Mon, 27 Nov 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://vonng.com/en/tags/pg-development/index.xml" rel="self" type="application/rss+xml"/><item><title>PostgreSQL Convention 2024</title><link>https://vonng.com/en/pg/pg-convention/</link><pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/pg-convention/</guid><description>No rules, no standards. Some developer conventions for PostgreSQL 16.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/pg-convention/featured.jpg"/></item><item><title>AI Large Models and Vector Database PGVector</title><link>https://vonng.com/en/pg/llm-and-pgvector/</link><pubDate>Wed, 10 May 2023 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/llm-and-pgvector/featured.jpg"/></item><item><title>Implementing Advanced Fuzzy Search</title><link>https://vonng.com/en/pg/fuzzymatch/</link><pubDate>Fri, 05 Mar 2021 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/fuzzymatch/</guid><description>How to implement relatively complex fuzzy search logic in PostgreSQL?</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/fuzzymatch/featured.jpg"/></item><item><title>Frontend-Backend Communication Wire Protocol</title><link>https://vonng.com/en/pg/wire-protocol/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/wire-protocol/</guid><description>Understanding the TCP protocol used for communication between PostgreSQL server and client, and printing messages using Go</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/wire-protocol/featured.jpg"/></item><item><title>Transaction Isolation Level Considerations</title><link>https://vonng.com/en/pg/isolation-level/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/isolation-level/</guid><description>PostgreSQL actually has only two transaction isolation levels: &lt;strong&gt;Read Committed&lt;/strong&gt; and &lt;strong&gt;Serializable&lt;/strong&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/isolation-level/featured.jpg"/></item><item><title>CDC Change Data Capture Mechanisms</title><link>https://vonng.com/en/pg/logical-decoding/</link><pubDate>Wed, 12 Jun 2019 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/logical-decoding/</guid><description>Change Data Capture is an interesting ETL alternative solution.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/logical-decoding/featured.jpg"/></item><item><title>Locks in PostgreSQL</title><link>https://vonng.com/en/pg/pg-lock/</link><pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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 &lt;code&gt;pg_locks&lt;/code&gt;.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/pg-lock/featured.jpg"/></item><item><title>O(n2) Complexity of GIN Search</title><link>https://vonng.com/en/pg/gin/</link><pubDate>Fri, 12 Apr 2019 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/gin/featured.jpg"/></item><item><title>GeoIP Geographic Reverse Lookup Optimization</title><link>https://vonng.com/en/pg/geoip/</link><pubDate>Sat, 07 Jul 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/geoip/featured.jpg"/></item><item><title>PostgreSQL Trigger Usage Considerations</title><link>https://vonng.com/en/pg/sql-trigger/</link><pubDate>Sat, 07 Jul 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/sql-trigger/</guid><description>Detailed understanding of trigger management and usage in PostgreSQL</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/sql-trigger/featured.jpg"/></item><item><title>PostgreSQL Development Convention (2018 Edition)</title><link>https://vonng.com/en/pg/pg-convention-2018/</link><pubDate>Wed, 20 Jun 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/pg-convention-2018/featured.jpg"/></item><item><title>Efficient Administrative Region Lookup with PostGIS</title><link>https://vonng.com/en/pg/adcode-geodecode/</link><pubDate>Wed, 06 Jun 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/adcode-geodecode/</guid><description>How to efficiently solve the typical reverse geocoding problem: determining administrative regions based on user coordinates.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/adcode-geodecode/featured.jpg"/></item><item><title>KNN Ultimate Optimization: From RDS to PostGIS</title><link>https://vonng.com/en/pg/knn-optimize/</link><pubDate>Wed, 06 Jun 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/knn-optimize/</guid><description>Ultimate optimization of KNN problems, from traditional relational design to PostGIS</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/knn-optimize/featured.jpg"/></item><item><title>Distinct On: Remove Duplicate Data</title><link>https://vonng.com/en/pg/sql-distinct-on/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/sql-distinct-on/</guid><description>Use Distinct On extension clause to quickly find records with maximum/minimum values within groups</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/sql-distinct-on/featured.jpg"/></item><item><title>Function Volatility Classification Levels</title><link>https://vonng.com/en/pg/sql-func-volatility/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/sql-func-volatility/</guid><description>PostgreSQL functions have three volatility levels by default. Proper use can significantly improve performance.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/sql-func-volatility/featured.jpg"/></item><item><title>Implementing Mutual Exclusion Constraints with Exclude</title><link>https://vonng.com/en/pg/sql-exclude/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/sql-exclude/</guid><description>Exclude constraint is a PostgreSQL extension that can implement more advanced and sophisticated database constraints.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/sql-exclude/featured.jpg"/></item><item><title>Implementing Cache Synchronization with Go and PostgreSQL</title><link>https://vonng.com/en/pg/notify-trigger-based-repl/</link><pubDate>Thu, 03 Aug 2017 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/notify-trigger-based-repl/featured.jpg"/></item><item><title>Auditing Data Changes with Triggers</title><link>https://vonng.com/en/pg/audit-change/</link><pubDate>Fri, 09 Jun 2017 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/audit-change/featured.jpg"/></item><item><title>Building an ItemCF Recommender in Pure SQL</title><link>https://vonng.com/en/pg/pg-recsys/</link><pubDate>Wed, 05 Apr 2017 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/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><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/pg-recsys/featured.jpg"/></item><item><title>UUID Properties, Principles and Applications</title><link>https://vonng.com/en/pg/uuid/</link><pubDate>Sun, 06 Nov 2016 00:00:00 +0000</pubDate><author>rh@vonng.com (Ruohang Feng)</author><guid>https://vonng.com/en/pg/uuid/</guid><description>UUID properties, principles and applications, and how to manipulate UUIDs using PostgreSQL stored procedures.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vonng.com/pg/uuid/featured.jpg"/></item></channel></rss>