ITPub博客

首页 > Linux操作系统 > Linux操作系统 > NoSQL第一篇——初次见面MongoDB

NoSQL第一篇——初次见面MongoDB

原创 Linux操作系统 作者:season0891 时间:2011-02-10 14:38:34 0 删除 编辑

还是在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,发挥他们的最大功效


一点心得,希望大家多多指教


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,发挥他们的 最大功效


一点心得,希望大家多多指教


come from:http://mckobe23.itpub.net/category/29123/66613



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/90618/viewspace-686961/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    790
  • 访问量
    1968346