对象存储VS文件存储,需要二选一吗

对象存储发展了很长时间,但最终进入到了应用开发过程。甚至有人预测了对象存储最后会涵盖文件存储的论调。

背景

对象存储在公有云和数据中心里存在二十多年。能追溯到90年代后期所做的工作,包括像初创公司Filepool这样的,后来被EMC收购成为Centera平台。对象模型用基于REST的API和Web协议通过网络传输数据。

一直以来,对象存储都用于大规模数据存储,包括归档和二级备份数据。近年来,随着更快的对象存储和更小的占用空间开发让这类解决方案发生了变化。

协议

对比对象和文件存储时,首要考虑因素之一是协议。对象存储围绕一组基元进行操作——CRUD(创建、读取、更新和删除)——适用于管理的对象。在原子操作中,对象将写入(创建)对象作为单一实体存储,通常不会就地更新。创建对象后,任何更新都是删除和创建的组合,不过某些平台允许就地修改。虽然某种程度上S3协议提供基于范围的检索,但读取操作也类似读取整个对象。

现在,CRUD模型是可用于管理对象的命令简化。如今,大多数对象存储解决方案都遵循 AWS S3 API,提供大量的命令和子命令选项,其中许多是为了支持如Glacier等平台功能而开发的。

NAS

NAS解决方案用的是NFS和SMB等协议,让远程客户端能访问到存在中心服务器上的文件系统里的文件。虽然不是特别符合POSIX接口标准,但NFS等协议的加入又有了就地更新数据、创建和扩展文件,把文件放在层次结构(目录/文件夹结构)中还有为了确保数据完整性进行文件锁定功能。

实现

NAS和对象存储的发展多了一些特定协议的实现细节。可以说,第一批对象存储供应商创建了横向扩展的多节点系统来获取弹性和可扩展性。相比之下,文件服务器可以在单个Linux、Unix或Windows设备上实现,而无需特定存储。

然而谈及NAS和对象存储用例时,值得强调的是,这两种协议都不需要特定架构。NAS和对象协议都可以是横向扩展或纵向扩展的架构。

节点功能

在考虑如何使用现代化文件和对象存储时,最重要的一点是,公有云模糊了存储平台的实现细节,终端用户只要知道节点的细节就可以使用服务。因此不需要关注其所在硬件,而是要看节点可提供的功能。

选择

如何选择正确的协议?如果你的应用需要一致性,文件存储可能最佳。如果你的应用需要在分析过程中对数百万个文件进行并行读取访问,那对象存储是正确的选择。如果你正在构建一个传统数据库应用,那就算是块存储也可选。

最后

未来,如果大部分数据不需要文件存储的特性,那么对象存储是大家的首选,因为它比NAS更高效。这种情况下,只看数据存储量,对象存储可能确实会成为我们数据的主要API。

文章编译自:https://www.architecting.it/blog/object-vs-file/