mcpField
D
django-materialized-views

django-materialized-views

github.com/lvtd-llcData & databases162 installsUpdated 7w ago
Repository

About django-materialized-views

A skill for deciding when and how to use PostgreSQL materialized views with Django. It guides developers through design, integration, refresh, and verification while accounting for stale data and database workload.

Key features

  1. 01Assess whether a materialized view fits
  2. 02Design SQL output and indexes
  3. 03Integrate through Django migrations and models
  4. 04Plan and verify view refreshes

Use cases

  1. 01Speed up repeated expensive reads
  2. 02Add a read-only view to a Django app
  3. 03Choose a safe refresh strategy

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/lvtd-llc/skills --skill django-materialized-views

After installing, type/django-materialized-viewsin Claude Code to confirm it loaded.

Bundled filesreferences/materialized-view-patterns.md

Details

From the project README

Django Materialized Views

Use this skill when an expensive read query is reused often and can tolerate controlled staleness. Try query-plan, index, and ORM expression improvements first; materialized views add operational state.

Workflow

  1. Confirm fit.

    • The source query is expensive and stable.
    • Consumers can accept stale data.
    • Refresh cadence, ownership, and failure behavior are clear.
    • PostgreSQL is the target database.
  2. Design the materialized view.

    • Define the SQL query and output columns.
    • Add a unique column or unique column set if concurrent refresh is required.
    • Add indexes for consumer queries against the view.
  3. Integrate with Django.

    • Create the view with RunSQL.
    • Represent it as an unmanaged model with managed = False.
    • Keep the unmanaged model fields aligned with the SQL output.
    • Make writes impossible at the application boundary.
  4. Implement refresh.

    • Use REFRESH MATERIALIZED VIEW for simple refreshes.
    • Use REFRESH MATERIALIZED VIEW CONCURRENTLY only when the view is already populated and has a qualifying unique index.
    • Schedule refresh through a management command, task queue, or database job.

See materialized-view-patterns.md for migration, model, and refresh templates.

Safety Notes

  • A materialized view returns stored data; it is not automatically current.
  • Concurrent refresh avoids locking out reads but has prerequisites and still allows only one refresh at a time per view.
  • Refreshing a large view can be a major database workload. Measure it separately from reads.

Verification

Validate the SQL against source tables, test the unmanaged model reads, prove refresh behavior, and measure read latency before/after.

Comments

Markdown supported