【问题标题】:Django database scalabilityDjango 数据库可扩展性
【发布时间】:2010-12-07 22:11:02
【问题描述】:

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

  1. 粗粒度:如何将一个 db 表(一个 django 模型)指定到特定的 db(可能在另一台服务器中)?
  2. 细粒度:如何将一组表行指定到特定的db(所谓的sharding,也可以在另一个db server中)?
  3. 如何指定写入和读取到不同的db?(这将有助于未来的mysql主/从复制)

我们正在寻找解决方案:

  1. 对应用程序透明(意味着我们不需要在views.py中添加额外的代码)
  2. 应该是ORM级别的(也就是说只需要在models.py中指定)
  3. 与当前(或未来)的 django 版本兼容(为未来的 django 升级保留最小的更改)

我还在做研究。如果我有一些水果,稍后会在这个线程中分享。

希望有经验的朋友可以解答。谢谢。

【问题讨论】:

    标签: database django orm


    【解决方案1】:

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

    正如 alex 所说,django-core 不支持您对这些功能的特定要求,尽管它们肯定在待办事项列表中。

    如果您不在应用层执行此操作,那么您基本上是在要求性能问题。这类任务没有任何真正好的开源自动化层,因为它往往会破坏 SQL 公理。如果你真的关心它,你应该为它编写整个应用程序,而不是仅仅希望你的 ORM 会处理它。

    【讨论】:

    • 谢谢保罗。我们不希望在应用程序编程中这样做。不过你的回答很值得参考。
    【解决方案2】:
    1. Alex Gaynor 的 GSoC 项目将来允许在一个 Django 项目中使用多个数据库。但是现在没有跨 RDBMS 的工作解决方案。

    2. 目前也没有解决办法。

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

    【讨论】:

    • 谢谢亚历克斯。我正在阅读有关 mysql_replicated 的信息。看起来很棒!
    【解决方案3】:

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

    【讨论】:

    • 谢谢阿布。但是我想知道sqlalchemy是否可以解决我上面提到的所有3个问题?
    猜你喜欢
    • 2010-09-18
    • 2015-07-08
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2014-01-19
    • 2016-09-22
    相关资源
    最近更新 更多