Mongodb存储二进制文件GridFS空间复用测试
Oracle可以存储二进制文件,测试后发现lob字段再数据delete后表空间不能被复用,考虑将数据存储在mongodb中,mongodb存在GridFS,测试GridFS是否也存在相同的情况
mongofiles命令介绍
Possible commands include:list - list all files; 'filename' is an optional prefix which listed filenames must begin withsearch - search all files; 'filename' is a substring which listed filenames must containput - add a file with filename 'filename'put_id - add a file with filename 'filename' and a given '_id'get - get a file with filename 'filename'get_id - get a file with the given '_id'delete - delete all files with filename 'filename'delete_id - delete a file with the given '_id'
mongodb数据库初始化后空间占用情况
[mongo@Mon01 mongodb]$ du -sh *
1.1G data
1.4M log
4.0K mongodb.pid
4.0K mongodb.yaml
4.0K secret
数据写入
写入两个文件test1大小1GB,test.log大小5GB
[mongo@Mon01 ~]$ mongofiles -u test -p test --authenticationDatabase test put test1
2022-08-11T14:56:51.882+0800 connected to: localhost
added file: test1
[mongo@Mon01 ~]$ mongofiles -u test -p test --authenticationDatabase test put test.log
2022-08-11T15:00:34.925+0800 connected to: localhost
added file: test.log
GridFS存储相关表
MongoRepl:SECONDARY> show tables;
fs.chunks
fs.files
主要存储数据的集合fs.chunks
MongoRepl:PRIMARY> db.fs.chunks.stats()
{"ns" : "test.fs.chunks","size" : 3802809920,"count" : 14560,"avgObjSize" : 261182,"storageSize" : 594558976,"capped" : false,"wiredTiger" : {"metadata" : {"formatVersion" : 1},"creationString" : "type" : "file","uri" : "statistics:table:collection-0-1779480531914116713",},
}
写入期间,观察文件大小变化
[mongo@Mon01 mongodb]$ du -sh *
2.2G data
1.6M log
4.0K mongodb.pid
4.0K mongodb.yaml
4.0K secret
观察集合fs.chunks数据文件大小变化
[mongo@Mon01 data]$ du -ch *
865M collection-0-1779480531914116713.wt
... ...
200M diagnostic.data
... ...
301M journal
... ...
230M WiredTigerLAS.wt
... ...
2.4G total
查看当前写入的文件
[mongo@Mon01 ~]$ mongofiles -u test -p test --authenticationDatabase test list
2022-08-11T15:09:52.043+0800 connected to: localhost
test1 1048576000
test.log 5776622690
数据删除
删除文件
[mongo@Mon01 ~]$ mongofiles -u test -p test --authenticationDatabase test delete test1
2022-08-11T15:11:21.229+0800 connected to: localhost
successfully deleted all instances of 'test1' from GridFS
[mongo@Mon01 ~]$ mongofiles -u test -p test --authenticationDatabase test delete test.log
2022-08-11T15:11:31.479+0800 connected to: localhost
successfully deleted all instances of 'test.log' from GridFS
删除文件后,观察文件大小变化,一段事件后空间会自动回收,集合对应数据文件变小
[mongo@Mon01 data]$ du -ch *
12K collection-0-1779480531914116713.wt
... ...
796M collection-8--2049863378525224046.wt
... ...
200M diagnostic.data
... ...
301M journal
... ...
432M WiredTigerLAS.wt
... ...
144K WiredTiger.wt
1.7G total
总结:
Mongodb存储二进制文件可以正常进行增删,数据删除后空间可自动回收。
Tips:
journal类似Oracle或MySQL的Redo
WiredTiger是Mongodb的存储引擎,值得研究
Mongodb存储二进制文件GridFS空间复用测试相关推荐
- MongoDB存储文件之GridFS
[MongoDB是什么?] MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间 ...
- MySQL存储引擎 lnnoDB逻辑架构 innodb存储引擎表空间(ibd文件)详解 回滚日志的物理空间
文章目录 存储引擎 一 MySQL组织架构 二 查看存储引擎信息 三 修改存储引擎 3.1 配置文件修改存储引擎 3.2 临时修改存储引擎 3.3 建表时修改存储引擎 四 存储引擎实验 五 数据库升级 ...
- python gridfs_python利用mongodb上传图片数据 : GridFS 与 bson两种方式
利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...
- Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)
图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...
- Mongodb存储特性与内部原理
前言 本文重点叙述下mongodb存储特性和内部原理, 下一篇文章咱们一起来搭建下Replica Sets+Sharded Cluster的集群 存储引擎 wiredTiger引擎 1.3.0新增引擎 ...
- MongoDB中的GridFs是什么
本文来介绍下MongoDB的GridFsTemplate如何使用 文章目录 什么是GridFS 为什么要使用GridFS GridFS的两个集合 本文小结 什么是GridFS GridFS是一种将大型 ...
- 内存越界问题及malloc_chunk边界标记法和空间复用
公司项目遇到服务器core了 用gdb调试 出现了in _int_free () [Thread debugging using libthread_db enabled] Using host li ...
- MongoDB存储原理和基本概念
mongodb基本概念 ①.mongodb是属于文档型的非关系型数据库 ②. mongodb 数据库和关系型数据库概念一致,mongodb集合就是关系型数据库的表, mongodb文档就是关系型数据库 ...
最新文章
- 利用Unity自带的合图切割功能将合图切割成子图
- tableau可视化数据分析60讲(九)-tableau数值计算字符串计算(重点知识)
- 如何通过使用注册项 (.reg) 文件添加、修改或删除注册表子项和值
- 基于数据库的事务消息解决分布式事务方案
- rust如何在木板上上传图片_通过编写一个简单的游戏来学习 Rust | Linux 中国
- 作者:胡清华(1976-),男,博士,天津大学计算机科学与技术学院教授。
- ARP地址解析协议原理
- 从rpm包中提取文件的命令
- 移动端touch事件的处理
- 中国体声波器件市场趋势报告、技术动态创新及市场预测
- 前方高能!IT 程序员、软件工程师值得考的证书原来有这么多! | 原力计划
- TiDB 在摩拜单车的深度实践及应用
- Java从入门到熟悉的48道练习题[完结]
- vue 项目使用通过经纬度显示地图
- cass怎么多级放坡_cass土方计算考虑放坡
- 生命游戏(python版)
- 设备树学习之(一)GPIO中断
- arch模型的思路_ARCH模型介绍.ppt
- python分析b站_实战 | Python模型分析B站优质up主
- 爬一爬妹子网,看看妹子