网站大量收购闲置独家精品文档,联系QQ:2885784924

基于mongoDB和C#分布式海量文件存储实验.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于mongoDB和C#分布式海量文件存储实验 本实验将按以下几步进行:实验环境monodevelop ,ubuntu10.04,实验目的:探索分布式文件存储方案 1、单机小文件的存储,逐步增加上传文件的大小,观察mongoDB中文件对磁盘分配大小的变化。 2、采用分片的方式存储大量的数据 实验一: 首先建立一个数据库gywdb,上传一个574.5kB大小的文件,代码如下: View Code using System; using System.Collections; using System.Collections.Generic; using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.GridFS; namespace mongoDBClient { class MainClass { public static void Main (string[] args) { //mongoDb服务实例连接字符串 string con=mongodb://localhost:27017; //得到一个于mongoDB服务器连接的实例 MongoServer server=MongoServer.Create(con); //获得一个与具体数据库连接对象,数据库名为gywdb MongoDatabase mydb=server.GetDatabase(gywdb); //定义一个本地文件的路径字符串 string localFileName=/home/guoyuanwei/学习资料/Google三大论文中文版.pdf; //定义mongoDB数据库中文件的名称 string mongoDBFileName=Google三大论文中文版; //设置GridFS文件中对应的集合前缀名 MongoGridFSSettings fsSetting=new MongoGridFSSettings(){Root=gyw}; //实例化一个GridFS MongoGridFS gridfs=new MongoGridFS(mydb,fsSetting); //将本地文件上传到mongoDB中去,以默认块的大小256KB对文件进行分块 gridfs.Upload(localFileName,mongoDBFileName); } } } 运行命令: show collections gyw.chunks gyw.files 可以看到得到了一个前缀为gyw的文件元数据存储的集合gyw.files和存储文件数据块的gyw.chunks 运行命令 db.gyw.chunks.find({},{_id:1,n:1}) { _id : ObjectId(4fc0a6d91d41c808f45cbfec), n : 0 } { _id : ObjectId(4fc0a6d91d41c808f45cbfed), n : 1 } { _id : ObjectId(4fc0a6da1d41c808f45cbfee), n : 2 } 得到3个块数据,因为文件总大小为574.5KB,每个块采用的是默认大小256KB,所以得到了3个块。此时磁盘文件系统中,mongoDB自动生成了3个文件分别是: gywdb.0(大小为64MB),gywdb.1(大小为128MB),gywdb.ns(存储命名空间源数据),这里分配机制体现了mongoDB的文件分配策略,每个数据库有一个.ns文件和若干个数据文件 ,数据文件以递增的数字结尾。每个新的以数字结尾的数据文件大小会加倍,直到达到最大值2GB,这是为了让小数据库不浪费太多的磁盘空间,同时让大数据使用磁盘上连续的空间。 MongoDB为了保证性能还会预分配数据文件,这意味着MongoDB服务器总是试图为每一个数据库保留一个额外的空数据文件,来避免文件分配所产生的阻塞。 接着利用上面的代码再上传一个大小为2.4MB大小的文件到mongoDB的文件系统中 运行命令: db.gyw.chunks.find({},{_id:1,n:1,files_i

文档评论(0)

企业资源 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档