mysql和minio
在现代应用架构中,Word 文档、PPT 等文件通常存储在对象存储服务(如 MinIO)中,而不是直接存储在关系型数据库(如 MySQL)中。以下是具体的分工和原因:
为什么选择对象存储(如 MinIO)来存储 Word 文档、PPT 等文件?
存储类型适合:
MinIO 是一个对象存储服务,专门用于存储非结构化数据(如文件、图片、视频等)。它提供了高效、灵活的存储方式,适合处理大容量的文件数据。
MySQL 是关系型数据库,主要用于存储结构化数据(如用户信息、事务记录等)。将文件存储在 MySQL 中会占用大量存储空间,且读写效率低下。
性能优势:
MinIO 支持高并发读写操作,适合处理大量文件的上传和下载。
MySQL 的设计更侧重于事务处理和数据一致性,不适合存储大文件。
成本效益:
对象存储服务(如 MinIO)通常具有更高的扩展性和更低的存储成本,适合存储大量文件。
MySQL 的存储空间有限,存储大量文件会增加成本并降低性能。
安全性:
MinIO 提供了与 Amazon S3 兼容的 API,支持访问控制、加密等功能,可以安全地存储和管理文件。
如何存储和管理 Word 文档、PPT 等文件?
- 存储在对象存储服务(如 MinIO)中
文件存储:将 Word 文档、PPT 等文件存储在 MinIO 中。
文件元数据存储:在 MySQL 中存储文件的元数据(如文件名、文件路径、上传时间、文件大小、所属用户等)。 - 示例架构
假设你正在开发一个在线文档管理系统:
MinIO:
存储实际的文件内容(如 Word 文档、PPT 等)。
提供文件的上传、下载和管理接口。
MySQL:
存储文件的元数据,例如:
sql复制
CREATE TABLE files (
id INT AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
file_path VARCHAR(255) NOT NULL, – 存储在 MinIO 中的路径
file_size BIGINT NOT NULL,
upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
user_id INT NOT NULL, – 关联用户表
FOREIGN KEY (user_id) REFERENCES users(id)
); - 文件上传和下载流程
上传文件:
用户上传文件(如 Word 文档、PPT)。
后端服务将文件存储到 MinIO。
后端服务将文件的元数据(如文件名、路径、大小等)存储到 MySQL。
下载文件:
用户请求下载文件。
后端服务从 MySQL 中查询文件的元数据。
后端服务通过 MinIO 提供文件的下载链接。
为什么不能直接存储在 MySQL 中?
存储限制:MySQL 不适合存储大文件(如 Word 文档、PPT 等)。虽然可以将文件以 BLOB(二进制大对象)格式存储在 MySQL 中,但这种方式会占用大量存储空间,且读写效率低下。
扩展性问题:MySQL 的存储容量有限,不适合存储大量文件。
性能问题:频繁地读写大文件会导致 MySQL 性能下降,影响数据库的事务处理能力。
总结
Word 文档、PPT 等文件:存储在对象存储服务(如 MinIO)中。
文件元数据:存储在关系型数据库(如 MySQL)中。
分工明确:MinIO 负责存储和管理文件,MySQL 负责存储文件的元数据和其他结构化数据。
这种架构结合了 MinIO 和 MySQL 的优势,既保证了文件存储的高效性和灵活性,又确保了结构化数据的一致性和安全性。
MySQL(或任何关系型数据库)的作用不仅仅局限于存储元数据,它在应用架构中通常承担更广泛的角色。不过,在涉及文件存储的场景中,MySQL的主要职责确实是存储元数据,而不是文件本身。这种分工是基于性能、效率和成本的考虑。
MySQL在文件存储场景中的职责
在处理文件(如Word文档、PPT、图片、视频等)的场景中,MySQL通常负责以下内容:
存储元数据:
文件名:文件的原始名称。
文件路径:文件在对象存储(如MinIO)中的存储路径。
文件大小:文件的大小信息。
上传时间:文件上传的时间戳。
用户信息:文件的上传者或所有者。
其他属性:如文件类型(MIME类型)、访问权限、标签等。
管理文件与业务逻辑的关系:
关联用户:将文件与用户表关联,记录文件的所有者。
关联业务数据:例如,将文件与某个订单、项目或帖子关联。
版本管理:如果支持文件版本,记录不同版本的元数据。
提供查询和索引功能:
快速检索:通过SQL查询快速找到特定文件的元数据。
排序和过滤:支持按上传时间、文件大小、文件类型等条件进行排序和过滤。
MySQL在其他场景中的职责
除了存储文件的元数据,MySQL在应用架构中还承担以下重要角色:
存储结构化数据:
用户信息:用户账号、密码、权限等。
业务数据:订单信息、交易记录、产品信息等。
事务数据:需要保证ACID(原子性、一致性、隔离性、持久性)的事务性数据。
支持复杂查询:
关联查询:通过SQL的JOIN操作,查询多个表之间的关系。
聚合查询:如统计、分组、排序等操作。
数据完整性:
约束:通过外键、唯一约束、检查约束等机制,保证数据的完整性和一致性。
事务管理:支持事务操作,确保数据操作的原子性和一致性。
为什么MySQL不适合存储文件本身?
MySQL可以存储文件(以BLOB格式),但这种做法通常不推荐,原因如下:
性能问题:
存储和读取大文件会显著降低数据库性能。
数据库备份和恢复也会变得非常缓慢。
存储成本:
数据库存储空间通常比对象存储更昂贵。
存储大量文件会增加数据库的存储压力。
扩展性问题:
数据库的存储容量有限,不适合存储大量文件。
对象存储(如MinIO)可以轻松扩展,支持分布式存储。
功能限制:
数据库不支持文件的版本管理、生命周期管理等功能。
对象存储(如MinIO)提供了这些功能,更适合文件存储。
总结
MySQL的主要职责:存储结构化数据和文件的元数据,支持复杂查询和事务管理。
MinIO的主要职责:存储文件本身,提供高性能的文件读写和管理功能。
分工明确:MySQL负责存储和管理元数据,MinIO负责存储和管理文件内容。这种分工可以充分发挥各自的优势,提高系统的整体性能和可扩展性。
在现代应用架构中,这种分工是非常常见的,因为它能够有效利用每种技术的优势,同时避免各自的不足。
一、镜像用途与分工
- MySQL镜像
- 功能:提供关系型数据库服务,用于存储结构化数据(如用户信息、订单记录、交易数据等)。
- 适用场景:需要事务支持、复杂查询、数据一致性要求高的场景,例如电商平台、金融系统等。
- 数据特点:表格化存储,支持SQL查询,适用于强关联性数据的处理。
- MinIO镜像
- 功能:提供对象存储服务,用于存储非结构化数据(如图片、视频、日志文件、备份文件、容器镜像等)。
- 适用场景:
- 多媒体存储:支持大规模图片、音视频文件的存储和快速访问。
- 数据湖/备份:归档历史数据或备份文件,兼容S3接口,适合云原生和分布式架构。
- 大数据分析:存储原始数据供Spark、Hive等工具分析。
- 数据特点:以对象形式存储,无固定格式限制,支持高吞吐量和大规模扩展。
二、为什么有MySQL还需要MinIO?
- 数据类型的互补性
- MySQL:擅长处理结构化数据(如订单号、用户ID),但对非结构化数据(如视频、日志)存储效率低,且可能因大文件导致性能下降。
- MinIO:专为海量非结构化数据设计,支持单个文件从KB到5TB的存储,适合存储MySQL难以处理的内容。
- 性能与扩展需求
- MySQL:扩展需通过分库分表,复杂且成本高。
- MinIO:原生支持分布式架构,可轻松扩展到PB级数据,通过纠删码技术保障数据冗余和可靠性。
- 业务场景的差异
- MySQL:适用于需要事务、实时查询的场景(如支付系统)。
- MinIO:适用于需要低成本存储、高并发访问的场景(如用户上传图片、日志归档)。
三、典型分工示例
| 组件 | 数据示例 | 存储需求 | 工具选择 |
|---|---|---|---|
| 用户信息 | 用户名、邮箱、密码哈希 | 结构化、高频查询 | MySQL |
| 商品图片 | 高清图片、视频 | 非结构化、高吞吐量、低成本 | MinIO |
| 日志文件 | 访问日志、错误日志 | 非结构化、长期归档、批量分析 | MinIO |
四、总结
- MySQL与MinIO是互补关系:前者管理核心业务数据,后者处理海量非结构化资源。
- 技术选型建议:若涉及图片/视频存储、大数据分析或云原生场景,必须引入MinIO;若仅需处理结构化数据,MySQL已足够。
可视化工具
MinIO 的可视化管理主要通过以下工具实现:
- MinIO Console(官方 Web 界面)
MinIO 默认集成了一个基于 Web 的可视化管理工具 MinIO Console,支持通过浏览器直接访问。
- 功能特性:
- 直观的对象存储管理:支持创建/删除存储桶、上传/下载文件、设置权限等操作。
- 实时监控仪表盘:展示存储使用量、服务状态等统计信息。
- 安全配置:支持 TLS 加密和 JWT 鉴权,确保通信安全。
- 访问方式:
启动 MinIO 服务后,默认通过http://<服务器IP>:9000或http://<服务器IP>:9001(具体端口根据配置)访问。
(例如:docker run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001")。
- MinIO Client(
mc命令行工具)
虽然mc是命令行工具,但它提供类似 Linux 文件操作的交互方式,适合高级用户快速管理存储桶和对象:
- 常用命令:
mc mb创建存储桶,mc ls查看文件列表,mc cp复制对象等。- 支持配置多存储服务(如阿里云 OSS、AWS S3)的统一管理。
- 可视化辅助:通过脚本或与其他工具集成,可实现半自动化操作。
- 第三方工具集成
部分开发者会结合以下工具增强可视化能力(需自行部署):
- Prometheus + Grafana:监控 MinIO 集群性能指标。
- Rclone:跨平台文件同步工具,支持图形界面管理 MinIO 存储。
推荐选择
- 简单场景:直接使用 MinIO Console,无需额外配置。
- 自动化运维:结合
mc命令行和脚本实现批量操作。 - 配置细节可参考:。
相关文章:
mysql和minio
在现代应用架构中,Word 文档、PPT 等文件通常存储在对象存储服务(如 MinIO)中,而不是直接存储在关系型数据库(如 MySQL)中。以下是具体的分工和原因: 为什么选择对象存储(如 MinIO&a…...
计算机视觉:卷积神经网络(CNN)基本概念(二)
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络 接上一篇《计算机视觉&am…...
【数据结构-红黑树】
文章目录 红黑树红黑树介绍红黑树的五个基本性质红黑树的平衡原理红黑树的操作红黑树的操作 代码实现节点实现插入和查询操作 红黑树 红黑树介绍 红黑树(Red-Black Tree)是一种自平衡的二叉查找树(Binary Search Tree, BST)&…...
dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型
要将 dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型. 申请阿里云百练的KEY 添加模型 测试模型...
手机ROM是什么
本篇将以我自己的手机——小米13为例 手机 ROM 详解 在手机领域,ROM(Read-Only Memory) 通常指的是 手机的操作系统和固件,包括 Android 设备的 系统镜像(system.img)、引导程序(boot.img&…...
应用分层、三层架构和MVC架构
前言 在前面中,我们已经学习了Spring MVC 的一些基础操作,那么后面就用一些简单的案例来巩固一下。 在开始学习做案例之前,我们先来了解一下在软件开发中常见的设计模式和架构。 应用分层 含义 应用分层是一种软件开发设计思想࿰…...
Apache Struts2 - 任意文件上传漏洞 - CVE-2024-53677
0x01:漏洞简介 Apache Struts 是美国 Apache 基金会的一个开源项目,是一套用于创建企业级 Java Web 应用的开源 MVC 框架(将软件分为模型(Model)、视图(View)和控制器(Controller&a…...
传统混合专家模型MoE架构详解以及python示例(DeepSeek-V3之基础)
我们已经了解到DeepSeek-V3的框架结构基于三大核心技术构建:多头潜在注意力(MLA)、DeepSeekMoE架构和多token预测(MTP)。而DeepSeekMoE架构的底层模型采用了混合专家模型(Mixture of Experts,MoE)架构。所以我们先了解一下传统混合专家模型MoE架构。 一、传统混合专家模…...
Tomcat如何处理Http请求
Tomcat处理HTTP请求的流程是一个复杂但有序的过程,涉及多个组件的协同工作。以下是对Tomcat处理HTTP请求流程的详细讲解: 一、接收请求 监听端口:Tomcat通过配置的Connector组件监听特定的端口(默认是8080)ÿ…...
安全筑基,智能赋能:BeeWorks IM引领企业协同新纪元
在数字经济高速发展的今天,企业通讯系统已从单纯的信息传递工具演变为支撑业务创新的核心平台。传统通讯工具在安全性、智能化、协同性等方面的不足,严重制约着企业的数字化转型进程。BeeWorks IM系统以其创新的技术架构和智能化功能,正在重新…...
AlmaLinux使用Ansible自动部署k8s集群
一、环境准备 节点规划(最低要求) 1台Master节点(4核/8GB内存)2台Worker节点(2核/4GB内存)1台Ansible控制机(可复用Master节点) 系统配置 # 所有节点执行 sudo hostnamectl set-hos…...
solidworks零件的绘制学习
1、拉伸凸台拉伸切除可以在一个零件中打孔,如下图: 2、旋转凸台配合旋转切除; 3、薄壁特征:在拉伸凸台,旋转凸台中都有;在一个面中画完草图,然后选择拉伸凸台或旋转凸台,里面就会出…...
DeepSeek-V3模型底层架构的核心技术一(多Token预测(MTP)技术)
一、DeepSeek-V3的框架结构 DeepSeek-V3的框架结构基于三大核心技术构建:多头潜在注意力(MLA)、DeepSeekMoE架构和多token预测(MTP)。这些创新使得模型在处理长序列、平衡计算负载以及生成连贯文本方面表现出色。 1. 基础架构 DeepSeek-V3的基础架构仍然基于Transformer框…...
llama.cpp部署 DeepSeek-R1 模型
一、llama.cpp 介绍 使用纯 C/C推理 Meta 的LLaMA模型(及其他模型)。主要目标llama.cpp是在各种硬件(本地和云端)上以最少的设置和最先进的性能实现 LLM 推理。纯 C/C 实现,无任何依赖项Apple 芯片是一流的——通过 A…...
Spring源码分析のBean创建流程(上)
文章目录 前言一、preInstantiateSingletons1.1、getMergedLocalBeanDefinition1.2、isFactoryBean 二、getBean 前言 原生Spring在refresh方法中,会在finishBeanFactoryInitialization:preInstantiateSingletons方法中直接创建所有非懒加载的单例Bean。…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_time_update函数
定义在 src\core\ngx_times.c 中 ngx_time_init 函数后面 void ngx_time_update(void) {u_char *p0, *p1, *p2, *p3, *p4;ngx_tm_t tm, gmt;time_t sec;ngx_uint_t msec;ngx_time_t *tp;struct timeval tv;if (!ngx_trylock(&ngx…...
DeepSeek笔记(二):DeepSeek局域网访问
如果有多台电脑,可以通过远程访问,实现在局域网环境下多台电脑共享使用DeepSeek模型。在本笔记中,首先介绍设置局域网多台电脑访问DeepSeek-R1模型。 一、启动Ollama局域网访问 1.配置环境变量 此处本人的操作系统是Windows11,…...
基于大数据的全国热门旅游景点数据分析系统的设计与实现
【大数据】基于大数据的全国热门旅游景点数据分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统主要包括登录注册、系统首页、图表分析、数据管理和个人信息五大功能模…...
【Unity3D】Jenkins Pipeline流水线自动构建Apk
目录 一、准备阶段 二、创建Pipeline流水线项目 三、注意事项 四、扩展 1、Pipeline添加SVN更新项目Stage阶段 一、准备阶段 1、安装tomcat 10.0.5 Index of apache-local/tomcat/tomcat-10 2、安装jdk 17 Java Archive Downloads - Java SE 17.0.13 and later 3、…...
10G EPON光模块
一、10G EPON对称光模块 工作模式:上行突发接收、下行连续发射。 工作原理:当需要发送信号时,系统信号通过光模块的电接口把信号传送到驱动芯片,芯片处理后,驱动激光器发出调制光信号,经光纤发到远端&…...
Edge浏览器翻译|自动翻译设置
文章目录 Edge浏览器翻译|自动翻译设置右键翻译显示原文 Edge浏览器翻译|自动翻译设置 在 Microsoft Edge 浏览器中使用 Microsoft Translator - Microsoft 支持 进入浏览器设置,从首选语言列表中移除多余的语言设置 网站将以受支持语言列表中的第一种语言进行显示。若要重新…...
基于微信小程序的场地预约设计与实现
第3章 系统设计 3.1系统设计目标 本系统的实现可以帮助体育馆场地信息的管理。帮助管理员对注册用户管理以及用户预约管理。同时可以帮助用户进行场地预约。本系统可以实现用户足不出户预约到需要的场地,为用户提供场地信息了解的平台。 3.2系统功能结构图 本系统的…...
腾讯发布混元-3D 2.0: 首个开源高质3D-DiT生成大模型
在之前的文章中已经和大家介绍过腾讯HunYuan-3D 1.0,感兴趣的小伙伴可以点击下面链接阅读~ HunYuan-3D 是首个开源高质3D-DiT生成大模型,几何与纹理解藕生成,一键将创意具象化。 2.0模型架构图及介绍 2.0模型将几何和纹理生成解耦࿰…...
计算机性能与网络体系结构探讨 —— 基于《计算机网络》谢希仁第八版
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮࿰…...
C# 控制台相关 API 与随机数API
C# 控制台相关 API 与随机数API 控制台输入输出 功能说明 Console.WriteLine(string): 输出字符串并换行Console.Write(string, string): 输出字符串不换行Console.ReadLine(): 等待用户输入并返回字符串Console.ReadKey(bool).KeyChar: 读取按键,指定是否显示输…...
Git的常用命令及常见问题处理方法
目录 一、介绍二、常用 Git 命令1. 配置用户信息2. 初始化仓库3. 克隆远程仓库4. 查看状态5. 添加文件到暂存区6. 提交更改7. 查看提交历史8. 查看文件差异9. 查看分支10. 切换分支11. 合并分支12. 处理冲突13. 远程操作14. 标签管理15. 撤销操作 三、常见问题处理方法1. 无法推…...
基于vue3实现的课堂点名程序
设计思路 采用vue3实现的课堂点名程序,模拟课堂座位布局,点击开始点名按钮后,一朵鲜花在座位间传递,直到点击结束点名按钮,鲜花停留的座位被点名。 课堂点名 座位组件 seat.vue <script setup>//组合式APIimpo…...
kkFileView二开之pdf转图片接口
kkFileView二开之Pdf转图片接口 kkFileView二开系列文章:1 kkFileView源码下载及编译2 Pdf转图片接口2.1 背景2.2 分析2.2 接口开发2.2.1 编写Pdf转图片方法2.2.2 编写转换接口 2.3 接口测试2.3.1 Pdf文件准备2.3.2 pdf2Image 3 部署 kkFileView二开系列文章&#x…...
神经网络常见激活函数 9-CELU函数
文章目录 CELU函数导函数函数和导函数图像优缺点pytorch中的CELU函数tensorflow 中的CELU函数 CELU 连续可微指数线性单元:CELU(Continuously Differentiable Exponential Linear Unit),是一种连续可导的激活函数,结合了 ELU 和 …...
什么是网关?网关有什么作用?API网关的主要功能,SpringCloud可以选择有哪些API网关?什么是限流算法?网关如何实现限流?一篇文章读懂网关的前世今生
1、什么是网关? API网关(API Gateway)是一种中间层服务器,用于集中管理,保护和路由对后端服务的访问。它充当了客户端与后端服务之间的入口点,提供了一组统一的接口管理和控制API的访问。 2、网关示意图 3…...
