zoukankan      html  css  js  c++  java
  • 对GridFS数据进行分片

    在对 GridFS 存储进行分片时,需要注意以下的情况:

    files 集合

    大多数情况下不需要对 files 集合进行分片,这个集合通常很小,只包含了一些元信息.集合中也没有合适的片键可以将数据均衡地分布在集群中.如果你 必须 对 files 进行分片,可以使用 _id 字段与应用相关的字段做复合片键.

    不将``files`` 分片意味着所有文件的元信息都存储在一个分片上,在生产环境中, 必须 在存储了 files 的分片上使用复制集.

    chunks 集合

    用以下命令使用 files_id } 做片键为 chunks 集合分片:

    db.fs.chunks.createIndex( { files_id : 1 , n : 1 } )
    
    db.runCommand( { shardCollection : "test.fs.chunks" , key : { files_id : 1 , n : 1 } } )
    

    也可以像这样只使用 file_id 字段进行分片:

    db.runCommand( { shardCollection : "test.fs.chunks" , key : {  files_id : 1 } } )
    

    重要

    在GridFS存储中,对 chunks 集合进行分片时, 只有 两个片键可以选择,``{ files_id : 1 , n : 1 }`` 与 {  files_id } .

    默认的 files_id 是 ObjectId , ObjectId 是递增的,因此所有新写入的数据都会存储到一个单独的分片中,如果这个分片的写负载太大,考虑换一个片键或者在 files 集合中使用不同的 _id 值.

  • 相关阅读:
    request和response使用
    oracle_to_char
    oracl_LTRIM_RITRIM
    convert
    jdbc
    oracle_trunc
    [python]glob模块中的glob()函数为什么返回空列表??
    win10 anaconda+tensorflow+keras
    Golang学习:sublime text3配置golang环境
    2018/12/05学习笔记
  • 原文地址:https://www.cnblogs.com/ExMan/p/10948876.html
Copyright © 2011-2022 走看看