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空间复用测试相关推荐

  1. MongoDB存储文件之GridFS

    [MongoDB是什么?] MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间 ...

  2. MySQL存储引擎 lnnoDB逻辑架构 innodb存储引擎表空间(ibd文件)详解 回滚日志的物理空间

    文章目录 存储引擎 一 MySQL组织架构 二 查看存储引擎信息 三 修改存储引擎 3.1 配置文件修改存储引擎 3.2 临时修改存储引擎 3.3 建表时修改存储引擎 四 存储引擎实验 五 数据库升级 ...

  3. python gridfs_python利用mongodb上传图片数据 : GridFS 与 bson两种方式

    利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...

  4. Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)

    图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...

  5. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...

  6. Mongodb存储特性与内部原理

    前言 本文重点叙述下mongodb存储特性和内部原理, 下一篇文章咱们一起来搭建下Replica Sets+Sharded Cluster的集群 存储引擎 wiredTiger引擎 1.3.0新增引擎 ...

  7. MongoDB中的GridFs是什么

    本文来介绍下MongoDB的GridFsTemplate如何使用 文章目录 什么是GridFS 为什么要使用GridFS GridFS的两个集合 本文小结 什么是GridFS GridFS是一种将大型 ...

  8. 内存越界问题及malloc_chunk边界标记法和空间复用

    公司项目遇到服务器core了 用gdb调试 出现了in _int_free () [Thread debugging using libthread_db enabled] Using host li ...

  9. MongoDB存储原理和基本概念

    mongodb基本概念 ①.mongodb是属于文档型的非关系型数据库 ②. mongodb 数据库和关系型数据库概念一致,mongodb集合就是关系型数据库的表, mongodb文档就是关系型数据库 ...

最新文章

  1. 利用Unity自带的合图切割功能将合图切割成子图
  2. tableau可视化数据分析60讲(九)-tableau数值计算字符串计算(重点知识)
  3. 如何通过使用注册项 (.reg) 文件添加、修改或删除注册表子项和值
  4. 基于数据库的事务消息解决分布式事务方案
  5. rust如何在木板上上传图片_通过编写一个简单的游戏来学习 Rust | Linux 中国
  6. 作者:胡清华(1976-),男,博士,天津大学计算机科学与技术学院教授。
  7. ARP地址解析协议原理
  8. 从rpm包中提取文件的命令
  9. 移动端touch事件的处理
  10. 中国体声波器件市场趋势报告、技术动态创新及市场预测
  11. 前方高能!IT 程序员、软件工程师值得考的证书原来有这么多! | 原力计划
  12. TiDB 在摩拜单车的深度实践及应用
  13. Java从入门到熟悉的48道练习题[完结]
  14. vue 项目使用通过经纬度显示地图
  15. cass怎么多级放坡_cass土方计算考虑放坡
  16. 生命游戏(python版)
  17. 设备树学习之(一)GPIO中断
  18. arch模型的思路_ARCH模型介绍.ppt
  19. python分析b站_实战 | Python模型分析B站优质up主
  20. 爬一爬妹子网,看看妹子

热门文章

  1. 汉澳sinox平台的大量CAD制图、PCB电路板、IC集成电路、HDL硬件描述语言、电路仿真和元素分析等设计软件一览表
  2. zabbix二次开发集成拓扑图功能
  3. bug检查工具——FindBugs
  4. 用Flutter实现小Q聊天机器人(三)
  5. Linux下wordpress安装教程(全)
  6. kafka 安装及测试
  7. MySql按列分组然后求和
  8. FD镜像文件生成过程分析
  9. 【ACWing】713. 区间 2
  10. 贵州大数据安全工程研究中心107名DSMM测评师持证上岗