我正在启动一个 Django 项目,需要对可能包含太多行的多个表进行分片。我已经查看了这里和其他地方的线程,并遵循了 Django 多数据库文档,但我仍然不确定所有这些是如何缝合在一起的。我的模型有可能被分片破坏的关系,所以看起来选项是要么放弃对各自模型进行分片的外键。
出于争论的目的,考虑经典的 Authot、Publisher 和 Book 场景,但加入书籍副本和可以拥有它们的用户。假设书籍和用户必须被分片。你会怎么处理呢?用户可能拥有不在同一数据库中的书籍副本。
一般来说,您用于路由和分片本身的最佳实践是什么?您是否使用了 Django 数据库路由器,根据您的分片逻辑在命令中手动选择了一个数据库,或者重写了 ORM 的某些部分来实现这一点?
如果重要的话,我在 Ubuntu 上使用 PostgreSQL。
非常感谢。