Django数据库可扩展性

时间:2009-10-19 07:19:25

标签: database django orm

我们有一个新的django供电项目,它具有潜在的高流量特性(意味着重型数据库交互)。所以我们需要提前考虑数据库的可扩展性。通过一些研究,我们仍然不清楚以下问题:

  1. 粗粒度:如何为特定的数据库(可能在另一台服务器中)指定一个数据库表(一个django模型)?
  2. 细粒度:如何将一组表行指定到特定的数据库(所谓的分片,也可以在另一个数据库服务器中)?
  3. 如何指定写入和读取不同的数据库?(这将有助于将来的mysql主/从复制)
  4. 我们正在寻找解决方案:

    1. 对应用程序透明(意味着我们不需要在views.py中添加其他代码)
    2. 应该处于ORM级别(表示只需要在models.py中指定)
    3. 与当前(或未来)django版本兼容(为将来升级django保持最小变化)
    4. 我还在做研究。如果我有一些成果,将在以后分享这个帖子。

      希望有经验的人都能回答。感谢。

3 个答案:

答案 0 :(得分:2)

不要忘记缓存。使用memcached来减轻数据库的负载是构建高性能站点的关键。

正如亚历克斯所说,django-core不支持您对这些功能的具体要求,尽管它们肯定在待办事项清单上。

如果您不在应用程序层中执行此操作,则基本上是在寻找性能问题。对于这类任务,没有任何真正好的开源自动化层,因为它往往会破坏SQL公理。如果你真的很担心它,你应该为它编写整个应用程序的代码,而不是简单地希望你的ORM会处理它。

答案 1 :(得分:1)

  1. Alex Gaynor的GSoC项目将来允许在一个Django项目中使用多个数据库。但现在没有跨RDBMS工作解决方案。

  2. 目前也没有解决方案。

  3. 再次 - 没有跨RDBMS解决方案。但是如果你使用MySQL,你可以尝试一下名为 - mysql_replicated的优秀的第三方Django应用程序。它允许轻松设置主从复制方案。

答案 2 :(得分:0)

这里出于某种原因我们使用django和sqlalchemy。也许django和sqlalchemy的组合也可以满足您的需求。

相关问题