因工作原因接触了对象存储,从而了解到相关的块存储和文件存储。搜罗了网上各种信息,结合自己的理解,整理如下。欢迎阅读,批评指正。

开头引用下几篇关于“块存储、文件存储、对象存储”的文章:
块存储、文件存储、对象存储这三者的本质差别是什么?
虚拟座谈会:有关分布式存储的三个基本问题-InfoQ

结合知乎链接和虚拟座谈会,以及网上其他信息,我从以下四个方面进行总结:

出现的背景:
不管是复杂还是简单的信息(数据),都是以0和1的组合落地到物理存储介质上,例如软盘、硬盘、磁带、机械硬盘等等。数据实实在在存在于这些存储介质上,那么如何使用它们?使用它们的方式,是否适应于不同的使用对象?使用性能是否可接受?诸如此类各种问题需要回答和解决,从而让数据发挥价值。

出现的原因:
这里主要总结三种存储方式出现的原因。
顺着上述“出现的背景”的思路,第一个需要思考的是,那么多0和1的数据,如何存储到物存储介质上?这里就引出“块存储”的概念。据知乎链接“木头龙”的回答:“所有数据按照固定的大小分块,每一块赋予一个用于寻址的编号。以大家比较熟悉的机械硬盘为例,一块就是一个扇区,老式硬盘是512字节大小,新硬盘是4K字节大小。老式硬盘用柱面-磁头-扇区号(CHS,Cylinder-Head-Sector)组成的编号进行寻址,现代硬盘用一个逻辑块编号寻址(LBA,Logical Block Addressing)”。就像约定好了一个规则,新老数据都以这样的规则固化到介质中,而这里负责完成这样的读写操作的,就是传统的文件系统。假如我们以“意识”这个角度来理解“块存储”,就是传统的文件系统“有意识有计划”地将各种数据安排到块设备中的某个位置,而块设备则“无意识无差别”地接收各种数据。
到这里,传统的文件系统和块设备可以愉快的玩耍了,他们之间不断地通过'0'和'1'眉目传情。但我们自然人用户,完全不知道。那是不可接受的,于是我们需要另一种方式,来让我们清楚的了解数据的情况。则引出“文件存储“的概念。“文件存储”通过文件的形式,将底层的'0'和'1'这些数据组织起来,成为我们可以理解的内容。不仅如此,“文件存储”还采用树形存储结构,如“目录——子目录——文件”,例如服务器中在命令窗口通过pwd命令看到的信息。这样的树形结构,加上维护树形结构的程序,加上在树形结构中查找、修改、删除、增加文件的程序,就组成文件系统,例如,常见的有Windows的FAT/FAT32/NTFS,Linux的EXT2/EXT3/EXT4/XFS/BtrFS等。
到这里,数据落地到存储介质,有了落地规则和负责的传统文件系统;对于数据的使用,有了文件系统;即“块存储”和“文件存储”均发挥了各自的作用。但“文件存储”对于应用程序来说,因为其树形结构的原因,对于应用程序的寻址来说,效率不高,因为需要找到第一级目录的信息,才能找到第二级目录的信息,以此类推。同时,复杂的树形结构也不利于拓展。于此,引出“对象存储”的概念。顾名思义,“对象存储”将整个数据当做一个对象进行存储,可以类比面向对象编程语言中的对象,每个对象之间相互独立。那么在“对象存储”中,是没有层级概念的,是一种键值存储。每个对象有一个键,通过该键即可找到该对象所有存储信息,然后并发地找到多个数据块,最终组成完整的数据。因为没有像树形结构这样的层级结构,所以寻址效率更高;不同数据都存在同一级,所以方便拓展。
至此,回顾三种存储方式出现的原因,可以发现,出发点是“什么角色要如何处理数据”。角色是计算机时,底层的“块存储”足够;角色是自然人时,需要封装一层“文件存储”供自然人理解和运用;角色是其他要求更高的计算机软件时,“对象存储”利用其存储特点,提供了更高的性能和拓展性。

底层的实现:
通过梳理可以发现,三种存储方式,在底层,跟存储设备打交道时,都是“块存储”。“文件存储”和“对象存储”因各自需要服务的角色的需求,在“块存储”上封装了一层,对外提供了不同的特性。

其他信息:
其他关于这三种存储的优缺点、对应的接口等信息,可翻阅上述链接中的答案。专业的大佬已经给出了很多解释。

如何修改xd.properties文件中对象存储文件信息_对块存储、文件存储、对象存储的认识总结...相关推荐

  1. python文件中单词的删除_使用python删除文件中的多余单词

    嗨,我正在学习Python,出于好奇,我编写了一个程序来删除文件中多余的单词. 我正在比较文件text1.txt中的测试.和'text2.txt',基于text1中的测试,我删除了test2中多余的单 ...

  2. Android开发过程中在sh,py,mk文件中添加log信息的方法

    Android开发过程中在sh,py,mk文件中添加log信息的方法 在sh文件中: echo "this is a log info" + $info 在py文件中: print ...

  3. 从属性资源文件中读取连接数据库信息

    从属性资源文件中读取连接数据库信息 jdbc.properties 属性配置文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:330 ...

  4. 血淋淋的事实告诉你:你为什么不应该在JS文件中保存敏感信息

    在JavaScript文件中存储敏感数据,不仅是一种错误的实践方式,而且还是一种非常危险的行为,长期以来大家都知道这一点. 而原因也非常简单,我们可以假设你为你的用户动态生成了一个包含API密钥的Ja ...

  5. python 知乎 合并 pdf_实例4:用Python提取不同PDF文件中的页面合并进新的PDF文件...

    公司船务部一个重要任务就是需要准备每单货物的发票,从系统导出发票时是默认存为一个PDF文档,在打印的时候,有多少个文件,就需要点多少次"打印".如果能够将当天的发票PDF档合并在一 ...

  6. 读取DWG文件中的文本信息(CAD2004)

    还是那句话,工作需要,不然是不会研究这个的.也许有的人会遇到跟我一样的问题,有兴趣看看,可以节约点时间.运行时要引用CAD2004的COM,这种读取文本的方式并不好,需要机器上装有AUTOCAD200 ...

  7. JS文件中的敏感信息+swagger接口测试

    01 JS中的敏感信息 实战中会经常遇到很多js文件,在js文件中很可能会遇到一些敏感信息和路径之类的,遇到路径可以尝试拼接,有可能会遇到未授权的情况等等,也有很多站点是webpack打包,可以F12 ...

  8. json文件中注释_JSON注释示例—如何在JSON文件中进行注释

    json文件中注释 If you're having trouble adding comments to your JSON file, there's a good reason: JSON do ...

  9. 将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中

    package again;import java.io.*;/* 1.编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中,a.txt 文件中的单词 ...

最新文章

  1. 服务器市场严酷竞争下的众生相
  2. nacos 公共_Springboot,Nacos并向使用研究
  3. Go从入门到精通(一)go语言初识
  4. 如何爬取ajax实时加载多个ts文件的视频
  5. 如何修改layui数据表格绑定的开关事件?
  6. arange函数--Numpy
  7. ltsc教育许可激活_教育部征求有关开放许可要求的意见
  8. java jbutton 改变_怎么修改JButton的样式?
  9. Vue过滤器filter和filters的使用详解
  10. 广义根轨迹 matlab,根轨迹心得体会
  11. _012_IDEA_idea 创建工作空间(空项目) 项目组
  12. Navicat 打开数据库自动断开解决方法
  13. token的基本处理和存储
  14. 2021-04-27 Android 理解frameworks services jni hardware kernel 整个控制过程实例包括回调
  15. 中国象棋大战 v2.13 绿色
  16. linux 读取png图片大小,读取 png 图片的宽高信息
  17. 社区运营秘笈:病毒式营销!
  18. 19. Redis的使用
  19. XML fragments parsed from previous mappers already contains value for 解决办法
  20. 英文姓名 格式 结构

热门文章

  1. java poi excel读写_JAVA-POI操作Excel读写
  2. 英文关键词计算tf-idf 余弦相似度_TFIDF原理与实践
  3. centos7源码安装mysql报错_centos7.3源码安装mysql
  4. Mxnet Focal Loss实现
  5. DiracNetV2
  6. cannot import name 'ImageRecordInt8Iter'
  7. js Object.keys()
  8. VS2010-2015对C++11/14/17特性的支持
  9. asyncio 回调
  10. python 排列组合之itertools