可以用mongodb自带的GridFS实现一个简单的分布式小文件存储系统,mongo提供命令行工具mongofiles以及各种语言的驱动提供GridFS操作的接口。
1,mongofiles操作文件
写文件到GridFS
$ mongofiles.exe put test.txt -d ciaos -l d:\test.txt
connected to: 127.0.0.1
added file: { _id: ObjectId('50b436be961c6ba1158ef731'), filename: "test.txt", chunkSize: 262144, uploadDate: new Date(1353987774155), md5: "126f336a523c7bc84f25aea99d617e97", length: 11 }
done!
$ mongo.exe
MongoDB shell version: 2.2.1
connecting to: test
use ciaosuse ciaos
switched to db ciaos
> db.fs.files.find()db.fs.files.find()
{ "_id" : ObjectId("50b436be961c6ba1158ef731"), "filename" : "test.txt", "chunkSize" : 262144, "uploadDate" : ISODate("2012-11-27T03:42:54.155Z"), "md5" : "126f336a523c7bc84f25aea99d617e97", "length" : 11 }
从GridFS读文件
$ mongofiles.exe get test.txt -d ciaos -l d:\local.txt
connected to: 127.0.0.1
done write to: d:\local.txt
2,php驱动操作文件
<?php
//put a file
$mongo = new Mongo();
$db = $mongo->selectDB("ciaos");
$gridfs = $db->getGridFS();
$mid = $gridfs->put("D://local.txt");
var_dump($mid);
/*
object(MongoId)#5 (1) {
["$id"]=>
string(24) "50b437e1959d706424000001"
}
*/
//get a file
$fsfile = $gridfs->get($mid);
var_dump($fsfile->getFilename());
//string(13) "D://local.txt"
var_dump($fsfile->getSize());
//int(11)
var_dump($fsfile->getBytes());
//string(11) "this is txt"
?>
我们可以使用mongo的集群配置文件的副本数目简单实现一个小文件的分布式存储系统。
分享到:
相关推荐
要使用GridFS存储大文件,可以通过MongoDB的官方驱动提供的API接口或者命令行工具mongofiles。操作完成后,文件的各个块将被分散存储在fs.chunks集合中,文件元数据存储在fs.files集合中。可以利用这些信息对文件...
但横向扩展并非无代价,对于小量数据集而言,使用分布式系统进行计算可能并不划算,因为它可能带来较高的时间成本。因此,合理使用分布式架构时需要遵循两个原则:一是对于单机能处理的数据尽量不使用分布式系统处理...
标题中的“php5.5 mongodb 驱动 dll文件 32+64位 php_mongo.dll”指的是一款适用于PHP 5.5版本的MongoDB数据库驱动程序,该驱动程序包含了32位和64位两种系统环境下的动态链接库(DLL)文件——php_mongo.dll...
FastDFS 是一个分布式文件系统,适合存储图片类型的数据库,适合存储如图片、文档等小文件,存储 100M 以下的小文件。FastDFS 的特点包括: * 适合存储图片类型的数据库 * 适合存储如图片、文档等小文件 * 存储 100...
PHP为了方便开发者与MongoDB数据库打交道,提供了专门的MongoDB扩展——php_mongo。本文将详细介绍标题为"php_mongo_5.2.6.6"的扩展,它是专为PHP 5.2.6版本设计的一个重要组件。 一、php_mongo扩展简介 php_mongo...
MongoDB 是一个流行的开源文档型数据库系统,以非关系型数据存储为特点,广泛应用于大数据和分布式系统中。而 PHP 是一种广泛使用的服务器端脚本语言,尤其适合开发 Web 应用程序。将 PHP 与 MongoDB 结合,可以充分...
MongoDB是一种高性能、高可用性且易于扩展的开源NoSQL数据库系统,由C++编写而成,旨在提供可扩展的高性能数据存储解决方案。它采用了一种灵活的文档模型,让开发者可以使用各种数据格式存储数据,并且可以在任何...
分片将大型数据库分成多个较小的部分,称为碎片,分布在多个服务器上。这不仅提高了读写性能,也确保了系统的高可用性。 在性能方面,4.0版本引入了新的存储引擎——WiredTiger。相比之前的MMAPV1,WiredTiger提供...
新闻网站爬虫,课程设计与人合作完成的小项目,基于python3 scrapy,UI界面采用tkinter,数据库采用mongodb,利用机器学习训练数据,对新闻进行分类,并存储到mongo数据库中,通过用户界面展示出来 目前由于训练集...
本文将详细介绍"mongo本地操作连接工具"——Robo 3T(原名Robomongo),以及如何使用它来连接和管理MongoDB数据库。 Robo 3T是一款轻量级、跨平台的MongoDB管理工具,支持Windows、Mac OS X和Linux操作系统。它的...
MongoDB是目前非常流行的一款开源、分布式文档数据库系统,它以JSON格式存储数据,具有高性能、高可用性和可扩展性。MongoDB驱动程序是连接应用程序与数据库的关键组件,允许开发者在各种编程语言中与MongoDB进行...
《PyPI官网下载 | dbcli_mongo_redis-0.3.5.tar.gz——探索Python数据库交互新维度》 在Python编程领域,PyPI(Python Package Index)是开发者们获取和分享开源软件包的重要平台。本资源,"dbcli_mongo_redis-...
【主要内容】:这篇对比分析主要探讨了两种不同类型的数据库——Postgres(一种关系型数据库)和MongoDB(一种NoSQL文档型数据库)的优缺点,以及它们在实际应用中的适用场景。文章首先介绍了数据库理论的基础,包括...
MongoDB是一款采用C++语言编写的开源数据库系统,属于NoSQL(Not Only SQL)数据库的一种,它基于分布式文件存储,支持高度灵活的数据结构。MongoDB使用了类似于JSON的对象表示形式——BSON(Binary JSON)来存储数据...
总结一下,"移动开发经典Demo"——"mongo-2.6.6-ppc.zip"是一个面向PowerPC平台的MongoDB实例,它提供了学习和实践MongoDB集成到移动应用的宝贵资源。通过深入研究这个Demo,开发者不仅可以熟悉MongoDB的基本操作,...
Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中每一条记录都是一个Document对象。Mongo DB...
在本文中,我们将关注一个特定的库——alignak_module_mongo_logs-1.0.0-py3-none-any.whl,这是一个针对MongoDB日志管理的Python模块。 首先,让我们了解什么是.whl文件。.whl是Python的二进制分发格式,它是...
本文主要探讨了华为云如何利用GaussDB(for Mongo)数据库来优化国家地理信息公共服务平台——天地图的服务性能和数据处理能力。天地图是一个提供在线地理信息服务的平台,旨在集成和汇聚各级地理信息资源,为公众和...
Spring Boot 2.x 教程中的MongoDB使用详解 MongoDB是一个流行的NoSQL数据库系统,设计为分布式存储,提供高性能和可伸缩性。它的数据结构以BSON(Binary JSON)为主,允许存储复杂的数据类型,特别适合Node.js应用...