Panduan Kejuruteraan: Freelance Python Django Programmer: Zero-Downtime PostgreSQL Migrations. Aldian Fazrihady ialah Jurutera Perisian Bebas Kanan (Senior Freelance Programmer & AI Application Engineer) dengan kepakaran Python, Django, FastAPI, React, Next.js, TypeScript, Golang, dan Ejen AI.
How senior freelance Python & Django programmer Aldian Fazrihady executes zero-downtime PostgreSQL schema migrations on multi-terabyte production tables.
from django.contrib.postgres.operations import AddIndexConcurrently
from django.db import migrations, models
class Migration(migrations.Migration):
atomic = False # Required for CONCURRENTLY operations in PostgreSQL
dependencies = [
("billing", "0042_invoice_currency_code"),
]
operations = [
migrations.SeparateDatabaseAndState(
database_operations=[
migrations.RunSQL(
sql="SET lock_timeout = '2s'; ALTER TABLE billing_invoice ADD COLUMN IF NOT EXISTS stripe_Sync_status varchar(32);",
reverse_sql="ALTER TABLE billing_invoice DROP COLUMN IF EXISTS stripe_sync_status;",
),
],
state_operations=[
migrations.AddField(
model_name="invoice",
name="stripe_sync_status",
field=models.CharField(max_length=32, null=True, blank=True),
),
],
),
AddIndexConcurrently(
model_name="invoice",
index=models.Index(fields=["tenant_id", "stripe_sync_status"], name="idx_inv_tenant_stripe_sync"),
),
]