`
welcome66
  • 浏览: 402142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongodb设定集合为固定大小方法Capped Collection

阅读更多

        在一些特殊情况下,需要将mongodb的集合设定为一个固定大小,这样数据文件就不会无限制的增大,有利于维护。

        本人碰到的问题就是ceilometer使用的mongodb,由于不断的采集数据,导致数据文件不断增大,有时候就会将磁盘占满,导致出现其他问题。采用这种设定一个固定大小的方法,有效解决了这个问题。

 1.Capped Collection介绍

        Capped Collection 是一种特殊的集合,它大小固定,当集合的大小达到指定大小时,新数据覆盖老数据。Capped collections可以按照文档的插入顺序保存到集合中,而且这些文档在磁盘上存放位置也是按照插入顺序来保存的,所以当我们更新Capped collections中文档的时候,更新后的文档不可以超过之前文档的大小,这样话就可以确保所有文档在磁盘上的位置一直保持不变。

由于Capped collection是按照文档的插入顺序而不是使用索引确定插入位置,这样的话可以提高增添数据的效率。MongoDB的操作日志文件oplog.rs就是利用Capped Collection来实现的。
除此之外,Capped Collection还有以下的一些特点,首先是不允许删除,但是可以调用drop()删除集合中的所有行,不许删除的原因也是为了保持每个文档在磁盘上的位置不变。在32位机器上一个capped collection的最大值约482.5M,64位上没有限制系统文件大小限制。不可以对 Capped Collection 进行分片,在 2.2 版本以后,创建的Capped Collection 默认在 _id 字段上创建索引,而在 2.2 版本或以前没有。 
Capped Collection主要用于存储日志信息和缓存一些少用的文档。

2.具体使用

2.1创建Capped Collection

 

db.createCollection("meter",{capped:true,size:1073741824,max:50})

    说明:通过 db.createCollection 命令创建 Capped Collection 集合,创建时必须指定

             集合最大值,用于预先分配空间。上面的例子是每个文件最大为1G,保留最多50个对象。一般可以不用限定对象的数量。

2.2查看集合是否是Capped collection   

> db.meter.isCapped()
> db.meter.stats()

下面是本人的测试结果:

> db.meter.drop()
> db.createCollection("meter",{capped:true,size:1073741824,max:50})
> db.meter.isCapped()
true
> db.meter.stats()
{
        "ns" : "ceilometer.meter",
        "count" : 5,
        "size" : 7452,
        "avgObjSize" : 1490.4,
        "storageSize" : 1073741824,
        "numExtents" : 1,
        "nindexes" : 1,
        "lastExtentSize" : 1073741824,
        "paddingFactor" : 1,
        "systemFlags" : 1,
        "userFlags" : 0,
        "totalIndexSize" : 8176,
        "indexSizes" : {
                "_id_" : 8176
        },
        "capped" : true,
        "max" : 50,
        "ok" : 1
}

 

分享到:
评论

相关推荐

    MongoDB固定集合(capped collection)的知识小结

    MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection)。 固定集合可以声明collection的容量大小,其行为类似于循环队列。数据插入时,新文档会被插入到队列的末尾,如果队列已经...

    MongoDB固定集合与管理工具.pdf

    在MongoDB中,固定集合(capped collection)是一种特殊类型的集合,具有固定大小和自动溢出处理机制。当固定集合达到其容量时,新插入的文档会替换最旧的文档,确保集合始终保持在设定的大小内。 1. 创建固定集合...

    MongoDB固定集合.pdf

    MongoDB的固定集合(Capped Collections)是一种特殊类型的集合,设计用于高效地存储有固定大小限制的数据,类似于一个循环缓冲区。固定集合的主要特点是它的大小是固定的,一旦达到上限,新的插入操作会覆盖最早的...

    基于MongoDB的日志系统Mongodb-Log.zip

    MongoDB 的 Capped Collection是一个天生的日志系统,MongoDB自己的oplog就是用它来存储的,Capped Collection的特点是可以指定Collection的大小,当记录总大小超过设定大小后,老的数据会被自动抹掉用于存储新的...

    MongoDB文档与集合.pdf

    MongoDB 还提供了一种特殊的集合类型——“固定大小集合”(Capped Collections),用于实现高性能的队列功能。Capped Collections 有固定的存储容量,一旦达到上限,新插入的数据会替换最旧的数据,保持集合的大小...

    MongoDB Java获取集合.pdf

    在这个例子中,我们看到一个名为 `MongoDBJDBC` 的 Java 类,它演示了如何连接到 MongoDB 服务器并获取集合。以下是关键步骤的详细解释: 1. **连接到 MongoDB 服务**: 使用 `MongoClient` 类的构造函数,传入 ...

    05MongoDB学习操作集合(Collection)

    05★MongoDB学习★操作集合(Collection)

    MongoDB Java创建集合.pdf

    这段代码会创建一个上限为1MB且最多存储10000个文档的固定大小(capped)集合。 6. 关闭连接 当完成数据库操作后,别忘了关闭连接: ```java mongoClient.close(); ``` 7. 错误处理 在示例代码中,我们使用了异常...

    mongodb基本命令和实例

    集合可以通过 `db.createCollection(name, options)` 创建,其中`options`可以包含`size`(预分配空间)、`capped`(是否为固定大小的集合)和`max`(固定集合的最大文档数)等。 4. **删除集合**: `db.mycoll....

    详解MongoDB中创建集合与删除集合的操作方法

    例如,你可以设置`capped`为`true`来创建一个封顶集合,这种集合在达到指定大小后会自动覆盖最旧的条目。还可以指定`size`参数为封顶集合的最大字节数,以及`max`参数来限制封顶集合中最多可以存储的文档数量。例如...

    MongoDB 资料集合

    2. 集合(Collection):集合是MongoDB中的逻辑数据存储单元,类似于关系数据库的表,但不需要预先定义列或数据类型。 3. 数据库(Database):数据库是MongoDB中存储数据的容器,可以看作是多个集合的集合。 4. 分...

    C# to MongoDB 增删改通用demo

    5. **集合操作**:集合是 MongoDB 存储数据的基本单元,类似于 SQL 中的表。可以使用 Collection<T> 来操作集合: ```csharp var collection = database.GetCollection("myCollection"); ``` 其中 `MyDocument` 是...

    mongodb 使用手册

    这部分内容正在整理中,通常会涵盖Java驱动的安装、连接MongoDB、执行查询和操作文档的方法。 ### 第 5 章 其他 这部分可能包括监控、备份恢复、安全设置、性能优化等内容。MongoDB提供了丰富的管理工具,如`...

    MongoDB中集合、文档、数据库相关概念.pptx

    在MongoDB中,数据组织的核心概念包括数据库(database)、集合(collection)、文档(document)和索引(index)。让我们详细了解一下这些概念。 1. 数据库(Database) 在MongoDB中,数据库是数据存储的基本单元...

    MongoDB基础入门之创建、删除集合操作

    - `size`: 为固定集合指定最大大小(以字节为单位)。如果 `capped` 设置为 `true`,则必须提供此参数。 - `max`: 指定固定集合中最多能包含多少个文档。 例如,创建一个名为 `myCollection` 的固定集合,大小为 ...

    MongoDB_命令.docx 命令集合

    更具体的,你可以输入`db.help()`来查看当前数据库支持的方法,或者`db.<collection>.help()`获取特定集合的操作帮助。 6. **数据操作**:例如,`db.<collection>.find()`用于查询集合中的数据,`db.<collection>....

    MongoDB 学习文档,内附Java代码

    - 其中`capped`为布尔值,表示是否为固定大小;`size`指定集合的最大字节数;`max`指定集合中最多能包含的文档数量。 - **删除集合**: - 使用`db.collection_name.drop()`命令删除指定的集合。 - **查看数据库帮助...

    MongoDB PHP创建集合.pdf

    创建集合是MongoDB中的基本操作,集合相当于关系数据库中的表。在PHP中,我们可以使用`MongoClient`类连接到MongoDB服务器,并通过`createCollection`方法来创建新的集合。以下是对创建集合过程的详细说明: 1. **...

    Spark-Mongodb是一个库允许用户利用SparkSQL读写数据至MongoDB集合

    Spark-MongoDB库是专为Java开发者设计的一个工具,它为Apache Spark提供了与MongoDB集成的能力,使得在大数据处理和分析场景下,可以方便地利用Spark SQL操作MongoDB中的数据。MongoDB是一款流行的NoSQL数据库,以其...

Global site tag (gtag.js) - Google Analytics