MongoDB介绍──开发者专区(3)
来源:互联网 发布:python os.system 参数 编辑:程序博客网 时间:2024/05/17 06:38
2.3 术语介绍
2.3.1 数据库、集合、文档
每个MongoDB服务器可以有多个数据库,每个数据库都有可选的安全认证。数据库包括一个或多个集合,集合以命名空间的形式组织在一起,用“.”隔开(类似于JAVA/Python里面的包),比如集合blog.posts和blog.authors都处于"blog"下,不会与bbs.authors有名称上的冲突。集合里的数据由多个BSON格式的文档对象组成,document的命名有一些限定,如字段名不能以"$"开头,不能有".",名称"_id"被保留为主键。
如果插入的文档没有提供“_id”字段,数据库会为文档自动生成一个ObjectId对象作为“_id”的值插入到集合中。字段“_id”的值可以是任意类型,只要能够保证惟一性。BSON ObjectID是一个12字节的值,包括4字节的时间戳,3字节的机器号,2字节的进程id以及3字节的自增计数。建议用户还是使用有意义的“_id”值。
2.3.2 Capped Collections
介绍:capped collections是性能出色的有着固定大小的集合,以LRU规则和插入顺序进行age-out处理,自动维护集合中对象的插入顺序,在创建时要预先指定大小。如果空间用完,新添加的对象将会取代集合中最旧的对象。进行find()操作时如果不指定顺序,结果以插入的顺序返回。
特点:可以插入及更新,但更新不能超出collection的大小,否则更新失败。不允许删除,但是可以调用drop() 删除集合中的所有行,但是drop后需要显式地重建集合。在32位机上,一个capped collection的最大值为1e9字节(约为482.5M),64位上只受系统限制。
用处:
1. logging。Mongo中日志机制的首选,Mongo没有使用日志文件,而是把日志事件存储在数据库中。在一个没有索引的capped collection中插入对象的速度与在文件系统中记录日志的速度相当。
2. cache。缓存一些对象在数据库中,比如计算出来的统计信息。这样的需要在collection上建立一个索引,因为使用缓存往往是读比写多。
3. auto archiving。可以利用capped collection的roll out特性,省去了写cron脚本进行人工归档的工作。
推荐:
1. 为了发挥capped collection的最大性能,如果写比读多,最好不要在上面建索引,否则插入速度从"log speed"降为"database speed"。
2. 使用"nature ordering"可以有效地检索最近插入的元素,因为capped collection能够保证自然排序就是插入时的顺序,类似于log文件上的tail操作。
注意:
1. 可以在创建capped collection时指定collection中能够存放的最大文档数。但这时也要指定size,因为总是先检查size后检查maxRowNumber。可以使用validate()查看一个collection已经使用了多少空间,从而决定size设为多大。如:
db.createCollection("mycoll", {capped:true, size:100000, max:100});
db.mycoll.validate();
max=1时会往collection中存放尽量多的documents。
2. 上述的createCollection函数也可以用来创建一般的collection,还有一个参数"autoIndexID",值可以为"true"和"false"来决定是否需要在"_id"字段上自动创建索引,如:
db.createCollection("mycoll", {size:10000000, autoIndexId:false})。
默认情况下对一般的collection是创建索引的,但不会对capped collection创建。
- MongoDB介绍──开发者专区(3)
- MongoDB介绍──开发者专区(1)
- MongoDB介绍──开发者专区(2)
- MongoDB介绍──开发者专区(4)
- MongoDB介绍──开发者专区(5)
- MongoDB介绍──管理者专区(3)
- MongoDB介绍──管理者专区(1)
- MongoDB介绍──管理者专区(2)
- MongoDB介绍──管理者专区(4)
- MongoDB介绍──前言
- MongoDB介绍──综述
- MongoDB实战(MongoDB开发者现身说法)
- mongodb介绍
- MongoDB介绍
- MongoDB -- 介绍
- mongodb介绍
- mongodb介绍
- MongoDB介绍
- Eclipse快捷键大全(转载)
- linux重启网络的命令
- The 7th Zhejiang Provincial Collegiate Programming Contest - G(Wu Xing)
- 编写高性能Java的注意的几点
- CPP POD
- MongoDB介绍──开发者专区(3)
- 我们的Scrum
- 详解java解析XML的方法及其特点
- MongoDB介绍──开发者专区(4)
- Matlab Builder for java problems
- 连接数据库文件
- pocketpc中嵌入xml文件
- 学习计划
- Cannot assign a TFont to a TFont