MongoDB中shard key的选择(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-02-18 03:27 点击:
根据需求的不同,GridFS有几种不同的分片方法。基于预先存在的索引是惯用的分片办法:
 
1)“files”集合(Collection)不会分片,所有的文件记录都会位于一个分片上,高度推荐使该分片保持高度灵活(至少使用由3个节点构成的replica set)。
 
2)“chunks”集合(Collection)应该被分片,并且用索引”files_id:1”。已经存在的由MongoDB的驱动来创建的“files_id,n”索引不能用作分片Key(这个是一个分片约束,后续会被修复),所以不得不创建一个独立的”files_id”索引。使用“files_id”作为分片Key的原因是一个特定的文件的所有Chunks都是在相同的分片上,非常安全并且允许运行“filemd5”命令(要求特定的驱动)。
  www.2cto.com  
运行如下命令:
 
> db.fs.chunks.ensureIndex({files_id: 1});
 
> db.runCommand({ shardcollection : "test.fs.chunks", key : { files_id : 1 }})
 
{ "collectionsharded" : "test.fs.chunks", "ok" : 1 }
 
由于默认的files_id是一个ObjectId,files_id将会升序增长,因此,GridFS的全部Chunks都会被从一个单点分片上存取。如果写的负载比较高,就需要使用其他的分片Key了,或者使用其它的值(_id)来作为分片Key了。
 
选择分片Key的需要考虑的因素具有一定的对立性,不可能样样的具备,在实际使用过程中还是需要根据需求的不同来进行权衡,适当放弃一些。没有万能的普适分片办法,需求才是王道。
 
 
作者 fly542
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Request.ServerVariables 参数大全
  • 执行全文索引时出现权限不足的解决方法
  • 导入excel文件处理流程节点的解决方案
  • 查看sql修改痕迹(SQL Change Tracking on Table)
  • MongoDB安装为Windows服务方法与注意事项
  • App数据层设计及云存储使用指南
  • PostgreSQL启动过程中的那些事三:加载GUC参数
  • 写给MongoDB开发者的50条建议Tip1
  • Percolator与分布式事务思考(二)

数据库技术导航

SqlserverMysqlOracleDB2数据库数据库综合
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1