您的位置:首页 > 数据库 > Mongodb

MongoDB简介

2014-06-15 19:06 141 查看
http://zhufeng9282.blog.163.com/blog/static/2915910020120288572361/

NoSQL背景

数据高并发性的实时读取与写入

海量数据存储

海量数据的智能计算与挖掘

高性能,可扩展,可用性

正确认识NoSQL
NoSQL是用来区别关系型数据库的数据存储
NoSQL有灵活的Schema。
避免使用JOIN(连接)查询。
支持数据的水平扩展。
最终一致性
简单的访问接口(API)

主流NoSQL分类
面向文档的存储 ---MongoDB
Key-value的存储
列存储/列族(Column Store/Column Families)

MongoDB优势
不需要额外的缓存
丰富的查询
丰富的类型
内置replication和sharding,可扩展。
商业支持 10gen

MongoDB特性
面向文档的存储(BSON)
支持动态查询
索引
调优工具
区别于关系型数据库的更新(in-place)
Replication
Auto-sharding
MapReduce

MongoDB数据模型

database => collection => document



MongoDB术语
RDBMS Mongo
Table, View Collection
Row(s) JSON Document
Index Index
Join Embedded Document
Partition Shard
Partition Key Shard Key

MongoDB 数据类型
?JSON: null,布尔型(boolean),数字类型(numeric),字符串(string),数组(array),对象(object)
?BSON=JSON+
?二进制数据(binary data)
?数组(array) {“comments”:[“哈哈”,”顶一下”]}
?内嵌文档(embedded document) {“stuff”:{“name”:nicholas,age:27}}

?Object Id 当插入document的时候,MongoDB会自动设置一个_id做为key。
?字符串(String) string类型是UTF-8编码的。
?日期类型(date) MongoDB是以毫秒的形式来存储日期类型的。{“createDate”:new Date()}

安装

mongodb --dbpath=d:\mongo\db --logpath=d:\mongo\logs\mongo.log --install

增加: db.thing.insert({name:'zhufeng',age:22})

查询: *: db.thing.find()

where: db.thing.find({name:'zhufeng'})

$: db.thing.find({age:{$gt:13}}) $gt $lt $gte $lte

更新: db.thing.update({name:'zhufeng'},{'$set':{name:'kevin'}})

删除: db.thing.remove({age:{'$gt':24}})

db.thing.remove() --删除全部

关于 ObjectId

4f2673ac d3f200
31e1 396830

4f2673b8 d3f200
31e1 396831

4f2673f9 d3f200
31e1 396832

timestamp(8) machine id(6) process id(4)
counter(6)

索引

db.thing.ensureIndex({x:1,y:-1})

MapReduce-执行过程
?Map: key ->value 输出 的value为最终执行结果的聚合值
?Reduce:function reduce(key_obj, [value_obj, value_obj, ...]),处理[value1,value2,value3],可以循环处理,返回的是map的第二个参数。递归调用
?function finalize(key, value) -> final_value
–执行一次,一般用来处理平均数
?注意。Map的输出value和Reduce的返回value一致

GridFS



不要使用GridFS来保存小的二进制数据

GridFS需要两次查询:一次取出文件的元数据,另一次取出内容

允许相同的文件名存在

MD5校验文件完整性

MongoDB管理
db.addUser (username, password) db.removeUser(username)
db.addUser (username, password) db.removeUser(username)
db.currentOp()
db.killOp()
db.foo.stats()
db.foo.dataSize()
db.foo.storageSize()
db.foo.totalIndexSize()
db.foo.totalSize()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: