Blob用来存储大量的数据,例如图片文件,视频文件,文档文件,代码文件等。每个文件都是一个Blob。
Blob可以通过URL来访问。Blob的访问URL格式如下
http(s)://<storage account name>.blob.core.windows.net/<container>/<blob name>
例如
http://myaccount.blob.core.windows.net/pictures/mypicture.jpg
一个Azure Storage帐户可以包含任何多个Container。一个Container可以包含任意多个Blob。
Container没有存储限制。每个Storage帐户的存储有限制。
Blob的URL有时看起来有一个层次。例如下面的URL,看起来好像是pictures目录下包含seattle目录。
seattle目录下包含spaceneedle.jpg。
http://myaccount.blob.core.windows.net/pictures/trips/seattle/spaceneedle.jpg
实际上不存在层次存储结构,是在pictures容器下包含一个叫”trips/seattle/spaceneedle.jpg”的Blob。
下图是Azure Storage的Blob存储示意图
在安全方面,可以给Container或者一个单独的Blob设置访问权限。要访问被设置安全访问权限的Blob需要
安全key。
Windows Azure提供了一个内容分发网络(Content Delivery Network:CDN)。CDN可以让经常访问的blob
在物理部署上里应用程序更近一些。例如,如果一个视频文件经常被亚洲的用户访问的,CDN会把这个blob移到
位于亚洲的服务器上。
CDN服务是收费的。
Blob 存储结构为两种模式Block Blobs和Page Blobs
Block Blobs模式
每个BlockBlob最大可以存储200G的文件。每个Block被划分为每个4M大小的数据槽(data block)。
Block Blobs被优化来完成流上传。特别适应视频,图片等格式的大文件。
例如如果你想上传一个10G的文件,可以把文件分为多个大小为4M的Block,通过PutBlock操作分别上传每个块。
为了提高上传速度,可以多个线程同时上传不同的块。当所有的块上传完毕,通过PutBlockList把所有已经上传
的快组成一个可读的blob。
示意图
Page Blocks模式
Page Blocks对随机存储进行了优化。
PageBlocks最大可以到1T,Page Blocks由一个页面队列组成。每个页面大小为512bytes。
因为每个页面大小为512,所以写入操作PutPage必须注意要页对其。写入地址与起始地址的Offsets必须是512的倍数。
但是ReadPage没有类似的页对齐要求。
如果你有一个1G大小的文件,可以很容易的修改1K的数据。
示意图