Database Engineering
Articles about database design, optimization, and best practices
35 canonical articles
Open Source Databases (2026): PostgreSQL, MySQL, ClickHouse, Cassandra & Beyond
Navigate the open source database landscape. Compare MySQL, PostgreSQL, MongoDB, Redis, and Cassandra with detailed feature analysis and selection criteria.
Liquibase vs Flyway: Which Database Migration Tool to Choose?
Compare Liquibase and Flyway for schema migration management — features, abstraction level, and team fit
Apache Airflow for Database Workflows: Scheduling and Orchestration
Use Apache Airflow to orchestrate database ETL, backup jobs, and maintenance tasks — DAGs, sensors, and best practices
Transactional Outbox Pattern: Reliable Event Publishing from Databases
Implement the transactional outbox pattern to publish events reliably from MySQL or PostgreSQL without dual-write problems
dbt (data build tool): A Guide for Database Engineers
Use dbt to build modular SQL transformations — models, tests, documentation, and CI/CD for your data warehouse
CDC vs ETL vs ELT: Choosing the Right Data Integration Pattern
Compare CDC, ETL, and ELT — latency, complexity, cost, and when each pattern fits your data pipeline needs
2025 in Databases: Year in Review and What to Expect in 2026
2025 was the year databases competed on operational simplicity. Serverless databases matured, pgvector merged vector search into PostgreSQL, and CDC became standard infrastructure. Here's what mattered and what's next.
Online DDL in TiDB: Non-Blocking Schema Changes for Distributed SQL
TiDB performs schema changes online without blocking reads or writes — using a distributed DDL queue across TiDB nodes. Here's how it works and how to monitor DDL jobs in production.
Database Migration Anti-Patterns: 5 Mistakes That Cause Production Incidents
Teams take down production for hours with migrations that could be zero-downtime operations. Learn to use gh-ost and CREATE INDEX CONCURRENTLY, implement rollback plans, and apply the expand-contract pattern for breaking changes.
Debezium 3.0: Real-Time CDC from PostgreSQL, MySQL, and MongoDB
Debezium 3.0 turns your database transaction log into a real-time event stream with full before/after row images. Learn to configure CDC for PostgreSQL WAL and MySQL binlog, avoid the offset storage trap, and monitor replication lag.
Database CI/CD: Versioned Migrations, GitHub Actions, and Schema Testing
Implement database CI/CD with Flyway migrations, GitHub Actions pipelines, pytest schema tests, and blue-green deployment patterns. Eliminate ad-hoc schema changes.
MySQL Schema Migration Best Practices: Expand-Contract and Batch Backfills
Execute MySQL schema migrations safely with the expand-contract pattern, batched backfills, backward-compatible changes, and migration tooling comparison (Flyway, Liquibase, gh-ost).
ETL Pipeline Monitoring: Freshness Checks, Row Reconciliation, and dbt Tests
Monitor ETL pipelines with data freshness checks, row count reconciliation, dbt data quality tests, and Slack alerting. Detect silent failures before users do.
Kafka Connect: JDBC Source, SMTs, Dead Letter Queues, and Connector Monitoring
Operate Kafka Connect database pipelines with current JDBC and Debezium settings, protected REST access, deliberate DLQ handling, and task-level monitoring.
Apache Flink CDC: Real-Time Database Change Capture at Scale
Use Apache Flink CDC to capture MySQL and PostgreSQL changes — stateful processing, exactly-once semantics, and Kubernetes deployment
GitOps for Database Change Management: Automated Schema Deployments
Apply GitOps principles to database changes — PR-based schema reviews, automated migrations, and rollback strategies
Zero-Downtime Database Migrations: The Expand-Contract Pattern for MySQL and PostgreSQL
A production guide to zero-downtime database migrations — why ALTER TABLE causes downtime, the Expand-Contract pattern, safe migration patterns for PostgreSQL and MySQL, and tooling with Flyway, Liquibase, pt-osc, and gh-ost.
Data Quality for Database Teams: Validation, Profiling, and Alerting
Add data quality checks to your pipeline — row count validation, schema drift detection, and anomaly alerting with Great Expectations
UUIDs as Primary Keys: How We Destroyed Database Performance
UUIDs as primary keys can destroy database performance. Learn why 50M rows went from 0.5ms to 2.3ms inserts, and how to fix it with hybrid approaches.
PostgreSQL Row Level Security (RLS): Multi-Tenant Access Control in Practice
A production guide to PostgreSQL Row Level Security — policy creation, USING vs WITH CHECK clauses, performance implications with indexes, and multi-tenant SaaS patterns with real schema examples.
Debezium Advanced: Handling Schema Changes, Restarts, and Offsets
Go beyond basics with Debezium — handle schema evolution, manage connector offsets, and build resilient CDC pipelines
Debezium and Change Data Capture: Stream MySQL and PostgreSQL to Kafka
Debezium reads MySQL binary logs and PostgreSQL WAL to stream every row-level change as a Kafka event in near real-time — replacing nightly batch ETL with sub-second data propagation.
PostgreSQL Logical Replication to Kafka: End-to-End Setup
Stream PostgreSQL changes to Kafka using pgoutput and Debezium — setup, monitoring, and lag management
Database Change Management: Schema Versioning and Review Processes
Implement schema change management with versioning, peer review, and automated validation for safe deployments
PostgreSQL Foreign Data Wrappers: Query External Data Sources
Use PostgreSQL FDW to query MySQL, S3, MongoDB, and other databases from within PostgreSQL — setup and performance tips
Apache Spark and JDBC: Reading and Writing Databases at Scale
Use Spark with JDBC to read from and write to relational databases — partition strategies, predicate pushdown, and write modes
Database-to-Data-Warehouse Replication: Patterns and Anti-Patterns
Replicate OLTP databases to analytical warehouses — CDC, bulk load, incremental sync, and schema evolution handling
TimescaleDB: PostgreSQL for Time-Series Data — Hypertables, Compression, and Continuous Aggregates
A production guide to TimescaleDB — hypertable setup, automatic chunk management, columnar compression policies, retention policies, continuous aggregates with time_bucket(), and comparison against InfluxDB and Prometheus.
MySQL Binlog to Kafka: Building a CDC Pipeline
Build a MySQL CDC pipeline using binlog and Kafka — Debezium, Maxwell, or Canal — trade-offs and production setup
Apache Kafka for Database Engineers: A Practical Introduction
Understand Kafka from a database perspective — partitions, offsets, consumer groups, and durability guarantees
Advanced Indexing Strategies for Database Scalability
Deep dive into advanced database indexing strategies including composite indexes, covering indexes, and partial indexes. Optimize query performance with expert indexing techniques.
Flyway: Database Migration Versioning Done Right
Manage SQL schema migrations with Flyway — versioned and repeatable scripts, CI/CD integration, and team workflows
Airbyte: Open-Source ELT for Database Replication
Deploy Airbyte to replicate data from MySQL, PostgreSQL, and MongoDB to your warehouse — connectors, scheduling, and transforms
The Ultimate Guide to Choosing the Right Database for Your Application
Navigate the complex landscape of database technologies. Compare SQL vs NoSQL, OLTP vs OLAP, and learn decision frameworks for selecting the perfect database for your use case.
Battle of Memory Allocators: A Deep Dive
Discover how jemalloc, tcmalloc, and mimalloc can dramatically improve MySQL memory management. Real benchmarks showing 2-4x performance improvements and memory leak prevention.