我正在建立一個社交網絡(連接和他們的連接,消息和位置),我有點困惑決定是否去與關係數據庫(MySQL)或沒有數據庫系統(MongoDB)在設計我們的後端API時。有人對什麼時候使用有任何意見嗎? PS:我正在爲開發人員構建開發人員API以使用oAuth來訪問我們的系統。因此可伸縮性和性能也是關鍵因素。 Rails 3 +設計(最有可能)。我應該去與MySql或mongodb
回答
這在很大程度上取決於你是舒適與技術,是什麼你真的想離開這等等等。
回到你的問題,並非所有的數據都是關係型的。所以對於這些情況,NoSQL可能會有所幫助。據說,NoSQL代表「不只是SQL」。它並不打算摧毀MySQL或取而代之。
SQL或MySQL有幾個非常大的優勢:
- MySQL是強大的數學基礎。
- 聲明性語法。
- 結構化查詢語言(SQL)中的着名語言。
- 高度可靠和非常可靠的技術。 MySQL已經遠遠超過了最古老的noSQL。這是一項成熟的技術。 Google Adsense運行在MySQL上,Facebook持久存儲是MySQL。這些例子表明其可靠性。
- 由於成熟的技術,人們已經優化了它的狗屎。
- 巨大的網絡和開源社區都爲支持和提供的功能,而不是NOSQL技術(看看發生了什麼卡桑德拉)
在我看來,所有上述問題對我很重要,當我選擇了一塊技術。嘿好,如果它要與現實一些後果掀起那麼做率性你一個星期天晚上的項目,但如果它是稍微更嚴重的話,請考慮這些問題。
SQL沒有(甚至在NOSQL)消失。把這想成是一個論辯或者論證是錯誤的。 NoSQL的是,人們需要考慮當它適合,這是所有的替代品。
文件可以存儲在非關係數據庫,像CouchDB的,甚至在MySQL(它的邊界上的虐待,但仍)。原則上一個關係數據庫可以做一個很好的解決方案NOSQL
看看這個hilarious video。這使得關於這一主題不同的角度:)
如果您的項目需要某些對象之間的實際關係,那麼MySql將會很好。如果您要存儲通常只包含固有數據的內容,例如向其他用戶發送消息的用戶,那麼文檔樣式數據庫(例如MongoDB)更有意義。
你可以在mongo中建立關係,但它們在關係數據庫中有更多的意義。但是,如果你的大部分數據都是用戶的固有內容,那麼mongo更有意義。
在你的情況的文檔類型的方案更有意義,其中每個用戶具有連接用戶和他們自己的個人atributes,ECT清單...
我選擇的MongoDB我的「社交」應用由於架構和可擴展性/性能的靈活性。 MongoDB允許我調整模式,而不必進行劇烈的代碼更改,並使讀取/查找數據變得非常簡單。
我也選擇了MongoDB作爲學習體驗。我想知道這些「noSQL」數據庫有什麼大驚小怪,現在我知道爲什麼了。在我看來,MongoDB非常棒,而且絕對值得關注需要可伸縮性和性能的社交網絡。 Node.js也是API的絕佳選擇;)
既不。
使用網絡/圖形數據庫,您不會後悔。我目前最喜歡的是Neo4j。
注:沒有關係的Neo4j
我想的Neo4j的最新版本有一個SQL接口,以防萬一你需要SQL兼容性。否則,請使用他們的本地庫進行研究。它非常快。
如果您需要將圖形數據可視化,這對於向您的上司顯示效果非常好,請使用yEd軟件包。要Neo4j的導出到graphml格式,使用:
你可以正面配有一塊關係數據庫或MongoDB中結束的Neo4j你的人際關係和後端它。我也看到了這些混合架構。
- 1. 我應該使用MySQL還是MongoDB?
- 2. ajax框架我應該去extjs或raxan?
- 3. 我應該選擇哪個數據庫? MySQL或mongoDB?
- 4. 我應該去哪裏?
- 5. 我應該去ASP.Net MVC?
- 6. 我應該使用MongoDB嗎?
- 7. mySQL - 我應該denormalise?
- 8. MongoDB或MySQL
- 9. 這是否會影響速度,或者我應該去與顯示圖像
- 10. 我應該如何去使用mysql中的主鍵字符串
- 11. 哪個服務器我應該去JBoss或GlassFish
- 12. 什麼時候我應該去PL/SQL的程序或功能?
- 13. 可以用html5拖放嗎?或者我應該去DOM後?
- 14. mysql或平均或應該使用PHP?
- 15. MongoDB與MySQL
- 16. CoreAnimation&Cocos2D - 我應該去哪一個?
- 17. 我應該如何去學習android?
- 18. 我的方法應該去哪裏
- 19. 我應該去哪個方向計算
- 20. 我的AS3 hitTest應該去哪裏?
- 21. 我應該用木偶去多遠?
- 22. cassandra或mongodb對我的需求Mysql
- 23. 我應該去基於文檔還是圖形數據庫? (MongoDB vs Neo4j)
- 24. MongoDB:我應該使用哪個索引?
- 25. 我應該如何與國家和城市工作在MongoDB中
- 26. 我應該使用&&或||
- 27. 我應該在onOpen或onConfigure
- 28. 我應該如何操作Laravel數據庫遷移數據?或者我應該在別的地方去做嗎?
- 29. 我的線不會去他們應該去的地方
- 30. 是否還好與MySQL執行許多查詢或我應該優化?
@SergioTulentsev,大聲笑我知道你的意思。如果使用「不正確」,即使是最優化的技術也會崩潰。因此,挑戰是弄清楚「正確」是什麼。我已經看到人們使用mySQL從關鍵值存儲到高度複雜的銀行交易系統。找出正確的組合非常重要。 – 2012-07-10 02:46:05