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