保护模拟运算表并使其不受应用错误的影响
2010-06-21 00:00:00 来源:WEB开发网● 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”为默认值。
有了上面的类,就很容易将Blob序列化了。只要有一个我们还未迭代的实体数据,就可以将实体分批为若干模块。每个模块类都会写到Azure Blob Block,而我们也会重设MemoryStream,因为下一个实体数据将被写入一个新模块中的新批次。当模块数已经达到极限,就要援引写有所有模块 ID的PutBlockList,并为新的模块创建一个新的Blob。如果我们看到至少一个实体数据,BackupToBlock 也只会将写入内存流的数据就保存在模块中。
更多精彩
赞助商链接