PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 数据库 >> MySQL >> 

MongoDB和Mysql对比

MongoDB和Mysql对比

来源:PHP程序员站  作者:PHP程序员站  发布时间:2011-02-16
还是在2008年的时候,F5同学就和我提起过key-value的问题。这都2011年了,当时我没有太明白,只朦胧的觉得好像在说缓存 最近有开发又和我提起了,我必须得关注下,否则我就out了,呵呵呵 马上搜了下,目前吵的最热的是由10gen开发维护的MongDB数据库,随机down了体会下

还是在2008年的时候,“F5”同学就和我提起过key-value的问题。这都2011年了,当时我没有太明白,只朦胧的觉得好像在说缓存

 
最近有开发又和我提起了,我必须得关注下,否则我就out了,呵呵呵
 
马上搜了下,目前吵的最热的是由10gen开发维护的MongDB数据库,随机down了体会下
 
答案是轻巧,速度快
 
 
下面就说一下我们初次见面的感受:
 
维护了一段时间的MySQL了,难免拿他们俩对比下,先上个直观的效果作为参考
 
MySQL——
mysql> select * from t;
 
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   30 |
|    2 | 李四   |   25 |
|    3 | 王五   |   12 |
|    4 | 赵六   |   57 |
+------+--------+------+
4 rows in set (0.00 sec)
 
MongDB——
 
{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "name" : "mongodb" }


{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "x" : 3 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc4"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc5"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4cc10b58dbf9242801dfacae"), "author" : "joe", "created" : "Sat Mar 28 2009 00:00:00 GMT+0800 (CST)", "title" : "Yet another blog post", "text" : "Here is the text...", "tags" : [ "example", "joe" ], "comments" : [
{
"author" : "jim",
"comment" : "I disagree"
},
{
"author" : "nancy",
"comment" : "Good post"
}
] }
 
 
 
下面在几个基础方面的东西做下对比:
 
1.存储的区别

 
MySQL——表数据以记录为单位,每条记录以N个字段列属性组成,每条记录有相同的字段属性
 
MongDB——文档数据以数组为单位,每条记录以N维数组组成,每个数组键值数不一定相同
 
 
2.命令工具的区别
 
MySQL——mysql-xxx/bin/下的mysql命令和perl工具有39个,在这就不列举了
 
MongDB——mongodb-linux-xxx/bin/下的工具只有11个,下面这些二进制命令从命名就可初步了解他们的作用,具体用法请参考官网指南http://www.mongodb.org
 
bsondump
 
mongo
mongod
mongodump
mongoexport
mongofiles
mongoimport
mongorestore
mongos
mongosniff
mongostat
 
3.命令行的区别
 
MySQL——在"mysql>"提示符下insert,update,delete,select,create,drop,alter,show...
 
MongDB——在">"提示符下db.dbname.save(),db.dbname.insert(),db.dbname.update,db.dbname.remove(),db.dbname.find(),show...
 
我们可以看出,MongDB都是使用函数调用的方式操作文档的;熟悉Memcached的同学看到find()方法的使用会觉得很熟悉,where 条件语句是通过在find()函数中指定的,order by,limit是通过find()函数的sort()和limit()函数处理的
 
 
后面管理的章节我还没有看呢,有兴趣的同学请重定向到官网^_^
 
另外MongoDB也支持主从Master-Slave架构和有限的双主Master-Master架构,不过目前只支持2个节点间的相互监听,等我尝试了再写...
 
 
 
总结下,网上看了些资料大多是拿MongDB和MySQL做比较的,前面我也是。其实这两个数据库并非一个必须替代掉另一个,在接触了MongoDB后感觉它不一定适应所有业务,应该是某种特殊业务更能体现出他的价值
 
所以,虽然国外一些网站已经陆续迁移到MongoDB,我们却不一定着急动手,技术还不是很成熟,会有哪些不稳定因素还有待观察考证。未来一段时间 内估计会是这两者合作的天下,彻底抛弃MySQL或者Oracle是不理智的,我们现在要做的是逐渐过渡到MySQL+MongDB,发挥他们的最大功效
 
 
一点心得,希望大家多多指教
 
 
mckobe23 发表于:2010.10.25 14:37 ::分类: (NoSQL) ::阅读:(85次) ::评论 (0)::引用 (0)
===========================================================
NoSQL学习——初次见面MongDB
===========================================================
还是在2008年的时候,“F5”同学就和我提起过key-value的问题。当时我没有太明白,只朦胧的觉得好像在说缓存
 
 
 
最近有开发又和我提起了,我必须得关注下,否则我就out了,呵呵呵
 
马上搜了下,目前吵的最热的是由10gen开发维护的MongDB数据库,随机down了体会下
 
答案是轻巧,速度快
 
 
下面就说一下我们初次见面的感受:
 
维护了一段时间的MySQL了,难免拿他们俩对比下,先上个直观的效果作为参考
 
MySQL——
mysql> select * from t;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   30 |
|    2 | 李四   |   25 |


|    3 | 王五   |   12 |
|    4 | 赵六   |   57 |
+------+--------+------+
4 rows in set (0.00 sec)
 
MongDB——
 
{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "name" : "mongodb" }
{ "_id" : ObjectId("4cbfdaabab5abedbd22f0bc3"), "x" : 3 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc4"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4cbfdce3ab5abedbd22f0bc5"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4cc10b58dbf9242801dfacae"), "author" : "joe", "created" : "Sat Mar 28 2009 00:00:00 GMT+0800 (CST)", "title" : "Yet another blog post", "text" : "Here is the text...", "tags" : [ "example", "joe" ], "comments" : [
{
"author" : "jim",
"comment" : "I disagree"
},
{
"author" : "nancy",
"comment" : "Good post"
}
] }
 
 
 
下面在几个基础方面的东西做下对比:
 
1.存储的区别
 
MySQL——表数据以记录为单位,每条记录以N个字段列属性组成,每条记录有相同的字段属性
 
MongDB——文档数据以数组为单位,每条记录以N维数组组成,每个数组键值数不一定相同
 
 
2.命令工具的区别
 
MySQL——mysql-xxx/bin/下的mysql命令和perl工具有39个,在这就不列举了
 
MongDB——mongodb-linux-xxx/bin/下的工具只有11个,下面这些二进制命令从命名就可初步了解他们的作用,具体用法请参考官网指南http://www.mongodb.org
 
bsondump
mongo
mongod
mongodump
mongoexport
mongofiles
mongoimport
mongorestore
mongos
mongosniff
mongostat
 
3.命令行的区别
 
MySQL——在"mysql>"提示符下insert,update,delete,select,create,drop,alter,show...
 
MongDB——在">"提示符下db.dbname.save(),db.dbname.insert(),db.dbname.update,db.dbname.remove(),db.dbname.find(),show...
 
我们可以看出,MongDB都是使用函数调用的方式操作文档的;熟悉Memcached的同学看到find()方法的使用会觉得很熟悉,where 条件语句是通过在find()函数中指定的,order by,limit是通过find()函数的sort()和limit()函数处理的
 
 
后面管理的章节我还没有看呢,有兴趣的同学请重定向到官网^_^
 
另外MongoDB也支持主从Master-Slave架构和有限的双主Master-Master架构,不过目前只支持2个节点间的相互监听,等我尝试了再写...
 
 
 
总结下,网上看了些资料大多是拿MongDB和MySQL做比较的,前面我也是。其实这两个数据库并非一个必须替代掉另一个,在接触了MongoDB后感觉它不一定适应所有业务,应该是某种特殊业务更能体现出他的价值
 
所以,虽然国外一些网站已经陆续迁移到MongoDB,我们却不一定着急动手,技术还不是很成熟,会有哪些不稳定因素还有待观察考证。未来 一段时间内估计会是这两者合作的天下,彻底抛弃MySQL或者Oracle是不理智的,我们现在要做的是逐渐过渡到MySQL+MongDB,发挥他们的 最大功效
 


延伸阅读:
什么是NoSQL
NoSQL会取代SQL数据库吗?
2010年10大热门的开源NoSQL服务器软件
Tags: MongoDB   mysql  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号