热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在java程序中操作MongoDB存储文件

GridFS是MongoDB为存取大型文档(超过4mb)准备的。首先是关于GridFS原理性的介绍。一、GridFS原理ThisfilesystemwithinMongoDBwasdesignedfor…well,holdingfiles,especiallyfilesover4MB…why4MB?WellBSONob
GridFS是MongoDB为存取大型文档(超过4mb)准备的。首先是关于GridFS原理性的介绍。

一、GridFS原理
This filesystem within MongoDB was designed for … well, holding files, especially files over 4MB … why 4MB?
Well BSON objects are limited to 4MB in size (BSON is the format that MongoDB uses to store it’s database information) so GridFS helps store files across multiple chunks.
As Kristina Chodorow of 10Gen puts it …
GridFS breaks large files into manageable chunks. It saves the
chunks to one collection (fs.chunks) and then metadata about the
file to another collection (fs.files). When you query for the file,
GridFS queries the chunks collection and returns the file one piece
at a time.
Why would you want to break large files in to “chunks”? A lot of of comes down to efficient memory & disk usage.
Say you want to store larger files (maybe a 2GB video) when you preform a query on that file all 2GB needs to be loaded into memory … say you have a bigger file, 10GB, 25GB etc … it’s quite likely you’d run out of usable RAM or not have that much RAM available at all!
So, GridFS solves this problem by streaming the data back (in chunks) to the client … this way you’d never need to use more than 4MB of RAM.

二、命令行方式操作
在MongoDB的安装目录下有个mongoFiles.exe这就是用来存取文件的。

存储之后,发现这个文件被存在了testDatabase的fs.files集合下。利用testDatabase.fs.files.find("mylove.wma")可以查询到此文档。

三、java方式存储
 import java.io.File;  
 import java.net.UnknownHostException;  
 import java.util.Date;  
 import java.util.List;  
 import com.mongodb.BasicDBObject;  
 import com.mongodb.DB;  
 import com.mongodb.DBCollection;  
 import com.mongodb.DBCursor;  
 import com.mongodb.DBObject;  
 import com.mongodb.Mongo;  
 import com.mongodb.MongoException;  
 import com.mongodb.gridfs.GridFS;  
 import com.mongodb.gridfs.GridFSInputFile;  
   
 public class MongoDBClientTest {  
   
     public static void main(String[] args) {  
 //      initData();  
 //      query();  
         initData4GridFS();  
     }  
       
       
     private static void initData4GridFS()   {  
         long start = new Date().getTime();  
         try {  
             Mongo db = new Mongo("127.0.0.1", 50000);  
             DB mydb = db.getDB("wlb");  
             File f = new File("D://study//document//MySQL5.1参考手册.chm");  
             GridFS myFS = new GridFS(mydb);               
             GridFSInputFile inputFile = myFS.createFile(f);  
             inputFile.save();  
   
             DBCursor cursor = myFS.getFileList();  
             while(cursor.hasNext()){  
                 System.out.println(cursor.next());  
             }     
             db.close();  
             long endTime = new Date().getTime();  
             System.out.println(endTime - start);  
             System.out.println((endTime - start) / 10000000);  
         }catch (Exception e) {  
             e.printStackTrace();  
         }  
     }  
 }


推荐阅读
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 本文详细介绍了如何构建MongoDB的ReplSet复制集群,包括环境准备、配置文件设置以及初始化复制集群的具体步骤。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 利用 Jest 和 Supertest 实现接口测试的全面指南
    本文深入探讨了如何使用 Jest 和 Supertest 进行接口测试,通过实际案例详细解析了测试环境的搭建、测试用例的编写以及异步测试的处理方法。 ... [详细]
  • 近期参与了一个旨在提高在线平台大规模查询响应速度的项目,预计处理的数据量为2-3亿条,数据库并发量约为每秒1500次,未来可能增至3000次。通过对比Redis和MongoDB,最终选择了MongoDB,因其具备优秀的横向扩展性和GridFS支持下的Map/Reduce功能。 ... [详细]
  • Lepus: 高效的企业级数据库监控解决方案
    访问官方网站:http://www.lepus.cc/。Lepus(天兔)数据库监控系统是由一位资深数据库管理员(现任职于一家知名互联网公司)专为互联网企业设计的专业数据库监控平台。该系统旨在提供全面的数据库性能监控与管理服务,支持多种主流数据库类型。 ... [详细]
author-avatar
zaizaiwaipo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有