{
  "generated_at": "2026-07-13T21:25:24.277Z",
  "systems": [
    "PostgreSQL",
    "Redis",
    "Qdrant",
    "Chroma"
  ],
  "schema": [
    {
      "id": 1,
      "name": "users",
      "domain": "identity",
      "rows_estimate": 15000,
      "partitioning": "hash by tenant",
      "security": "RLS + PII columns"
    },
    {
      "id": 2,
      "name": "projects",
      "domain": "portfolio",
      "rows_estimate": 180,
      "partitioning": "none",
      "security": "owner policies"
    },
    {
      "id": 3,
      "name": "deployments",
      "domain": "delivery",
      "rows_estimate": 45000,
      "partitioning": "monthly by created_at",
      "security": "service role"
    },
    {
      "id": 4,
      "name": "events",
      "domain": "operations",
      "rows_estimate": 2800000,
      "partitioning": "monthly by occurred_at",
      "security": "append-only"
    },
    {
      "id": 5,
      "name": "documents",
      "domain": "knowledge",
      "rows_estimate": 120000,
      "partitioning": "tenant hash",
      "security": "RLS + checksum"
    },
    {
      "id": 6,
      "name": "document_chunks",
      "domain": "rag",
      "rows_estimate": 900000,
      "partitioning": "tenant hash",
      "security": "service role"
    },
    {
      "id": 7,
      "name": "audit_log",
      "domain": "security",
      "rows_estimate": 4000000,
      "partitioning": "monthly by created_at",
      "security": "immutable append"
    },
    {
      "id": 8,
      "name": "backup_catalog",
      "domain": "resilience",
      "rows_estimate": 1200,
      "partitioning": "none",
      "security": "admin only"
    }
  ],
  "backups": [
    {
      "id": 1,
      "system": "PostgreSQL",
      "method": "Base backup + WAL archive",
      "schedule": "daily + continuous",
      "retention": "35 days",
      "rpo": "≤5 min",
      "rto": "≤45 min",
      "last_status": "LIVE"
    },
    {
      "id": 2,
      "system": "Redis",
      "method": "RDB snapshot + AOF",
      "schedule": "hourly + every write",
      "retention": "14 days",
      "rpo": "≤1 sec",
      "rto": "≤15 min",
      "last_status": "BLUEPRINT"
    },
    {
      "id": 3,
      "system": "Qdrant",
      "method": "Collection snapshot",
      "schedule": "every 6 hours",
      "retention": "30 days",
      "rpo": "≤6 hr",
      "rto": "≤30 min",
      "last_status": "BLUEPRINT"
    },
    {
      "id": 4,
      "system": "Chroma",
      "method": "Persistent volume snapshot",
      "schedule": "daily",
      "retention": "14 days",
      "rpo": "≤24 hr",
      "rto": "≤60 min",
      "last_status": "BLUEPRINT"
    }
  ],
  "replicas": [
    {
      "id": 1,
      "system": "PostgreSQL",
      "node": "pg-primary-ap-sg",
      "region": "ap-southeast-1a",
      "role": "PRIMARY",
      "lag_ms": 0,
      "status": "LIVE"
    },
    {
      "id": 2,
      "system": "PostgreSQL",
      "node": "pg-replica-ap-sg",
      "region": "ap-southeast-1b",
      "role": "SYNC READ",
      "lag_ms": 18,
      "status": "LIVE"
    },
    {
      "id": 3,
      "system": "Redis",
      "node": "redis-primary",
      "region": "ap-southeast-1a",
      "role": "PRIMARY",
      "lag_ms": 0,
      "status": "BLUEPRINT"
    },
    {
      "id": 4,
      "system": "Redis",
      "node": "redis-replica",
      "region": "ap-southeast-1b",
      "role": "REPLICA",
      "lag_ms": 7,
      "status": "BLUEPRINT"
    },
    {
      "id": 5,
      "system": "Qdrant",
      "node": "qdrant-shard-0",
      "region": "ap-southeast-1a",
      "role": "SHARD PRIMARY",
      "lag_ms": 0,
      "status": "BLUEPRINT"
    },
    {
      "id": 6,
      "system": "Qdrant",
      "node": "qdrant-shard-0-r1",
      "region": "ap-southeast-1b",
      "role": "SHARD REPLICA",
      "lag_ms": 22,
      "status": "BLUEPRINT"
    },
    {
      "id": 7,
      "system": "Chroma",
      "node": "chroma-persistent",
      "region": "ap-southeast-1a",
      "role": "SINGLE NODE",
      "lag_ms": 0,
      "status": "BLUEPRINT"
    }
  ],
  "documents": [
    {
      "id": 1,
      "title": "PostgreSQL recovery",
      "content": "PostgreSQL recovery combines base backups with archived WAL so the database can be restored to a precise point in time. Restore drills verify checksums, permissions, timelines, and application consistency.",
      "backend": "qdrant",
      "metadata": "{\"domain\":\"resilience\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    },
    {
      "id": 2,
      "title": "Redis cache policy",
      "content": "Redis uses cache-aside ownership, explicit TTLs, event-driven invalidation, RDB snapshots, AOF durability, ACLs, and replicas. PostgreSQL remains the source of truth.",
      "backend": "chroma",
      "metadata": "{\"domain\":\"cache\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    },
    {
      "id": 3,
      "title": "Qdrant production RAG",
      "content": "Qdrant collections store vectors and payload metadata. HNSW search, payload filters, shards, replicas, and snapshots support production retrieval and recovery.",
      "backend": "qdrant",
      "metadata": "{\"domain\":\"rag\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    },
    {
      "id": 4,
      "title": "Chroma alternative",
      "content": "Chroma offers collections, documents, embeddings, metadata filters, and persistent clients. It is suitable for local development, experiments, and embedded application retrieval.",
      "backend": "chroma",
      "metadata": "{\"domain\":\"rag\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    },
    {
      "id": 5,
      "title": "Database security",
      "content": "Database security requires TLS, private networks, least-privilege identities, credential rotation, audit logs, row-level security, Redis ACLs, and Qdrant API keys.",
      "backend": "qdrant",
      "metadata": "{\"domain\":\"security\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    },
    {
      "id": 6,
      "title": "Scaling strategy",
      "content": "Scale PostgreSQL reads with replicas and partition large tables, scale Redis with replicas or cluster, scale Qdrant with shards and replicas, and size Chroma persistent volumes to workload.",
      "backend": "chroma",
      "metadata": "{\"domain\":\"scaling\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    },
    {
      "id": 7,
      "title": "Portfolio ER model",
      "content": "The portfolio schema connects users, projects, deployments, events, documents, document chunks, audit records, and backup catalog entries through constrained identifiers and explicit ownership.",
      "backend": "qdrant",
      "metadata": "{\"domain\":\"schema\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    },
    {
      "id": 8,
      "title": "Backup governance",
      "content": "Every data system has a documented RPO, RTO, retention period, encrypted destination, checksum verification, restore owner, and scheduled recovery exercise.",
      "backend": "chroma",
      "metadata": "{\"domain\":\"resilience\"}",
      "created_at": "2026-07-13T14:26:05.573Z"
    }
  ]
}