老刘博客前文《对象存储优点,技术架构,数据组成及应用场景分析(1)》主要和朋友们介绍了对象存储Object-based Storage概念和对象存储技术历史渊源,这里老刘将继续为大家分享对象存储和块存储、文件存储的区别,对象存储中的数据组成。
对象存储和块存储、文件存储的区别
对象存储到底是一个什么样的技术?它和块存储、文件存储有什么区别?
首先,第一点,千万不要去看百度百科上面“对象存储”的定义,否则,你可能会怀疑人生。想要了解对象存储,最简单直接的办法,就是从实际使用体验上进行对比。
对象存储的底层硬件介质,依然是硬盘,和块存储、文件存储没有区别。而对象存储架构在底层硬件之上的系统,和两者完全不同。(下文会详细介绍系统架构)
不同的软件,带来了完全不同的使用体验:块存储,操作对象是磁盘。存储协议是SCSI、iSCSI、FC。以 SCSI 为例,主要接口命令有 Read/Write/Read Capacity/Inquiry 等等。文件存储,操作对象是文件和文件夹。存储协议是NFS、SAMBA(SMB)、POSIX等。
以NFS(大家应该都用过“网上邻居”共享文件吧?就是那个)为例,文件相关的接口命令包括:READ/WRITE/CREATE/REMOVE/RENAME/LOOKUP/ACCESS 等等,文件夹相关的接口命令包括:MKDIR/RMDIR/READDIR 等等。
对象存储,主要操作对象是对象(Object)。存储协议是S3、Swift等。以S3为例,主要接口命令有PUT/GET/DELETE等。看出来了吧?接口命令非常简洁,没有那种目录树的概念。
在对象存储系统里,你不能直接打开/修改文件,只能先下载、修改,再上传文件。(如果大家用过百度网盘或ftp服务,一定可以秒懂。)
对象存储中的数据组成
对象存储呈现出来的是一个“桶”(bucket),你可以往“桶”里面放“对象(Object)”。这个对象包括三个部分:Key、Data、Metadata。
Key
可以理解文件名,是该对象的全局唯一标识符(UID)。Key是用于检索对象,服务器和用户不需要知道数据的物理地址,也能通过它找到对象。这种方法极大地简化了数据存储。
下面这行,就是一个对象的地址范例:
看上去就是一个URL网址。如果该对象被设置为“公开”,所有互联网用户都可以通过这个地址访问它。
Data
也就是用户数据本体。这个不用解释了。
Metadata
Metadata叫做元数据,它是对象存储一个非常独特的概念。元数据有点类似数据的标签,标签的条目类型和数量是没有限制的,可以是对象的各种描述信息。
举个例子,如果对象是一张人物照片,那么元数据可以是姓名、性别、国籍、年龄、拍摄地点、拍摄时间等,元数据可以有很多。
在传统的文件存储里,这类信息属于文件本身,和文件一起封装存储。而对象存储中,元数据是独立出来的,并不在数据内部封装。元数据的好处非常明显,可以大大加快对象的排序,还有分类和查找。
以上是老刘博客总结的对象存储和块存储、文件存储的区别以及对象存储中的组成,接下来老刘将分享对象存储技术架构,对象存储优点以及应用场景内容,敬请关注老刘博客文章《对象存储优点,技术架构,数据组成及应用场景分析(3)》。