2011-06-11 50 views
1

我試圖研究MongoDB,今天我使用MySQL 5.5。MongoDB vs MySQL 5.5?

我有一個SaaS服務,需要一個數據庫可以處理丟失的數據,行和更多,它的需要是快速的。

我可以讀的是MongoDB是DB在服務器memery如果它的真實,如果服務器下降會發生什麼?

MySQL在硬盤上的所有存儲,但數據庫可以處理更多的服務器允許,否則你需要somthink像集羣數據庫和自動加載平衡。

我讀過MongoDB,它很容易安裝在更多的計算機上運行,​​但這是真的嗎?

我希望在somthink幫助這裏,馬比其不是MySQL或MongoDB我需要,馬比其3數據庫設置?

+1

什麼不是快大約有海量的MySQL? http://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right-one-on-a/4421601#4421601 – 2011-06-11 18:01:19

回答

2

MongoBD是一個非關係數據庫。沒有連接,沒有行,沒有列。它是基於文檔的。 MySQL是一個關係數據庫。

例如:我們有一些服務器。每個服務器都有一個名稱,IP,管理員和操作系統。但是一些服務器有額外的數據'主'。 如果is_slave == true:打印主服務器的名稱。

在MongoDB中(不包括指數,它不是與此有關):

{ 
    "_id": ObjectId("4da5609a7650bf3f57000000"), 
    "name": "Testarossa", 
    "ip": "0.0.0.0", 
    "admins": [ 
    { "username": "yitsushi", "has_sudo": true }, 
    { "username": "lokko", "has_sudo": false } 
    ], 
    "os_name": "Gentoo", 
    "is_slave": false 
}, 
{ 
    "_id": ObjectId("4decc3d1f2d26f6716000001"), 
    "name": "Amanuat", 
    "ip": "0.0.0.1", 
    "admins": [ 
    { "username": "yitsushi", "has_sudo": false }, 
    { "username": "parandokht", "has_sudo": true } 
    ], 
    "os_name": "Ubuntu 10.10", 
    "is_slave": true, 
    "master": { 
    "name": "Testarossa", 
    "server": { 
     "$ref": "servers", 
     "$id": ObjectId("4da5609a7650bf3f57000000"); 
    } 
    } 
} 

你可以看到主字段不是必需的,所以你並不需要在每個文件中定義它,而不是null/0值。你可以定義一個Array(管理員)而不是相關的表。在master領域:我們定義一個具有兩個屬性的對象:name(用於服務器的打印名稱)和一個引用(我們可以創建一個與doc['master']['server']['$id']的鏈接,或者我們可以使用其他查詢獲取主服務器的完整文檔)。

在MySQL中,我們需要一個服務器,一個管理員和一個server_admins表(至少)以及一些不必要的字段,其值爲null

MongoDB和MySQL不是同一類。 MongoBD是一個非關係數據庫,MySQL是一個關係數據庫。完全不同的邏輯和態度需要MongoDB或MySQL。

一個完美的對比格:MongoDB, CouchDB, MySQL Compare Grid在www.mongodb.org

0

MongoDB嘗試在內存中儘可能多地保存。但是,所有數據也都寫入硬盤。

MongoDB專注於速度,所以當服務器崩潰的風險是高一點,你可能會失去最後幾個條目。

因此,當數據安全是您的第一個目標時採取其他措施。當你需要速度和舒適的數據庫MongoDB是一個不錯的選擇。

+0

從版本1.7.5開始,MongoDB支持日記功能以避免突然數據丟失:http://www.mongodb.org/display/DOCS/Journaling – 2011-11-17 05:12:49