mcpField
D
django-materialized-views

django-materialized-views

github.com/lvtd-llc数据与数据库162 次安装7 周前更新
代码仓库

关于 django-materialized-views

这项技能指导 Django 开发者评估并实现 PostgreSQL 物化视图,涵盖设计、集成、刷新与验证,并考虑数据陈旧和数据库负载。

主要功能

  1. 01评估物化视图是否适用
  2. 02设计 SQL 输出列和索引
  3. 03通过 Django 迁移与模型集成
  4. 04规划并验证视图刷新

适用场景

  1. 01加速重复执行的昂贵读取
  2. 02在 Django 应用中添加只读视图
  3. 03选择安全的刷新策略

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/django-materialized-views确认已加载。

附带文件references/materialized-view-patterns.md

详细介绍

Django 物化视图

当昂贵的读取查询经常重复使用,且可以容忍受控的数据陈旧时,使用此技能。先尝试改进查询计划、索引和 ORM 表达式;物化视图会增加运维状态。

工作流

  1. 确认是否适用。

    • 源查询开销高且稳定。
    • 使用方可以接受陈旧数据。
    • 刷新频率、责任归属和故障处理方式明确。
    • 目标数据库为 PostgreSQL。
  2. 设计物化视图。

    • 定义 SQL 查询和输出列。
    • 如果需要并发刷新,则添加唯一列或唯一列集。
    • 为使用方针对该视图的查询添加索引。
  3. 与 Django 集成。

    • 使用 RunSQL 创建视图。
    • 将其表示为 managed = False 的非托管模型。
    • 确保非托管模型字段与 SQL 输出保持一致。
    • 在应用边界禁止写入。
  4. 实现刷新。

    • 简单刷新使用 REFRESH MATERIALIZED VIEW。
    • 仅当视图已填充且具有符合条件的唯一索引时,才使用 REFRESH MATERIALIZED VIEW CONCURRENTLY。
    • 通过管理命令、任务队列或数据库作业安排刷新。

请参阅 materialized-view-patterns.md,了解迁移、模型和刷新的模板。

安全说明

  • 物化视图返回的是存储的数据,不会自动保持最新。
  • 并发刷新可避免阻塞读取,但有前提条件,并且每个视图同一时间仍只能进行一次刷新。
  • 刷新大型视图可能会给数据库带来很大负载。请将其与读取负载分开测量。

验证

根据源表验证 SQL,测试非托管模型的读取,验证刷新行为,并测量刷新前后的读取延迟。

评论

支持 Markdown