2013-12-09 60 views
-1

美好的一天。我正在做「實施分佈式NoSQL數據庫」的碩士學位。在研究了比較RDBMS與NoSQL數據庫的優缺點的材料之後,我面臨着選擇合適的問題來解決的問題。我的任務是展示由Oracle和MongoDB支持的相同應用程序的典型開發,並顯示在應用程序發展過程中,Mongo開始超越Oracle。我專注於許多寫入和水平縮放。由於我選擇了一個典型的Twitter應用程序,包括具有複雜演化領域的應用程序,Java和Spring Data作爲我的工具。MongoDB利潤用例


我請求有經驗的人爲受益評論家和替代任務展示蒙戈的青睞。據我所知,這在很大程度上取決於架構,索引,等等,我還是問 蒙戈在我的情況下可以擊敗甲骨文:

  1. 許多寫入
  2. 水平縮放
  3. 讀操作
  4. 模式不斷髮展的
  5. 拆分\複製
+1

這是作爲堆棧溢出書面過於寬泛。在某些情況下,您可能會構建一個偏好特定技術的應用程序。許多商業星展在其許可證中都有條款,特別禁止發佈性能基準,您可能會提出這些基準。您也可能想要閱讀大型公司等大型公司試用「NoSql」數據庫的各種實驗,以發現炒作與其競爭對手的性能數據不匹配。 – WiredPrairie

+0

@WiredPraerie,感謝您的評論。如果我理解你是對的,那麼你的意思是理論上很難預測,但有些案例專門針對對手的弱點而不是清醒的緣故。 Twitter域/邏輯場景呢? – OneMoreVladimir

+1

很多大型社交網絡公司都在使用MySql作爲主存儲,然後根據需要使用其他技術。 – WiredPrairie

回答

2

我的任務是顯示由Oracle和MongoDB支持同一應用程序的典型發展,並顯示出該應用程序的進化過程中蒙戈開始超越甲骨文。

對不起,我非常坦率,但是什麼樣的學術工作從最終答案開始,你想對這個問題進行逆向工程?!這是沒有價值的,因爲它故意誤導。

離開那一邊,這裏有一些提示:

  • 使用的東西,它需要的JOIN在關係數據庫中,但可以模擬成一個單一的文件。博客帖子會出現在我的腦海裏。常用技巧包括將作者姓名放入文檔中。沒有JOIN需要閱讀,如果筆者改變了他的名字(這將在大多數系統中很少發生),你只需要像他的電子郵件地址更新處處名稱的獨特屬性:

    { 
        title: "...", 
        content: "...", 
        date: "...", 
        author: { name: "...", email: "..." }, 
        comments: [ 
        { name: "...", email: "...", text: "...", date: "..." }, 
        ... 
        ] 
    } 
    
  • 讓您的數據小足夠,所以他們適合內存。 MongoDB可以很好地利用它,並且只會偶爾將信息刷新到磁盤(取決於您的配置),RDBMS將始終以磁盤形式出於持久性原因(符合ACID)。

  • 使用「不安全」連接設置。不要等待數據庫實際處理請求,而是立即返回(像UDP一樣隨意丟失)。這在交易系統中是不可能的。如果您在雲中進行測試,則可以放大此數據,例如,EBS支持的EC2實例具有非常高的磁盤延遲。
  • 使用像Hibernate這樣很重的ORM。儘管我不確定性能增益有多大,但可能要避免使用Morphia(如果你使用Java),並使用普通Java驅動程序的ODM(對象文檔映射器),但我確信有一些如果做得好。
  • 在MongoDB中使用複製,並允許從輔助節點讀取(從而犧牲一致性,但獲得性能)。
  • 使用分片。
  • 除了系統的性能,你可能想看看開發人員的生產力。 MongoDB非常適合開始使用,並且我感覺開始使用起來要快得多。不知道從長遠來看,這是否會變成相反 - 嚴格的模式在長期的IMHO中確實佔有一席之地。

我寧願比較MySQL和MongoDB。這兩個都是開源軟件,非常相似。例如,索引是完全一樣的 - 只有b樹(如果你堅持標準的磁盤存儲引擎)。

最後說明一點:我希望你能同意我的意見,這是很容易贏得如此disbalanced比較,這使得它非常沒有意義的......

+1

你已經毀了我的夢想,是的,你是絕對正確的,成爲一個毫無意義的研究。感謝您的回覆。 – OneMoreVladimir

1

請點擊此鏈接,我想你會發現在牛逼需要的信息他的鏈接

NoSql vs Relational database

+1

感謝您的回覆,我發現這個鏈接非常有用。 Colud你仍然提出一個具體的案例? – OneMoreVladimir