2014-02-14 576 views
20

我在PHP/Laravel中開發了多租戶SAAS應用程序,但最近我遇到了在Django/Python中開發一個應用程序的挑戰。我仍然在學習Django,我非常喜歡Django rest框架(DRF)。但我有困難的下面找出突出的地區,如果有人給出了一些光,我會好到哪裏去:Django中的多租戶SAAS

  1. 如何處理子域/域,選擇合適的租戶數據庫
  2. 如何管理和在Django動態處理不同的數據庫
  3. 能多租戶應用程式後端仍然可以從Django管理界面管理
  4. 我會用隊列和其他應用scalling技術,需要的,如果任何
  5. 任何例子在那裏
  6. 技巧和竅門
  7. 通過Django開發SAAS時的任何挑戰經驗
+0

有一個在你的問題的可能重複: [Python的/ Django的多租戶解決方案] [1] [1]:http://stackoverflow.com/questions/19230734/ python-django-multi-tenancy-solution – Ber

+0

是的,但我意識到django-tenant-schemas只與PostgreSQL綁定。無論如何,你可以處理MySQL和正確處理域 –

回答

1

你可以嘗試下面的鏈接它已經實現了多租戶而不是多個dbs。

https://github.com/shestera/django-multisite

+0

Django多站點的最新提交是從2009-11-17,並沒有任何文檔,除了安裝說明 –

21

嗯......

  1. django-subdomains
  2. arepeople誰詢問了動態數據庫,這樣的問題在Django(包括啊哈...... me)。我不完全確定我是通過「動態處理不同的數據庫」來理解你的意思,所以我想只是去我剛纔提到的鏈接,併爲你的項目挑選最好的。 (也可能 - this is more relevant?)
  3. 檢出django-multitenant-schemasthis answer too
  4. 曾經有a video(鏈接腐爛)的Disqus(Disqus是世界上最大的django應用之一)解釋他們如何處理縮放。在這裏another interesting article關於這個問題。另外,傳說中的SO問題Does Django Scale
  5. (和6)檢查出this answer

我希望這是不夠詳細。我知道這可能是一個令人失望的唯一鏈接的答案,但這是它的現實 - Django是一個更新的框架,使用python進行web開發仍然不如php。考慮到這一點,要明白django的所有威脅(這真是太棒了),有了更復雜的需求,你就必須做更多的事情。

在這種情況下,你必須弄清楚如何分開做每一部分的方法,然後結合起來。例如,您可以輕鬆找到創建REST django應用程序的方式,但是您需要弄清楚如何將其與另一個包(如上面的子域)結合使用。

你可以在那裏找到幾百萬人用django做怪異事情的例子。這真的很強大(當我瞭解到dynamic models我被吹走了)。但是你的應用越複雜,你需要做的就越多。

撿起它,一次一步,然後回到SO,並回答您遇到的具體問題(或django users google group)。祝你好運!

+0

我一直在經歷所有的建議,我可能會接近答案但不是很充分。我已經意識到Django ORM綁定到數據庫的方式並沒有給你很大的靈活性來以你想要的方式輕鬆地操作東西。你知道以上大多數已經被一起使用的例子/ bootstrap嗎?我希望得到並遵循良好/推薦的做法。我想我可能還必須將我的數據庫從MySQL切換到PostgreSQL –

+0

這正是我的觀點 - 您有一份複雜的需求列表,並且您可以爲它們中的每一個找到大量示例,但它是組合的一部分,可能還得弄清楚自己,因爲django對這個社區來說還算新鮮。至於切換 - 坦率地說,django *是從最初開始用PostgreSQL創建的,MySQL支持稍後添加。但是我對MySQL和Django一起有很好的個人經驗,所以現在你應該嘗試使它與你所知道的一致。 – yuvi

+0

最後一件事 - ORM允許幾乎所有你需要的靈活性(並且允許原始sql查詢,如果全部否則失敗)。這只是一個瞭解小細節的問題。然而,我不會說謊,還有一些替代品聲稱更好(比如[pee-wee](http://charlesleifer.com/blog/shortcomings-in-the-django-orm-and-a-look -at-peewee-a-light-alternative /)),但我不能推薦它們。我想你應該嘗試在查看替代品之前使用ORM工作 – yuvi