为什么对象存储在蚕食世界?
作者简介:Nitish Tiwari是专业的软件开发员,也是狂热的开源爱好者。作为Linux类杂志的技术撰稿人,他专门撰文介绍新的开源工具。
传统的文件系统和数据库Web后端不再足以满足要求,只好为管理非结构化数据的存储系统让路。我们在本文中将了解结构化数据和非结构化数据之间的区别,以及为什么Web存储后端必须与时俱进,管理非结构化数据。
传统上,Web应用程序使用文件系统和数据库来存储用户数据。这管理起来简单,因为Web应用程序生成结构化数据的方式如下:以表单接受文本输入,然后将输入内容保存到数据库。然而,时代在变化;由于社交媒体、云存储和数据分析平台的出现,越来越多的非结构化数据被推送到互联网上。
背景介绍
IDC公司早在2014年做过一项调查,预测到2020年,全球每年创建和复制的非结构化数据将达到44泽字节,也就是44万亿吉字节。这比2013年预测的4.4泽字节提高了10倍。如果你觉得这有点夸大,不妨考虑这个:在2015年,非结构化数据已经占所有数字数据的90%!
所以,与其他计算模式一样,存储系统也需要与时俱进,管理涌向互联网的这新一波的非结构化数据。但是在我们深入探讨之前,不妨先来定义一下非结构化数据。无法加以组织以便存储在关系数据库里面的数据通常被定义为非结构化数据。你可能有文本型或非文本型非结构化数据。文本文档、电子邮件和演示文稿就是典型的文本型非结构化数据。非文本型非结构化数据的例子包括:视频、图像和音频文件。你还可以看看Quora网站上的这个帖子(https://www.quora.com/What-is-the-difference-between-structured-and-unstructured-data),大致一下结构化数据和非结构化数据之间有什么区别。
为什么是对象存储?
现在我们知道,有大量的非结构化数据在生成,它们需要以一种易于访问,但又安全和可靠的方式来加以处理。我们已经拥有一种自现代计算问世以来人们一直在使用的存储系统:文件系统。
那么,为什么我们需要一种全新的存储模式?答案在于细节中。我们不妨了解一下需求。
我们在谈论非结构化数据及规模时,明白这一点很重要:用于存储数据的底层系统应该具有很好的扩展性。但是扩展文件系统很困难。你不仅需要管理文件系统强加给你的(有时)不必要的元数据和层次体系,还需要考虑维护方面,比如备份管理。
单单收集非结构化数据还不够。你还需要采用某种程度的组织管理,以便解读数据。对于从你收集的所有非结构化数据获取商业洞察力,像文本分析、自动分类和自动标记这些方法至关重要。但是这很难用文件系统来实现,因为它们拥有固定的布局。
文件系统不是为HTTP(S)设计的,而是为人类设计的。共享和管理文件系统中的文件很难通过编程来处理。处理文件流和可能的边界情况容易出错,而且很耗费时间和精力。
为了绕过这一切,需要新的技术,这种技术需要从头开始构思,着重关注新的需求。这就引出了对象存储。
什么是对象存储?
不像文件系统中的文件,对象存储在扁平结构中。只有对象池:没有文件夹,没有目录,也没有层次体系。你只要提供对象ID,就可以请求某个对象。对象可以是本地的,也可以是远在千里之外的云服务器上,但由于它们是在扁平的地址空间,检索方式一模一样。
一个重要的方面是元数据处理。对象存储提供了极高的灵活性,因为对象元数据是任意的。元数据并不仅限于存储系统认为很重要的对象(想一想文件系统中的固定元数据)。你可以手动添加任何类型或任何数量的元数据。比如说,你可以指定与对象关联起来的应用程序的类型,指定应用程序的重要性,指定赋予对象的数据保护级别,指定是不是想把该对象复制到另一个站点或多个站点,指定何时删除该对象,不一而足。
文件可以通过HTTP(S)来访问非常重要,以便确保文件易于访问。然后,它可以使用分析或其他技术。对象存储在这方面处理得很好。几乎所有提供对象存储的平台都有REST API,帮助你通过HTTP(S)访问这些文件。不仅API在访问数据方面大有帮助,它们还可以帮助你验证身份、获取文件属性和管理权限,而如果是在文件系统中,这一切都需要手动完成。
解决方案
鉴于互联网上的大部分数据是非结构化数据,加上专家们预测非结构化数据以两位数的幅度增长,因而迎面克服这个挑战很重要。非结构化数据必须以易于访问的方式来存储,我们要有相应的工具,从我们收集的所有这些庞大的非结构化数据获取商业洞察力。
不妨看一看如今市面上几种最流行的开源对象存储解决方案:
Ceph
Ceph是一种分布式对象、块和文件存储平台。Ceph的软件库为客户端应用程序提供了这种功能:直接访问基于RADOS对象的存储系统,还为Ceph的一些高级功能提供了基础,包括RADOS块设备(RBD)、RADOS网关和Ceph文件系统。参阅《面向OpenStack的Ceph存储入门介绍》:。
许可证:
源代码:https://github.com/ceph
Minio
Minio是一种简约的对象存储服务器系统,与亚马逊S3实现了API兼容。Minio用Go编写而成,这是一种轻量级、高度并发的解决方案。参阅《借助Minio实现简约对象存储》:https://opensource.com/business/15/7/minimal-object-storage-minio。
许可证:https://github.com/minio/minio/blob/master/LICENSE
源代码:https://github.com/minio/
OpenStack Swift
OpenStack Swift是一种高度可用、分布式、最终一致性的对象/blob存储。Swift用Python编写而成,支持REST API及其他客户端来访问数据。参阅Opensource.com上关于Swift的更多文章:https://opensource.com/search/apachesolr_search/openstack%20swift。
许可证:https://github.com/openstack/swift/blob/master/LICENSE
源代码:https://github.com/openstack/swift
云头条编译|未经授权谢绝转载
相关阅读:
Facebook是如何存储每天20亿张照片的——Cold Storage系统揭秘
国家“互联网+”行动战略发布:核心芯片、高端服务器、高端存储、数据库和中间件等产业将受益
闪存自助模式失败?NetApp 8.7亿美元收购 SolidFire
【深度全文1.1万字】为什么谷歌将二十亿行代码存储在单一代码库中?
NetApp、HPE 和 IBM 将跌出存储市场前四强,AWS、Azure 会上位|云头条
纯国产化软件定义存储厂商TaoCloud 获千万级人民币PreA轮融资
国内以开源存储系统 Ceph 背书的 XSKY 完成 5200 万 A 轮融资