For faster navigation, this Iframe is preloading the Wikiwand page for Microsoft Azure 储存体.

Microsoft Azure 储存体

Azure 储存服务 (Azure Storage) 是 Microsoft Azure 平台内实作的资料储存服务,目前为 Azure 平台服务的主要资料保存地。

Azure 储存服务提供了四种不同格式的储存体,用来提供给Azure上运行的应用程序储存资料使用。依据不同的储存格式会有不同的限制,因为这些储存服务都是以分散式巨量储存(Distributed Mass Storage)为核心概念所设计出来的,为了要达成快速在分散式储存空间中储存与管理资料(还包含高可用度的赘余储存管理),微软有在资料的储存上做一些限制。

不论是哪一种储存服务,Azure都有REST API[1],并符合Simple Cloud的标准[2]

Azure 储存服务提供 99.9% 的服务水准,而只读式备援的只读端 (备援端) 为 99.99%。

Blob

[编辑]

Blob (大型二进制物件)资料是用来储存像是档案,图片,视讯档,可执行档,压缩档等二进制格式的档案,基本上它的储存单位就是档案,为了要让BLOB的功能应用更宽广,微软也在 Blob 服务上开发了内容传递网络(Content Delivery Network)的服务,让 Blob 可以作为大容量的档案或资料储存与供应的地方,以支持类似YouTube这样的大型Web应用程序的服务。

Blob 依照性质分为两种:

  • Block Blob(区块型 Blob 储存体),这类的储存以4MB为一个区块单位 (可依需调整,范围为 16KB~4MB),单一档案最大可以储存 200GB,且区块不会连续储存,可能会打散到不同的储存服务器中存放,当应用程序要求时,会依照档案的Key以及区块由储存区提取资料。另外,区块在储存时会经过一道认可程序,以让应用程序决定是否要重新传送。
  • Page Blob(分页型 Blob 储存体),它会在储存区中划分一个连续的区域供应用程序存放资料,它本身可以视为一个大型的VHD(虚拟机器磁盘),在Page Blob 的资料写入会直接认可。而基于Page Blob 的特性,微软特别在Page Blob 上提供了一组将Page Blob 虚拟成磁盘的功能,称为Azure Drive(研发代号为XDrive),它能够支援NTFS API,也就是说应用程序可以利用现有的档案管理API(包含System.IO的类别)来存取Azure Drive中的资料夹与档案资料,并且这些资料会保存在Azure资料中心内。

Blob 服务由 Blob 本身以及其收纳容器(Container)构成,容器可视为一般本机上的资料夹。而容器和 Blob 都支援额外的Metadata设定,这些Metadata会附挂在HTTP Header中传输给用户端,每一个Metadata的大小限制为8KB。Blob 也支援权限管理的功能,透过Shared Access Signature可设定 Blob 或Container的存取权限与有效期限等。

private void EnsureContainerExists(
{
    var container = GetContainer();
    container.CreateIfNotExist();

    var permissions = container.GetPermissions();
    permissions.PublicAccess = BlobContainerPublicAccessType.Container;
    container.SetPermissions(permissions);
}

private CloudBlobContainer GetContainer()
{
    var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
    var client = account.CreateCloudBlobClient();

    return client.GetContainerReference(RoleEnvironment.GetConfigurationSettingValue("ContainerName"));
}

Table

[编辑]

Table(表格)是给具结构化资料的应用程序储存与管理的一种储存服务,它在Azure储存区中会以Key-Value键值对方式储存,并且由Partition来切割在Azure储存区的储存位置,它实际的资料是XML,透过REST API呼叫时,会需要依据SDK上的说明,自行建置XML的要求与解析回应的资料,但若是.NET Framework的开发人员,在Azure SDK中提供的Microsoft.WindowsAzure.StorageClient命名空间就有提供辅助的API以及类别,将这件事在API中处理掉了。SDK提供的辅助组件所应用的技术是WCF Data Services,因此若对WCF Data Services熟悉的开发人员,会很容易的上手Table储存的开发。

namespace TableExample
{
    public class Contact : TableServiceEntity
    {
        public string Name { get; set; }
        public string Address { get; set; }
        public string Phone { get; set; }
        public string Cellphone { get; set; }

        public Contact()
        {
            base.PartitionKey = "ContactTable";
            base.RowKey = Guid.NewGuid().ToString();
        }
    }
}

虽然Table可以储存结构化的资料,但它并不是关联性数据库,所以像是join,汇总函数等都无法使用,要由开发人员另外处理。

Queue

[编辑]

Queue(伫列)是一种先到先服务(First-Come, First-Serve),或称为FIFO(先入先出)的储存服务,它可以允许应用程序将讯息储存到伫列中排队,然后由负责处理的应用程序(通常是Worker)由伫列提取讯息并处理以后,将讯息由伫列中移除。讯息可以是字串或是最长8KB的二进制资料,伫列经常会作为跨执行个体通讯以及工作切割通知的讯息传递之用。

protected void cmdAddQueue_Clickobject sender, EventArgs e
{
    CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString";
    CloudQueueClient queueClient = account.CreateCloudQueueClient();
    CloudQueue queue = queueClient.GetQueueReference("theaterseatorders");

    queue.CreateIfNotExist();

    queue.AddMessage(new CloudQueueMessage("SEATNUM=1-1,EMAIL=test@test.com"));
    queue = null;
}

File

[编辑]

档案服务是 Azure 近期 (2014) 才加入的新规资料储存服务,它也是用来储存二进制档案,但它和 Blob 不同的是 Blob 是 Internet-facing (面向 Internet) 的档案储存服务,档案服务则是给同一区域内的 Azure 服务 (如虚拟机器服务) 共享档案资源的服务,它使用 SMB 2.1 (推出时) 与 SMB 3.0 (GA时) 网络芳邻的方式简化存取档案的工作,同时也可以支援由资料中心外部的网络芳邻连线。

备援

[编辑]

自v1.5版起的 Azure Storage 开始支援异地备援 (Geo-replication)的功能[3],只要应用程序将资料传送到TABLE或BLOB储存,Azure会自动将资料往邻近的资料中心传递,以备援储存服务,当主要的资料中心发生断线或是无法提供服务时,Azure核心中的DNS Service会自动将要求导向到备援的资料中心继续提供服务。

  • 异地备援所产生的网络与储存成本由微软自行吸收,不另计费。
  • 异地备援的工作是异步且自动化,应用程序无需做任何修改。
  • 异地备援可以透过联系Windows Azure支援团队的方式停用。

目前 Azure 储存服务支援下列备援类型:

  • LRS (Local Redundant Service): 在区域内将资料产生三份复本储存。
  • ZRS (Zone Redundant Service): 在区域内除了原本的三份复本之外,再额外产生三份复本,此模式只支援 Blob 格式。
  • GRS (Geo-Replication Service): 在已配对的资料中心间异地备援,两边都产生三份的复本。
  • RA-GRS (Read-Only Geo-Replication Service): 在已配对的资料中心间异地备援,但另一边的储存可读取 (但只读)。

凉储存

[编辑]

凉储存 (Cool Storage) 是微软在 Build 2016 研讨会中所发表的新储存功能,它可以将资料储存在较持久的储存装置,并且利用资料保存技术将储存成本压低,以适用于长时间储存又不需经常存取的资料 (经常存取的称为热资料),凉储存仅适用于区块式 Blob 储存体 (Block Blob),每单位 GB 的储存成本比一般储存功能便宜约 50%,但由凉储存将资料取出或存入时除本身的交易成本外,尚需要支付额外每 GB 单位的取出与写入成本 (Data Retrival/Data Write),取出成本比写入成本要高。

参考

[编辑]
  1. ^ Windows Azure Storage Service REST API References. [2016-03-17]. (原始内容存档于2016-11-13). 
  2. ^ Simple Cloud API. [2016-03-17]. (原始内容存档于2012-02-09). 
  3. ^ Inside Windows Azure storage: what's new and under the hood deep dive @ BUILD WINDOWS. [2016-03-17]. (原始内容存档于2020-11-27). 
{{bottomLinkPreText}} {{bottomLinkText}}
Microsoft Azure 储存体
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?