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
什麼不是快大約有海量的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