P.01Multi-Tenant SaaS: Pooled, Silo, and Bridge
Shared database or one per customer? Most SaaS teams pick wrong for their stage and pay later. How the three patterns trade off, and which one you need.
Tag
38 articles tagged #Database.
P.01Shared database or one per customer? Most SaaS teams pick wrong for their stage and pay later. How the three patterns trade off, and which one you need.
P.02Random UUIDs wreck index locality; auto-increment leaks counts and won't shard. What UUIDv7, ULID, and Snowflake each give you, and the real tradeoffs.
P.03Polling misses deletes, adds load, and always lags. CDC reads the write-ahead log instead, turning every insert, update, and delete into an event stream.
P.04Three tools solve three different versions of "this query is slow." How materialized views, read replicas, and caches differ, and how to pick one.
P.05PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 fixed 28 CVEs on August 13, 17 of them CVSS 8.0 or higher. Which matter, and who's actually exposed.
P.06A Bloom filter answers one question in almost no memory: is this definitely absent, or possibly present. How it works, and why false positives are a feature.
P.07SQL injection still lands CVSS 10.0 bugs in 2026. How parameterized queries stop it, where ORMs quietly reintroduce it, and how to verify your own code.
P.08An index turns a table scan into a few comparisons, but only for the queries it was built for. How B-trees work, and the write cost nobody budgets for.
P.09Four philosophies for one problem: moving a schema from what it is to what it should be, safely, in a team. How they differ and which fits your stack.
P.10Pessimistic locking stops one request from starting; optimistic lets both run and catches the conflict at the end. How each works, with SQL, and how to pick.
P.11Soft delete sounds like the safe default, but it quietly breaks unique constraints, foreign keys, and query performance unless you design for it up front.
P.12Partitioning and sharding get confused constantly. Partitioning stays on one server. How range, list, and hash work, and when it solves it before sharding.
P.13Most developers use whatever their ORM defaults to. What Read Committed, Repeatable Read, and Serializable prevent, what they allow, and how to choose.
P.14A practical comparison of the four vector databases teams actually shortlist for RAG, with real pricing, when each wins, and the question that decides it.
P.15MySQL 9 shipped a native VECTOR type and distance functions, no extension needed. How it compares to Postgres plus pgvector for real semantic search.
P.16PostgreSQL 18 is on 18.4 and 19 is still beta, so 18 is what you should run today. What async I/O, UUIDv7, and virtual generated columns actually buy you.
P.17Event sourcing stores every change as an immutable event and replays them for current state. What that buys, and the operational cost most systems skip.
P.18CAP theorem gets summarized as 'pick two of three' so often that the summary has replaced the theorem. Here's what it actually says, why the real constraint only bites during a network partition, and how to pick a consistency model for a system you're actually building.
P.19One developer rebuilt Postgres in Rust with AI agents in under three months, and pgrust now matches 18.3 across 46,000+ regression queries. What it isn't.
P.20Read replicas are the standard fix for read load, but they open a gap between writing data and reading it back. What lag breaks, and how to design around it.
P.21An N+1 bug turns one page load into hundreds of round trips. What causes it, how to spot it in Django, Rails, and Prisma, and the eager-loading fixes.
P.22PostgreSQL 19 Beta 1 adds REPACK, which rewrites bloated tables without a maintenance window, plus parallel autovacuum and smarter async I/O.
A database engineer designs schemas and tunes queries; a data engineer builds pipelines. How to screen for the one who keeps your app fast, plus 2026 rates.
ClickHouse is a columnar database designed for analytical workloads. It answers queries over billions of rows in seconds that would take minutes in Postgres. Here's what application developers need to know.
SQLite runs in every phone and browser. Turso extends it to the server and edge with replication, branching, and a network protocol. Here's when it makes sense.
Most slow queries come from a small set of fixable problems: missing indexes, N+1 patterns, and over-fetching. This is the practical diagnostic and fix guide.
The queries that wreck production Postgres share a few root causes. How to find them, read EXPLAIN ANALYZE properly, and fix them without guessing.
Neon separates storage from compute to make Postgres behave like a serverless resource. The branching feature is what actually changes the development workflow — here's how it works and when it's worth the migration.
Connection exhaustion is one of the most common production failures for apps that scale. Here's how pooling works, which tool fits which setup, and the configuration decisions that matter.
Add similarity search to your existing Postgres database using pgvector. Real setup, indexing strategies, and when you actually need a dedicated vector database.
Every SaaS team eventually faces the multi-tenancy decision. The wrong choice creates migration pain later. Here's how to think through database-per-tenant, schema-per-tenant, and row-level security based on what your product actually needs.
Running totals, rankings, moving averages, and lag comparisons without application loops or self-joins. How window functions actually work, in Postgres.
Drizzle is the TypeScript-first alternative to Prisma: schema in TS, migrations in SQL, no query engine binary. How it works, and when to pick it.
ALTER TABLE locks your database. Your migration takes longer than expected. Users get errors. Here's how to handle schema changes that don't interrupt production traffic.
P.35Nearly 200 developers urged Oracle to rethink MySQL's future. We break down the open letter, the governance crisis, the rise of PostgreSQL and alternatives, and what developers should do next.
How we built an AI-powered interface that lets non-technical users query any database using plain English, eliminating SQL expertise requirements and democratizing data access.
P.37The database landscape is consolidating around Postgres while SQLite finds new life at the edge. Meanwhile, vector databases have become essential infrastructure for AI applications.
Master SQL from basics to advanced — SELECT, JOIN, GROUP BY, ORDER BY, indexes, date functions, and more using SQLite with Python.