2011-06-11 64 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