
In this article, we’ll explore what vector search is, what problems it solves, and how the pgpro_vector
extension for Postgres Pro brings powerful vector capabilities directly into a relational database — no need for separate specialized systems.
In this article, we’ll explore what vector search is, what problems it solves, and how the pgpro_vector
extension for Postgres Pro brings powerful vector capabilities directly into a relational database — no need for separate specialized systems.
Today, I want to talk about one of those sneaky tricks that can help speed up query execution. Specifically, this is about reordering conditions in WHERE clauses, JOINs, HAVING clauses, and so on.
The idea is simple: if a condition in an AND
chain turns out to be false, or if one in an OR
chain turns out to be true, there's no need to evaluate the rest. That means saved CPU cycles — and sometimes, a lot of them. Let’s break this down.
Have you ever wished for an AI assistant right inside your terminal window? Well, your dream has come true because Google just released Gemini CLI. In this tutorial, I'm going to show you everything you need to know about this new open-source AI agent. We'll cover how to use it, the pricing, and some useful tips and tricks. So, if you're ready, let's get started! ;)
Here I describe the results of developing a PostgreSQL extension I built just out of curiosity. Its purpose is to automatically manage extended column statistics. The idea came to me while finishing work on another "smart" query-driven product for improving PostgreSQL planning quality. I realized that the current architecture of PostgreSQL isn’t quite ready for fully autonomous operation — automatic detection of bad plans and adaptive optimizer tuning. So why not try the other way around and build an autonomous data-driven assistant?
UUIDv7 was inspired by ULID. Like ULID, it is a 128-bit identifier, containing a timestamp on the left side and random data on the right side. But RFC 9562 establishes many requirements for UUIDv7.
In databases and distributed systems, a properly implemented UUIDv7 is always preferred over any other identifier type, including natural keys, autoincrement, UUIDv4, TypeID, ULID, KSUID, CUID, NanoID, and Snowflake ID.
Training is one of the most essential factors for growth, evolution and effective collaboration for any UX design team. Design is an ever-changing industry, and there is always something new to learn even for the most experienced professionals. The reality is, not all companies take training seriously, whether the reason is a low budget, lack of time or just not realising its necessity. Meanwhile, investing in training not only boosts the quality of work, but also helps find ways to find easier solutions, work faster and optimize the whole process. Let’s discuss some tips that might help you provide effective and fruitful training for your design team without spending extra budget or wasting time on some questionable training methods.
These days, it seems like everyone is talking about AI. AI here, AI there—AI will replace us all, and so on. I started to wonder: how exactly is AI going to replace us? I decided to dig into this question and examine the technical foundations, mainly to understand it for myself—how exactly is AI supposed to replace us all? Spoiler: it isn’t planning to just yet, but what’s already available today is impressive.
How to compare the efficiency of SQL query plans? “Measure the execution time, of course!” — an experienced reader would say. And they would be absolutely right: from a practical perspective, the more efficient DBMS is the one that delivers higher TPS. However, sometimes we need to design a system that doesn't exist yet or predict behavior under loads that haven't occurred yet. In such cases, we need a characteristic that allows us to perform a qualitative analysis of a plan or compare two plans. This post is dedicated to one such characteristic — the number of data pages read.
Complex systems often appear chaotic or incomprehensible, yet closer examination reveals that such complexity can frequently be reduced to a simple underlying mechanism. By systematically removing layers of emergent behavior, one can uncover a fundamental rule or equation from which the entire system originates.
A few weeks ago, OpenAI announced that Codex is available for Plus users, and I didn’t miss a chance to try it. And today, I’m excited to share a guide to OpenAI’s Codex. As a developer, I’ve found it to be a powerful and practical tool.
We append the following metrics to the T-SQL procedure statements: execution count (x), CPU time in milliseconds (c), duration in microseconds (d), number of reads (r), number of writes (w), and @@rowcount value (n). You can display these as absolute values or percentages.
For years, we’ve studied Oracle to make PostgreSQL a more migration-friendly option. We introduced tools similar to SQL profile and SQL plan baseline as AQO and sr_plan extensions. In some cases, PostgreSQL even outperforms Oracle, especially in automatic re-optimization.
Migrations from Oracle to PostgreSQL are usually smooth performance-wise, and we’ve even developed session variable extensions to make the transition easier. While many enterprise-only features exist, PostgreSQL often integrates popular solutions directly into the core.
Manual resource management in low level C-style C++ code might be annoying. It's not practical to create good enough RAII wrappers for every single C API you use, but approaches with goto cleanup
or loads of nested if (success)
hurt readability.
A defer
macro to the rescue! The deferred lambda will be executed on scope exit, no matter how it happens: you can return
from any point, throw
an exception (if allowed), or even use a goto
to an outer scope. It is truly zero-cost and doesn't rely on C runtime or standard library, so it can be used even in kernel development.
In this tutorial, I’ll walk you through everything I’ve learned about using Google Jules — an asynchronous coding agent. I’ve kept the explanations clear and simple, so whether you're an experienced developer or a beginner, you’ll be able to follow along. By the end, you should feel confident working with Jules: assigning tasks, reviewing its output, and making the most of its capabilities. Ready? Let’s dive in. ;)
CAPTCHA has become a familiar part of the internet: distorted texts, “find all the traffic lights” images, audio riddles, and other challenges that distinguish humans from machines. Every bot-system developer or QA engineer automating web scenarios has at least once run into a script suddenly stumbling over a CAPTCHA. A natural question arises: can a program be taught to solve CAPTCHAs the way a human does—quickly and reliably? In this article I will try to figure out how AI CAPTCHA solvers are built, from classical OCR methods to modern neural networks.
Hi everyone, I’m Alexey. I’m a big fan of observability, and in this post, I want to share something I’ve been working on — the pgpro-otel-collector
.
TL;DR: pgpro-otel-collector
is an OpenTelemetry collector (aka monitoring agent) tailored for gathering Postgres metrics and logs — brought to you by PostgresPro.
This article presents a business-driven approach to software architecture, focusing on maximizing profitability through technical decisions. It advocates for:
Distributed, stateless services with immutable models for scalability
Isolated third-party integrations without disrupting core logic
Simple, modular design
Best for:
✔ Tech leads designing scalable systems
✔ Managers optimizing dev efficiency
✔ Stakeholders evaluating ROI on architecture
If you've ever run multiple instances of PostgreSQL or other software on a single machine (whether virtual or physical), you've probably encountered the "noisy neighbor" effect — when instances disrupted each other. So, how do you make them get along? We’ve got the answer!
Learning Shopify has been on my bucket list for a few years now. Plenty of people in my circle — friends, colleagues, and fellow devs — are all somehow involved with Shopify in one way or the other. Earlier this year, I finally had some breathing room between projects, so I figured it was the perfect time to give Shopify a proper look.
I started exploring the platform by setting up a dev store, poking around the admin, and skimming through the API manual. While this was a quick and easy start, it didn’t give me a deeper understanding of the platform. Plus, clicking my way through the UI felt repetitive and tedious.
That got me thinking: is there a more efficient, developer-centric way to manage a store? Something that I could run in a terminal, plug into a CI/CD pipeline, or script my way out of those mundane tasks.
I recently got my hands on Windsurf AI, and I wanted to share my experience with this AI-first Integrated Development Environment (IDE). If you’re a developer like me, always on the lookout for tools to boost productivity, this might be on your radar. So, is Windsurf AI the real deal? Let’s find out.