python - 分片 Django 项目

标签 python django postgresql sharding

我正在启动一个 Django 项目,需要对多个可能包含太多行的表进行分片。我浏览了这里和其他地方的线程,并遵循了 Django 多数据库文档,但我仍然不确定它们是如何缝合在一起的。我的模型具有会被分片破坏的关系,因此似乎可以选择放弃外键或放弃对各个模型进行分片。

为了论证,考虑经典的 Authot、Publisher 和 Book 场景,但加入书籍副本和可以拥有它们的用户。比如说书籍和用户必须被分片。你会如何处理?用户可能拥有不在同一数据库中的一本书的副本。

一般来说,您用于路由和分片本身的最佳实践是什么?您是否使用了 Django 数据库路由器,根据您的分片逻辑在命令中手动选择了一个数据库,或者重写了 ORM 的某些部分来实现这一点?

如果重要的话,我在 Ubuntu 上使用 PostgreSQL。

非常感谢。

最佳答案

过去我使用 Postgresql 做过类似的事情 Table Partitioning ,但是这只是在同一个数据库中拆分了一个表。这有助于减少表搜索时间。这也很好,因为您不需要对 Django 代码进行太多修改。 (确保使用用于约束的字段执行查询)。

但这不是分片。

如果你还没有看过,你应该看看Sharding Postgres with Instagram.

关于python - 分片 Django 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13620867/

相关文章:

java - jOOQ 中的动态运行时 PostgreSQL 模式选择

java - Spring Boot作为容器运行问题

postgresql - 两列之间唯一

Python pandas - 分组、计数、绘制多系列

python - Biopython 1.60 中的 Bio.Entrez 和蛋白质问题

Python 元组列表操作

django - 将Django应用程序重新部署到Google Kubernetes Engine(GKS)

python - 无法从 Django 中的另一个应用程序导入模型

python - Tkinter 的asksaveasfilename 随机忽略defaultextension

python - 使用 django-tastypie 创建、更新和删除调用