我有一个带有 PostgreSQL 数据库的 Django 网站。有一个用于“平面”项目表的 Django 应用程序和模型,其中定期插入许多记录,每月最多插入数百万条记录。我想使用这些记录来自动填充事实和维度表的星型模式(最初也在 Django models.py 中建模),以便有效地对记录进行复杂查询,并在 Django 站点上显示来自它们的数据.
两个主要选项不断出现:
1) PostgreSQL 触发器:根据记录的创建或更新,直接配置数据库以将适当的行插入事实表和维度表,可能使用 Python/PL-pgsql 和行级后触发器。优点:适用于 Django 之外的输入;预计效率会更高。缺点:将业务逻辑拆分到另一个位置;其他输入源可能不期望触发插入。
2) Django Signals:使用 Signals 功能在创建或更新记录时使用内置信号 django.db.models.signals.post_save 进行插入。优点:更容易构建和维护。缺点:必须重复一些代码或留在 Django 站点/应用程序环境中以支持新的输入源。
我认为 Django 的内置信号是维护事实表和维度表的方法是否正确?或者是否还有其他一些重要的选择被遗漏了?