草庐IT

MinIO与MySQL对比以及存储的相关知识

Fishermen_sail 2023-08-18 原文

看了一些文章,也没有特别清晰的理解面向对象存储。我发现中文网站上并没有人去对比的写MinIO和MySQL的不同,可能大家觉得这俩根本没必要对比吧。这篇文章会对比MinIO与MySQL,能更直观的理解面向对象存储。(以下内能很多都是按自己的理解,可能有错误,如有错误,请评论区指出,感谢)

这是我在一个网站上看到的一个图。咱们就一个词一个词解释。

Cloud Storage

  1. 首先我们先区别云存储和本地存储的区别。
    本地存储就是在自己的电脑上存储,或自己搭建个服务器;云存储就是把东西放到阿里云服务器(或别的)上去。
    本地存储的缺点就是麻烦,你得买服务器、自己运维等等。而阿里云可以让你完全不用考虑这些问题,甚至监控、动态扩容全给你设计好。
  2. 把MySQL部署到阿里云上,算是云存储吗?
    不算,这叫云数据库。
    云数据库可以包括关系型数据库以及非关系型数据库,而云存储则可以包含块存储以及对象存储等(下面会说)。
    在继续的查找中,我继续查找,发现了很多“文件系统和数据库系统”的词条。查到这里我也发现我自己有一个很大的误区,我一见到存储,脑子里只有数据库。所以我不理解Cloud Storage和Database,以为Database放在阿里云上就是Cloud Storage。
    其实数据库只是一种存储数据的形式,还有别的形式,比如文件存储、块存储、对象存储。而云存储并不采用数据库,下面先解释“文件系统和数据库系统”这个词条。
  3. 文件系统和数据库系统
    首先说明文件系统和文件存储的区别:看下面“文件存储”那张图,文件存储应该包含文件系统。看了很多文章,没有人区分这个,有的人会说文件存储,有的会说文件系统,所以可以文件存储=文件系统。
    1)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS(数据库管理系统)统一管理和控制数据。
    2)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
    3)数据库系统是在文件系统的基础上发展而来的。(我觉得可以说,数据库系统就是文件系统)
    4)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一储存数据。
    5)文件属于自定义结构的数据存取模式,数据库属于结构化管理的数据存取模式。(非结构化数据,例如视频、图片用文件系统。结构化,需要权限控制的数据进数据库,例如合同、单据。)
  4. 文件存储、块存储、对象存储
    1)块存储,操作对象是磁盘。(因为它是二进制,如果要读它依然要靠文件系统,比如说对于你电脑上的MySQL,你要读它就需要数据库管理系统(它就是文件系统),这样才可以读到。)
    2)文件存储,操作对象是文件和文件夹,比如C:\Users\Downloads\text.doc(底层依然是磁盘,帮你建了一个文件系统,使数据以文件的方式存储和访问,按照目录结构进行组织,便于你的使用以及共享)。
    (为什么易于共享呢?相较于上面的块存储,为了读它,大家都有各自的文件系统去访问块存储就比较麻烦,像是读MySQL就要DBMS,读U盘又需要别的。而文件存储的文件系统,强调的是非本地的文件系统,类似于百度网盘,这个文件系统是在百度里的,而不是你本地,所以说文件存储易于共享)
    3)对象存储,主要操作对象是对象(对象存储的底层依然是磁盘,它是块存储和文件存储的结合,相比文件存储没有了目录结构,类似于map一样。就像MinIO拿对象,直接给个地址就能拿,也就是更快了,不用像文件存储那样文件套文件,还得一个一个找)。




    存储讲解
    存储讲解(视频)
    数据存储是非常大的内容,还是挺抽象的,只简单区分,不知道理解的对不对,不继续探索了。
  5. 数据库是哪种存储方式?
    上面也提到了,数据库应该是属于块存储。
  6. Cloud Storage比Database的优势
    1)一般云存储上存储的都是用户上传的比较零散的文件,每个文件的类型和组织的方式可以不一致,比如图片,音频,word文件之类的;而数据库中存储中的数据都由数据库进程来直接管理,包括表空间,表结构以及数据存储的方式,是有规则的。
    2)就拿图片来说,那数据库存图片不行吗?
    行。我之前还实现过,就是本地用户上传头像,我把它转成base64编码(很长很长),然后把它存在数据库里。一个最大的缺点就是数据库(MySQL)不适合存大数据,会严重影响性能。
    3)为什么?回答不了,可能比较底层了,简单理解(纯属个人理解):我原本一直不理解的东西是,图片最中都要转成一段编码,其实也就是二进制,存哪不都一样吗;不是的,数据库是为了更好的逻辑搜索,它要建表,很废空间性能,而且为了实现日志、回滚、备份什么什么吧,所以只适合小数据;像图片,因为根本不会对图片本身去改变什么,所以它就是死的,不需要日志、回滚、备份这些东西;所以一般就是数据库存图片地址,用对象存储的方式存图片。

Database

MinIO是数据库吗?
不是,结合上面所写应该也理解了,大家把他叫做“对象存储服务”。

Cloud Computing

云存储相关的功能(云服务器上的功能)依赖于云计算实现,有以下几个好处:
1)成本:本地存储你得买服务器、自己运维等等,成本不可控。而阿里云可以让你完全不用考虑这些问题,甚至监控、动态扩容全给你设计好,成本比较可控。
2)弹性:比如你的网站突然有很多人访问,你就需要加购很多服务器,而云服务器最大的特点就是按需付费,用户多了帮你扩容,少了再给你减。
3)安全:云服务器都给你设计好了,比你设计的安全多了,放心吧。
4)隐私:像是机密数据,还是自己搭吧。
云计算的讲解

Relational Databases

中文叫关系行数据库,其实就是以表格的形式。而非关系型数据库,就是非表格形式的,像是大名鼎鼎的Redis,它就是全部以Key-Value这种形式,相当于整个表就是一个Map。

总结

数据存储真的是一个非常大的内容,我记得大三时有一门选修课叫“数据存储技术”,当时这门课我感觉很难,听的云里雾里,而且基本都是理论,很难实操,很枯燥,基本做些实验也是去验证这个理论知识,测一下这个数据库的速度、缓存机制、扩容机制等等。今天这个问题把我困了这么久,可见当时掌握的非常糟糕。

有关MinIO与MySQL对比以及存储的相关知识的更多相关文章

  1. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  4. ruby - Rack:如何将 URL 存储为变量? - 2

    我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

  5. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  6. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  7. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  8. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  9. ruby-on-rails - 在具有 ActiveRecord 条件的相关模型中按字段排序 - 2

    我正在尝试按Rails相关模型中的字段进行排序。我研究的所有解决方案都没有解决如果相关模型被另一个参数过滤?元素模型classItem相关模型:classPriority我正在使用where子句检索项目:@items=Item.where('company_id=?andapproved=?',@company.id,true).all我需要按相关表格中的“位置”列进行排序。问题在于,在优先级模型中,一个项目可能会被多家公司列出。因此,这些职位取决于他们拥有的company_id。当我显示项目时,它是针对一个公司的,按公司内的职位排序。完成此任务的正确方法是什么?感谢您的帮助。PS-我

  10. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

随机推荐