2009-10-19 125 views
3

我們有一個新的django驅動的項目,它具有潛在的高流量特徵(意味着重度數據庫交互)。所以我們需要提前考慮數據庫的可伸縮性。隨着一些研究,以下問題仍沒有清楚地告訴我們:Django數據庫可擴展性

  1. 粗粒:如何指定一個數據庫表(一個Django模型)到一個特定的DB(也許在另一臺服務器)?
  2. 細粒度:如何指定一組錶行到特定的數據庫(所謂的分片,也可以在另一個數據庫服務器)?
  3. 如何指定的寫入和讀出不同的DB(這將是未來的MySQL主/從複製有用)

我們正在尋找解決方案:

  1. 是透明的應用程序(意思是我們不需要在views.py中有額外的代碼)
  2. 應該在ORM級別(意味着只需要在models.py中指定)
  3. 與當前(或未來)django版本兼容保持最小的改變r未來的升級django)

我還在做研究。如果我有一些成果,我會在稍後分享這篇文章。

希望有經驗的人都能回答。謝謝。

回答

2

不要忘記緩存。使用memcached緩解數據庫負載是構建高性能站點的關鍵。

正如alex所說,django-core不支持你對這些功能的特定請求,儘管它們肯定是在待辦事項列表中。

如果您不在應用程序層中執行此操作,則基本上要求性能問題。對於這類任務,沒有任何真正優秀的開源自動化層,因爲它往往會破壞SQL公理。如果你真的關心它,你應該爲它編寫整個應用程序,而不是簡單地希望你的ORM會照顧它。

+0

謝謝保羅。我們不希望在應用程序編程中做到這一點。但是你的回答很有參考價值。 – 2009-10-20 14:22:57

0

由於某些原因,我們使用django和sqlalchemy。也許django和sqlalchemy的組合也可以滿足您的需求。

+0

謝謝阿布。但是我想知道sqlalchemy是否可以解決我上面提到的所有3個問題? – 2009-10-19 07:30:09

1
  1. Alex Gaynor有一個GSoC項目,將來可以在一個Django項目中使用多個數據庫。但是現在沒有跨RDBMS的工作解決方案。

  2. 現在還沒有解決方案。

  3. 再次 - 沒有交叉RDBMS解決方案。但是如果你使用的是MySQL,你可以嘗試優秀的第三方Django應用程序 - mysql_replicated。它允許輕鬆設置主從複製場景。

+0

謝謝亞歷克斯。我正在閱讀有關mysql_replicated。看起來很棒! – 2009-10-19 07:57:41