了解Azure BLOB存储及其在SQL Server中的用途

1,040 阅读13分钟

Azure blob存储是微软提供的一种云服务,用于存储大量的非结构化数据,这些数据可能是图像、文本、文件、视频或所有这些类型的混合形式。它还被用作Azure数据湖分析解决方案的底层存储和Azure虚拟机的管理磁盘子系统。

让我们先了解一下blob。什么是blob?blob是二进制大对象的简称。二进制大对象的例子有图像、视频、pdf文件、文档、文本文件等。Azure blob存储是一种解决方案,可以在云环境中大规模地存储这些类型的对象,以后可以以最佳的性能来访问它们。有多种方法可以访问存储在blob存储中的文件。我们可以使用HTTP或HTTPS从任何地方访问它们。应用程序可以使用Azure REST API、Azure PowerShell、Azure CLI和Azure存储客户端库来访问存储在blob存储中的数据。

让我们了解一下Azure blob存储的结构,实际的blob存储在这里。我在上一篇文章中向大家展示了一步步创建存储账户的过程,这篇文章的第一段中也附有这篇文章。我建议你访问那篇文章以了解存储账户的创建过程。

首先,我们创建一个存储账户,然后在存储账户中创建一个容器,我们也称之为blob容器,最后,我们在新创建的容器中上传blob对象。存储账户就像一个盒子,所有Azure存储服务都可以存储在里面。它为我们在Azure云中的数据提供了一个唯一的命名空间。容器就像一个逻辑目录结构,用来管理和维护所有存储的blob对象。

我们可以使用唯一的端点地址访问存储在容器中的blob对象。Azure blob存储端点地址使用一个特定的模板,可以读作http://StorageAccountName.blob.core.windows.net,其中StorageAccountName是存储账户的名称。我们的存储账户名称是mdsstorage1,所以在这种情况下,它将是mdsstorage1.blob.core.windows.net,一旦你将创建容器,那么容器端点将是StorageAccountName.blob.core.windows.net\ContainerName

以下是创建blob存储的高级步骤,以便将任何文件直接保存到云端。

  • 登录到Azure门户
  • 确定一个要创建blob存储的存储账户。如果你没有任何存储账户,请阅读上面所附的文章来创建一个。
  • 创建一个容器
  • 上传或下载blob数据

一旦你创建了blob存储,你就可以使用Azcopy、Azure Data Factory、Azure Data box和Azure导入-导出服务等多种解决方案将你的数据转移到这个新创建的blob中。

现在,让我们来讨论一下Azure存储的一些属性,这些属性在成本、性能和可访问性方面都非常关键。Azure存储使用一种叫做访问层的属性来控制存储的可访问性、其性能和成本。访问层可以根据数据可访问性的要求来选择。让我们来讨论一下blob存储的各种访问层级。

访问层

我们在Azure存储中存储的数据有多种类型和性质。所有类型的blob数据都有不同的可访问性要求。有时,数据的可访问性会随着时间的推移而降低,而某些类型的blob数据的可访问性则保持不变。对于那些很少被访问或根本没有被访问的数据,或者可访问性随着时间的推移而急剧下降的数据,没有必要支付同样的价格。Azure提供了访问层属性来解决这种情况,以优化可访问性较低的blob上的成本。

如果你使用的是标准的GPv2存储账户,那么在blob存储账户中有3种类型的访问层级。高级存储账户不允许改变访问层级,因为它只有一个访问层级,用于所有高级存储账户。

  • 热层:如果你需要频繁的数据访问(读、写操作)和低延迟,你应该使用热层。大多数事务性工作负载使用该层以获得最佳性能。这个层级将向你收取最高的存储成本和所有3个层级中最低的访问成本。

  • 低温层:该层适用于不频繁的数据访问要求。它也提供良好的性能和耐久性。这一层的价格低于热层的存储成本,高于热层的访问成本。这个层级是备份或不经常使用的文件的理想选择。在这个层级存储数据的最小保留时间是30天。

  • 归档层:该层的存储成本最低,访问成本在所有3个访问层中最高。这适用于您偶尔使用的blob数据,如长期的备份保留,任何您想保留的数据,并且在较长时间内不会使用。存储在这个层级的数据处于离线模式,不能被读取和修改。如果你想使用这些数据,你需要对其进行补水。补水过程可能需要很多时间来为你提供实际的数据,所以这一层的性能非常低。你可以从180天开始在实现层中存储数据。

我们可以在创建存储账户时设置一个访问层,我们也可以在创建后改变它。在账户级别,我们只有访问层和访问层两个选项,而存档访问层只能在blob或对象级别设置,我在本文的倒数第二张图片中进行了演示。如果你将任何blob上传到容器中,它就会从其各自的存储账户中继承访问层,如果你在上传时没有明确地改变它的话。之后我们可以根据我们的要求改变任何对象或blob的访问层。将访问层从热层改为冷层,以实现对你的读写操作收费。

Azure Blob类型

在Azure Blob存储中,有3种数据存储格式。在向存储账户上传或创建任何blob数据时,我们可以根据情况选择blob类型。我在 "创建Azure Blob存储 "一节的第9步中介绍了如何选择blob类型。

  • 块状blob - 顾名思义,块状blob以块的形式存储数据。一个块状blob只能存储50000个块,每个块状blob的大小最多为4000MB。每个块的大小可以与同一块blob中的其他块不同。每个区块都有一个唯一的区块ID。块状数据适用于需要经常访问的大量数据,并具有最佳性能,如视频或音频流网站。

  • Append blob - Append blob也以块的形式存储数据。它也有限制,每个blob可以存储50000个锁,但是Append blob的每个blob大小低于block blob,即4MB。附加块在现有blob数据的末端添加一个新的数据块。在这种类型的blob中,分配给每个块的块ID是不公开的。这适用于需要在现有blob上追加数据的情况。

  • 页面blob - 数据以512字节页面的形式存储在页面blob中,而不是以块的形式。页面blob适用于在高级存储账户类型的Azure blob存储之上为Azure虚拟机创建磁盘子系统,我们可以在其中运行需要频繁读写访问的事务性工作负载。一个页面blob的最大尺寸是8TB。这种blob类型只支持热访问层,不支持冷访问层或存档访问层。

Azure blob存储对SQL Server工作负载的用途

我们也可以将Azure blob存储用于SQL Server工作负载。这种存储最常用的用途是在SQL Server数据库备份中。SQL Server支持将其作为目标存储,使用backup to URL保存其备份文件,或对数据库文件进行文件快照备份。

  • 备份到URL:这是运行SQL Server备份到Azure blob存储的常用方法之一。这是一种手动方法,我们将blob存储的URL作为SQL Server备份脚本或作业中的目标,将备份文件存储在blob存储中。我们可以使用块状blob或页状blob作为blob类型来存储数据库备份文件。不过,在存储SQL Server备份文件时,首选块状blob类型。
  • 在Azure blob存储中托管数据库:我们可以在blob存储中托管SQL Server数据库,以获得文件快照备份的好处。虽然在blob存储中托管数据库的方法不是很流行,但如果你想使用文件快照备份,那么你必须在blob存储中托管数据库文件。
  • 文件快照备份:文件快照备份是用来对存储在Azure blob存储中的数据库文件进行快照。这种类型的备份是用来快速备份和恢复数据库的。它支持完整和交易日志备份,以在时间点恢复中恢复任何数据。
  • SQL Server管理的备份:SQL Server管理的备份是SQL Server数据库的自动备份过程,它可以处理备份时间表,执行并按照定义的保留策略维护备份。最好的部分是SQL Server只在你的系统有低的工作量时才在管理备份模型中运行备份。你只需要定义备份保留和存储位置,其余的所有活动将由托管备份功能来处理。SQL Server托管备份也使用Azure blob存储来存储所有备份文件。备份可以在两个层面进行配置,即SQL Server的数据库和实例层面。
  • 数据库恢复:我们在Azure blob存储中存储备份文件所运行的所有备份也可以直接恢复到SQL Server实例中。你不需要将任何文件复制到本地驱动器上,就可以在SQL Server实例上进行恢复。

Azure blob存储为SQL Server的备份提供了各种好处。

  • 你可以通过选择适当的访问层级来管理备份的存储成本
  • 你需要管理任何用于备份的线下硬件。
  • 它很容易使用。你不需要任何类型的磁盘备份。
  • 你不需要担心空间问题。你将有无限的空间可以使用。
  • 通过利用加密和各种存储级别的冗余,更好地保护数据。你可以通过选择适当的存储冗余从任何地方访问数据。

创建一个Azure BLOB存储

在这里,我将告诉你如何使用Azure门户创建Azure BLOB存储。

  1. 登录到Azure门户。

  2. 如果你已经有了存储账户,请确定你要创建Azure blob存储的存储账户。如果你没有任何存储账户,请阅读上面所附的文章来创建一个。

  3. 在搜索控制台中输入 "存储账户",一旦该选项出现在搜索下拉菜单中,就点击该选项。你可以从这个页面选择你确定的存储账户,或者你可以点击 "**+创建 "**选项,继续创建新的存储账户,正如我在上一篇文章中解释的那样,这篇文章的第一段也附有这个选项。

  4. 我已经创建了一个存储账户mdsstorage1,如下图所示。正如我上面所描述的,我们需要在存储账户中创建一个容器,作为Azure blob存储创建的一部分。我已经强调了我们可以在这个存储账户中创建的所有类型的Azure存储。点击左侧窗格中数据存储选项下的容器,你会在右侧窗格中看到容器视图。

    Azure Storage Account

  5. 点击显示在暗红色矩形中的 "+容器 "选项,就可以创建一个容器,在那里你可以存储你的Blobs。每个存储账户的容器数量没有上限。

    Click at Container

  6. 一旦你点击**"+容器**"选项来创建一个新的容器,就会出现另一个窗口来输入其名称并选择其访问级别。你可以根据你对这个容器的数据可访问性的需求来选择访问级别。我把这个选项保留为默认设置。

    Enter container details

  7. 一旦你点击上述图片中的创建按钮,你的Azure blob容器就会被创建,如下图所示。你可以使用下面新创建的容器的矩形中给出的三个点,以获得多个选项来修改这个容器的属性、访问策略和它的访问级别。

    New Container

  8. 点击这个选项,进入我们将上传所有blob数据的容器内部。你只需要点击上传按钮,它将允许你浏览你存储数据的位置。

    Upload a blob

  9. 一旦你点击上传按钮,下面的屏幕将显示你要上传的对象及其选项,你可以根据自己的意愿进行修改。你可以在下面的屏幕上看到它的访问层和blob类型,你可以点击这些选项来选择合适的blob类型和访问层。

    Enter blob details

  10. 上述文件已经上传到这个容器上,可以使用适当的访问策略进行访问。你还可以通过访问最后一栏中为该文件给出的三个点来查看其属性和修改细节。如果你想下载这个文件,你也可以点击三个点,然后从下拉菜单中点击下载选项。

image.png

我们可以使用它的URL直接访问这个上传的文件。点击上图中的 "属性"选项,显示该文件的所有属性。你可以看到一个暗红色的箭头显示在其URL旁边。你可以复制这个链接并使用它来访问这个文件。

image.png 11. 我已经向你展示了如何创建Azure blob存储以及如何上传和访问该文件。你也可以通过访问上图左侧窗格中的设置选项下的属性选项卡来获取该容器的链接。在这里,你会得到所有的属性,以及这个容器的URL,可以用来访问这个数据。

container properties to get container URL

总结

Azure blob存储是一种经济高效的解决方案,可以在云环境中存储大量的非结构化数据。它还提供了各种访问层级,以根据数据的可访问性来管理存储成本。blob存储也被用于SQL Server工作负载,以存储数据库文件或其备份文件。