2010-08-17 72 views
33

我正在開發一個交友網站,我正在考慮使用NoSQL數據庫來存儲配置文件等。我現在正在研究MongoDB,到目前爲止我非常高興。唯一的擔心是我在不同的網站上看過MongoDB不可靠並且不好。MongoDB是可靠的嗎?

我看着NoSQL的替代品,發現沒有一個能夠完全滿足我的具體標準:

  1. 易於學習和使用。

  2. 完全兼容PHP開箱即用。

  3. 快速,有據可查。

您認爲,我是否正確地使用MongoDB或是浪費時間?

感謝您對此事的所有意見!

+5

任何軟件,尤其是那些「宗教」情緒適用的軟件(例如'vi' vs.'emacs')都會有詆譭者。你怎麼知道「不同的網站」是可靠的? (我沒有(明知)使用MongoDB或其親屬,因此對此事沒有任何意見)。 – msw 2010-08-17 17:35:09

+1

其他簡單易學的NoSQL dbs,我喜歡Redis和memcachedb – Javier 2010-08-17 17:41:49

回答

7

任何軟件都可以是可靠的或不可靠的。 MongoDB具有副本集,可爲您提供硬件故障切換功能。您可以定期進行備份,這會給您一個恢復時間間隔,並且您會得到可以給予一定冗餘度的分片,尤其是在與副本集結合使用時。

問題不在於該技術是否可靠,問題在於您是否擁有適合您所選平臺的定義明確的備份和恢復計劃。

如果MongoDB適合您的需求,您做出了正確的選擇。只要確保調查你可以做些什麼來提高可靠性。

2

10gen,公司背後的MongoDB提供官方的PHP驅動。正如Jeremiah所說,他們在最後一個版本(1.6.0)中實現了副本集,他們已經對它進行了調試(1.6.1和幾個星期的下一個版本:1.6.2)。

Mostover,由公司和社區的免費支持是非常快速和有效的(由「自由」我的意思是在谷歌組問題:http://groups.google.com/group/mongodb-user?pli=1

25

我研究的MongoDB我的社會服務啓動,它肯定是值得考慮。 MongoDB具有強大的功能集,使其成爲RDBMS解決方案的現實和強大替代品。

他們當中:

  1. 文獻數據庫:大部分數據是嵌入在文檔中,所以爲了得到一個人的數據,你沒有加入幾個表。因此,對於許多用例來說性能更好。
  2. 強查詢語言:儘管不是RDBMS,但MongoDB具有非常強大的查詢語言,可以讓您從文檔或文檔中獲得非常具體或非常一般的內容。使用javascript查詢數據庫,因此您可以在查詢之外執行更多其他操作(例如,功能,計算)。
  3. 分片&複製:分片允許您的應用程序水平而不是垂直縮放。換句話說,更小的服務器而不是一個巨大的服務器。複製功能可爲您提供幾種配置(例如主/從)的故障切換安全性。
  4. 強大的索引:我最初對MongoDB感興趣,因爲它允許地理空間開箱即用,但它也有許多其他索引配置。
  5. 跨平臺: MongoDB有很多drivers

至於文件,沒有洪水,但那是因爲這個項目只在2009年開始;很快會有更多。但是,您的項目已經足夠了。除此之外,您可以查看凱爾銀行的MongoDB in Action,很好的資源。

最後,我在MongoDB之前只有RDMBS的經驗,不知道javascript還是json,仍然覺得它非常簡單和優雅。

5

如果它足夠適合Foursquare,那麼最適合你。

2

嗯,差不多可靠性另一點:

  • ,如果你滿足任何關鍵問題的社會極快的反應。
  • 您需要擔心您對「可靠性」的期望:您是否需要保證安全存儲您的數據,永不損壞?
    • 在這種情況下,你將有比較你的意思是有一個高度可用的服務購買可靠的硬件和部署MongoDB的副本集
  • 的成本是多少?
  • MongoDB有一些青年問題,我不能說相反。但這絕對不是浪費時間,也許是一個長期的解決方案。
0

MongoDB將是一個不錯的選擇。我們對我們的業務用例進行了評估並開始使用MongoDB。 MongoDB給我們提供了比Oracle更好的性能,並且水平擴展也很容易。

3

我來自RDBMS背景(12年),並且在過去的6個月中花費了NoSQL選項。對於你的情況,MongoDB聽起來像是一個不錯的選擇。什麼我從那些誰在生產中使用MongoDB中工作了一段時間,聽到的是,你應該遵循這些最佳做法:

  1. 保持關鍵尺寸小
  2. 評估(也可能添加)索引,以加快查詢
  3. 注重架構(我知道似乎很奇怪的「無模式」的數據庫,但我聽說這幾次
  4. 使用副本集

這裏的最好的一個video - 來自MongoDB LA用戶組的實踐演講,我覺得有用

2

這取決於你需要什麼樣的可靠性。 Mongo閱讀非常可靠 - 它具有強大的可用性和分片功能。

OTOH,Mongo寫道不可靠。雖然大多數都會經過,但不能保證更新成功與否,並且您必須手動查詢數據庫以檢查它是否成功。

因此,當你有更多的讀取比你絕對需要成功寫入時,最好使用Mongo。