【MongoDB】MongoDB数据库之海量存储机制

GridFS是一种将大型文件存储在Mongodb数据库中的文件规范。

一、如何实现海量存储

由于Mongodb中的bson对象大小是限制的,所以gridfs规范提供了一种透明的机制,可以将一个大文件分成多个较小的文件。这样的机制允许有效地保存大文件的对象,特别是哪些巨大的文件,比如视频,高清图片;该规范指定了一个将文件分块的标准,每个文件都在集合对象中保存一个元数据对象,一个或多个块对象可被组合在一个chunk块集合中。mongodb中主要是利用mongofiles工具。

Grifs使用两个表来存储数据:

Files(包含元数据对象)

chunks(抱哈你一些相关信息的二进制块)

为了使多个gridfs命名为一个单一的数据库,文件和块都有一个前缀。默认情况下,前缀是fs.所以任何默认的gridfs存储将包括命名空间fs.files和fs.chunks。

二、命令行工具

mongofiles是从命令行操作gridfs的一种工具,例如将“testfile”这个文件存到数据库里面,可以执行如下操作。首先咱们整体认识一下mongofiles:

实例存放文件到数据库中

db.fs.files.find()参数说明:

filename:储存文件的名称;

chunksize:chunks的大小

uploaddate:入库时间

md5:文件的md5码

length:文件的大小(单位:字节)

db.fs.chunks.find()参数说明:

n:代表chunks的序号,此序号是从0开始;

data字段就是实际存储的数据

从数据库取出来数据:

D:\Program Files\mongodb\bin>mongofiles get test.txt
connected to: 127.0.0.1
done write to: test.txt

gridfs文件也可以创建索引,一个块就可以利用它file_id和n的值来进行检索。

db.fs.files.find()参数说明:

时间: 2025-01-02 04:22:56

【MongoDB】MongoDB数据库之海量存储机制的相关文章

浅析MongoDB数据库的海量数据存储应用

[摘要]当今已进入大数据时代,特别是大规模互联网web2.0应用不断发展及云计算所需要的海量存储和海量计算发展,传统的关系型数据库已无法满足这方面的需求.随着NoSQL数据库的不断发展和成熟,可以较好地解决海量存储和海量计算方面的应用需求.本文重点描述作为NoSQL之一MongoDB数据库在海量数据存储方面的应用. 1 引言NoSQL,全称是“Not Only Sql”,指的是非关系型的数据库.这类数据库主要有这些特点:非关系型的.分布式.开源的.水平可扩展的.原始目的是为了大规模web应用,这

C# MongoDB分布式海量存储实验

本实验将按以下几步进行:实验环境monodevelop ,ubuntu10.04,实验目的:探索分布式文件存储方案 1.单机小文件的存储,逐步增加上传文件的大小,观察mongoDB中文件对磁盘分配大小的变化. 2.采用分片的方式存储大量的数据 实验一: 首先建立一个数据库gywdb,上传一个574.5kB大小的文件,代码如下: using System; using System.Collections; using System.Collections.Generic; using Mongo

【MongoDB学习笔记28】MongoDB的GridFS存储机制

GridFS作为MongoDB的存储机制,用来存放二进制大文件: GridFS有以下优点: (1)使用GridFS简化存储栈,在MongoDB中替代独立的存储工具: (2)GridFS会自动平衡已有的复制和自动分片,对文件存储做故障转移挥着横向扩展会更容易: (3)MongoDB中以2GB的大小来分配数据文件,在GridFS中文件存储集中度会比较高: GridFS当然也有缺点: (1)从GridFS中读取文件没有直接从文件系统中快: (2)修改存放在GridFS中的文档,只有先删除就文档然后从新

MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)

1:MongoDB的官方网址:https://www.mongodb.com   MongoDB的中文社区:http://www.mongoing.com/(老外也很看重中国市场啊,知道大家英语不好,做的中文社区)   MongoDB的中文网址:http://docs.mongoing.com/manual-zh/   MongoDB的github:https://github.com/mongodb 2:在MongoDB的github上面下载压缩包上传到VMware的linux操作系统上面:操

[MongoDB]MongoDB的优缺点及与关系型数据库的比较

汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB与JAVA结合使用CRUD 参考:http://www.cnblogs.com/hoojo/archive/2011/06/01/2066119.html 介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 特点:高性能.易部

MongoDB 3.2版WiredTiger存储引擎性能测试

MongoDB 3.2版WiredTiger存储引擎性能测试 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs MongoDB 3.2于最近发布了,它使用WiredTiger作为其默认的存储引擎.这五年来,MongoDB从诞生到流行,发展可谓是相当迅猛. MongoDB 3.0就开始支持"可插拔的存储引擎"功能,因此在3.2版使用WiredTiger也在情理之中.WiredTiger引擎基于B-Tree算法,

【Mongodb教程 第二课 】 MongoDB 创建数据库 use 命令

use 命令 MongoDB use DATABASE_NAME 用于创建数据库.该命令将创建一个新的数据库,如果它不存在,否则将返回现有的数据库. 语法: use DATABASE 语句的基本语法如下: use DATABASE_NAME 示例: 如果想创建一个数据库名称 <mydb>, 那么 use DATABASE 语句如下: >use mydb switched to db mydb 要检查当前选择的数据库使用命令 db >db mydb 如果想检查数据库列表,使用命令sh

Mongodb创建数据库

基本语法 MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库. 实例 以下实例我们创建了数据库 coderschool: > use coderschool switched to db coderschool > db coderschool >  如果你想查看所有数据库,可以使用 show dbs 命令: > show dbs local  0.078GB test   0.078GB > 

用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库

上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. mongodb的安装和启动 首先我们得安装mongodb,先去官网( http://www.mongodb.org/downloads)下载安装包,我的开发环境是Windows,所以下载Windows下的iso文件,根据提示一路安装完毕即可,没什么需要特别选择的. 安装完后,为了能在cmd中全局都