介绍
灵活和可扩展的数据存储是大多数应用程序和服务使用现代技术和工具开发的基本要求,无论是存储大量图像、视频还是文本,应用程序开发人员都需要一个解决方案来存储和检索用户生成的内容、日志、备份等。
随着当今复杂的部署、容器和短期基础设施,在单一服务器上简单地将文件保存到磁盘的日子已经过去了,云提供商已经开发出服务来满足现代应用部署的存储需求,并且它们大多适合两类:对象存储和区块存储。
让我们看看两者,并讨论每个人的总体优势,缺点和用例。
什么是区块链存储
区块存储服务相对简单且熟悉,它们通过网络提供传统的区块存储设备,比如硬盘。
从那里,你可以用一个文件系统格式化它并存储文件,将多个设备组合成一个RAID数组,或者配置一个数据库直接写到区块设备上,完全避免了文件系统的覆盖。
- 您可以轻松地拍摄整个设备的实时截图以进行备份
- 区块存储设备可以调整大小以满足日益增长的需求
- 您可以轻松地将区块存储设备分离并移动到机器之间
这是一个非常灵活的设置,可以用于大多数类型的应用程序,让我们总结一下该技术的一些优点和缺点。
区块存储的一些优点是:
- 区块存储是一个熟悉的范式. 人们和软件几乎普遍地理解和支持文件和文件系统
- 区块设备得到良好的支持. 任何编程语言都可以轻松阅读和写文件
- 文件系统权限和访问控制是熟悉的和被理解
- 区块存储设备提供低延迟的IO,因此它们适合数据库使用
区块存储的缺点是:
- 存储同时绑定到一个服务器
- 区块和文件系统对他们存储的信息(创建日期,所有者,大小)的元数据有限
- 您需要为您分配的所有区块存储空间支付费用,即使您不使用它
- 您只能通过运行服务器 访问区块存储
- 区块存储需要更多的实际工作和设置和对象存储(文件系统选择,权限,版本,备份等)
由于其快速IO特性,区块存储服务非常适合在传统数据库中存储数据,此外,许多需要正常文件系统存储的旧应用程序还需要使用区块存储设备。
如果您的云提供商不提供区块存储服务,您可以使用 OpenStack Cinder, Ceph或许多 NAS 设备上可用的内置 iSCSI 服务运行自己的服务。
什么是物体存储
在现代云计算世界中,对象存储是使用HTTP API存储和检索数据和元数据的非结构化块,而不是将文件分解成块,以便使用文件系统存储在磁盘上,我们处理通过网络存储的整个对象。
对象存储开始了,因为它极大地简化了开发人员的体验,因为API由标准的HTTP请求组成,因此对于大多数编程语言很快就开发了库。 将数据存储到对象商店的HTTP PUT请求一样容易。 获取文件和元数据是正常的GET请求。 此外,大多数对象存储服务也可以向用户公开服务,从而消除维护一个Web服务器来托管静态资产的需要。
此外,对象存储服务只收取您使用的存储空间费用(有些还收取 HTTP 请求和传输带宽费用)。
然而,对象存储并非每个情况的正确解决方案,让我们来总结一下优势和缺点。
对象存储的一些优点是:
- 简单的 HTTP API,客户端可用于所有主要操作系统和编程语言
- 一个成本结构,意味着您只需支付您使用的数据
- 内置的公共服务静态资产意味着您可以使用一个更少的服务器
- 一些对象商店提供内置的 CDN 集成,这将您的资产在全球范围内缓存,以便您的用户更快下载和页面加载
- 可选版本意味着您可以从意外的数据重写 中恢复旧版本的对象
- 对象存储服务可以轻松地从温和的需求扩展到真正密集的使用情况,而无需开发人员
对象存储的一些缺点是:
- 您不能使用对象存储服务来备份传统数据库,因为这些服务的延迟率很高
- 对象存储不允许您只改变一个数据片段,您必须同时阅读和写下一个整个对象。这有一些性能影响。例如,在文件系统中,您可以轻松地将一个单行列附加到日志文件的末尾。在对象存储系统中,您需要获取对象,添加新行,并重新写下整个对象。这使得对象存储不太适合对数据的变化非常频繁
- 操作系统无法像正常磁盘一样轻松地安装一个对象存储器。有一些客户端和适配器可以帮助这一点,但一般来说,使用和浏览对象存储器并不像在文件浏
由于这些属性,对象存储有助于托管静态资产,保存用户生成的内容,如图像和电影,存储备份文件和存储日志。
有些自我托管的对象存储解决方案,虽然你会放弃托管解决方案的一些好处(如不必担心硬盘和扩展问题)。
结论
选择存储解决方案对于开发人员来说可能是一个复杂的决定. 在本文中,我们讨论了区块和对象存储服务的优点和缺点。