BackupToContainer 创建了一个Block Blob来保存结果集。每个Blob中的Block都包含一个批次的集合。每个批次都包含了一些实体数据,这些实体数据可以作为单独实体组处理的一部分,也就是,批次命令。这意味着,相同批次的所有实体数据必须具备相同的PartitionKey值。实体数据作为一个实体要素保存下来,它是OData协议用来发送实体数据的原始格式。Blob中的xml看上去和下面的相似,即每个Block部分都是单独存在的。
<?xml version="1.0" encoding="utf-8"?>
<Block>
<Batch>
<entry>...</entry>
<entry>...</entry>
<entry>...</entry>
</Batch>
<Batch>
<entry>...</entry>
<entry>...</entry>
</Batch>
</Block>
<?xml version="1.0" encoding="utf-8"?>
<Block>
<Batch>
<entry>...</entry>
<entry>...</entry>
</Batch>
<Batch>
<entry>...</entry>
<entry>...</entry>
</Batch>
</Block>
由于每个模块都是排列范围很好的xml,所以它可以让我们一次读取模块,然后再保存进程中对其进行处理。
要想创建这一结构,需要先定义一些类。
● State 类—迭代实体数据的时候保留全局状态。它会追踪那些被序列化到内存数据流的数据大小。它还控制了实体迭代。
● Batch类——是一组可走为单独处理批次的一部分的实体数据。它从查询中读取实体数据,只要实体数量少于100,实体数据就具备相同的拆分密钥,而我们不需要超过数据大小的限制,只需继续讲实体数据批量处理即可。
● Block类——是一个单独的模块要素,它保存了一组批次命令。一个模块拥有一个数据大小限制。而一个模块最大是4MB,但是我们将大小设置为小于4MB,因为当分批请求发出后,OData会请求添加更多xml标签,就要考虑到过载问题。
● Blob类——是一个将被保存在单独Blob中的模块列表。我们将每个 Blob备份设置为20个模块,目的是让备份的简单并列恢复到Blob级别。虽然可以轻松将其更改到更大值,但是其值必须小于50000个模块,因为这是存储系统设置的Block Blob集限制。Blob的名称可能是/__,而它会被放置在与表格同名但层级较低的装置中。
● 完整的Uri应该是://__
○装置名称——表格的下级名称。
○备份ID——当备份开启时,它是由时间戳形成的独特ID。格式是“yy-MM-dd-HH-mm-ss”
○最小范围——查询使用的最小密钥。如果最小密钥没有绑定在查询范围中,那么“null”为默认值。
○最大范围——查询使用的最大密钥。如果最大密钥没有绑定在查询范围中,那么“null”为默认值。 9 7 3 1 2 3 4 5 6 4 8 :
本文来源:不详 作者:佚名