<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Databases on Escalopa</title><link>https://escalopa.com/en/tags/databases/</link><description>Recent content in Databases on Escalopa</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>ahmed.helaly.dev@google.com (Ahmed Helaly)</managingEditor><webMaster>ahmed.helaly.dev@google.com (Ahmed Helaly)</webMaster><copyright>© 2026 Ahmed Helaly</copyright><lastBuildDate>Fri, 10 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://escalopa.com/en/tags/databases/index.xml" rel="self" type="application/rss+xml"/><item><title>PostgreSQL Indexes From Query Shape</title><link>https://escalopa.com/en/posts/postgresql-indexes-from-query-shape/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/postgresql-indexes-from-query-shape/</guid><description>Design indexes from predicates, join keys, ordering, selectivity, and write cost together.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/postgresql-indexes-from-query-shape/featured.svg"/></item><item><title>Reading EXPLAIN ANALYZE Without Guessing</title><link>https://escalopa.com/en/posts/reading-explain-analyze-without-guessing/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/reading-explain-analyze-without-guessing/</guid><description>Compare estimated and actual rows first, then find where time, loops, or memory multiply.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/reading-explain-analyze-without-guessing/featured.svg"/></item><item><title>Transaction Isolation Through Anomalies</title><link>https://escalopa.com/en/posts/transaction-isolation-through-anomalies/</link><pubDate>Wed, 19 Feb 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/transaction-isolation-through-anomalies/</guid><description>Choose isolation by naming the anomaly that would violate a business invariant.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/transaction-isolation-through-anomalies/featured.svg"/></item><item><title>The Lost Update and How to Prevent It</title><link>https://escalopa.com/en/posts/the-lost-update-and-how-to-prevent-it/</link><pubDate>Sat, 12 Apr 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/the-lost-update-and-how-to-prevent-it/</guid><description>Atomic updates, locks, or optimistic versions must protect read-modify-write as one decision.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/the-lost-update-and-how-to-prevent-it/featured.svg"/></item><item><title>Keyset Pagination in PostgreSQL</title><link>https://escalopa.com/en/posts/keyset-pagination-in-postgresql/</link><pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/keyset-pagination-in-postgresql/</guid><description>Seek from the last ordered key to keep page cost stable and results coherent.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/keyset-pagination-in-postgresql/featured.svg"/></item><item><title>Zero-Downtime Schema Migrations</title><link>https://escalopa.com/en/posts/zero-downtime-schema-migrations/</link><pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/zero-downtime-schema-migrations/</guid><description>Expand, migrate, verify, switch, and contract across independently deployed application versions.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/zero-downtime-schema-migrations/featured.svg"/></item><item><title>Redis Caching Without Stale Data Surprises</title><link>https://escalopa.com/en/posts/redis-caching-without-stale-data-surprises/</link><pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/redis-caching-without-stale-data-surprises/</guid><description>Define ownership, expiry, invalidation, stampede control, and degraded behavior before adding cache code.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/redis-caching-without-stale-data-surprises/featured.svg"/></item><item><title>Cache Stampede Protection</title><link>https://escalopa.com/en/posts/cache-stampede-protection/</link><pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/cache-stampede-protection/</guid><description>Request coalescing, early refresh, and jitter keep one expiry from becoming a dependency spike.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/cache-stampede-protection/featured.svg"/></item><item><title>Kafka Partitioning and Consumer Parallelism</title><link>https://escalopa.com/en/posts/kafka-partitioning-and-consumer-parallelism/</link><pubDate>Sun, 02 Mar 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/kafka-partitioning-and-consumer-parallelism/</guid><description>The key determines ordering and skew; partition count sets the ceiling for group parallelism.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/kafka-partitioning-and-consumer-parallelism/featured.svg"/></item><item><title>Kafka Delivery Semantics in Practice</title><link>https://escalopa.com/en/posts/kafka-delivery-semantics-in-practice/</link><pubDate>Thu, 18 Sep 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/kafka-delivery-semantics-in-practice/</guid><description>Offsets and side effects must share a recoverable protocol to survive crashes between them.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/kafka-delivery-semantics-in-practice/featured.svg"/></item><item><title>ClickHouse Table Design for Event Analytics</title><link>https://escalopa.com/en/posts/clickhouse-table-design-for-event-analytics/</link><pubDate>Sat, 03 Aug 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/clickhouse-table-design-for-event-analytics/</guid><description>Partition for lifecycle, order for filtering locality, and measure cardinality before choosing codecs.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/clickhouse-table-design-for-event-analytics/featured.svg"/></item><item><title>ETCD Transactions for Coordination</title><link>https://escalopa.com/en/posts/etcd-transactions-for-coordination/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/etcd-transactions-for-coordination/</guid><description>Compare-and-swap plus leases can encode ownership, but clients must handle revision and expiry races.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/etcd-transactions-for-coordination/featured.svg"/></item><item><title>PostGIS Nearest-Neighbor Queries</title><link>https://escalopa.com/en/posts/postgis-nearest-neighbor-queries/</link><pubDate>Tue, 11 Nov 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/postgis-nearest-neighbor-queries/</guid><description>Use spatial indexes and distance operators that preserve indexability before calculating exact distance.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/postgis-nearest-neighbor-queries/featured.svg"/></item><item><title>Connection Pools Are Capacity Limits</title><link>https://escalopa.com/en/posts/connection-pools-are-capacity-limits/</link><pubDate>Mon, 18 Nov 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/connection-pools-are-capacity-limits/</guid><description>Pool size must reflect database concurrency, transaction duration, and queueing—not application goroutine count.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/connection-pools-are-capacity-limits/featured.svg"/></item><item><title>Choosing Between Redis and Memcached</title><link>https://escalopa.com/en/posts/choosing-between-redis-and-memcached/</link><pubDate>Wed, 19 Nov 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/choosing-between-redis-and-memcached/</guid><description>Choose from data model, persistence, operations, clustering, and failure behavior rather than benchmark headlines.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/choosing-between-redis-and-memcached/featured.svg"/></item></channel></rss>