2012-02-04 22 views
7

我設計一個新的Web項目,並研究一些選擇瞄準的可擴展性後,我想出了兩個數據庫解決方案:本地SQLite VS遠程MongoDB的

  • 本地SQLite文件,精心設計了一個可伸縮的方式(一個每個X用戶都有一個新的數據庫文件,因爲寫操作將取決於用戶內容,並且不存在跨用戶數據依賴性);
  • 遠程MongoDB服務器(如Mongolab),因爲我的主機服務器不提供MongoDB服務。

我不信任當前共享主機上的MySQL服務器,因爲它頻繁關閉(我在另一臺主機上也遇到了MySQL問題)。出於同樣的原因,我不會使用postgres。的SQLite

優點:

  • 這是本地的,所以它必須是更快(我要使用指數和交易妥善照顧);
  • 我不需要擔心tcp嗅探,因爲Mongo有線協議is not crypted;
  • 我不需要擔心服務器中斷,因爲SQLite是無服務器的。 MongoDB中的

優點:

  • 它更易於擴展;
  • 我不需要擔心分裂數據庫,因爲可伸縮性似乎很自然;
  • 我不需要擔心模式更改,因爲Mongo是無模式的,並且SQLite doesn't fully support alter table(特別考慮更改許多生產文件等)。

我想要幫助做出決定(也許考慮第三種選擇)。寫入和讀取操作越來越多的時候哪一個更好?

我打算使用Ruby。

+0

MongoDb針對寫入操作進行了優化 – Adrian 2012-02-04 00:29:05

+0

@Adrian:這相當誇張:-) – 2012-02-04 03:39:28

回答

9

SQLite方法的一個主要風險是隨着您對擴展的需求增加,您將無法(輕鬆地)在多個應用程序服務器上進行部署。您可能能夠將您的用戶分爲不同的服務器,但如果該服務器停機,則會有一些無法訪問其數據的用戶子集。

使用MongoDB(或任何其他集中式服務)可以緩解此問題,因爲您的Web服務器是無狀態的 - 可隨時添加或刪除它們以適應Web負載,而無需擔心數據在哪裏生存。