WindowsAzure存储中备份模拟运算表

来源:计算机等级考试    发布时间:2012-08-27    计算机等级考试视频    评论

  如果Azure存储以及保存了多个数据副本,那么应用应该在Windows Azure存储中备份数据吗?为了维持商业的连续性,有必要对数据实施保护,使其免受应用错误的干扰,因为这些错误可能会导致数据被错误地修改。

  如果应用层级出现问题,那么这些错误紧随Windows上保存的Azure存储副本。因此,要恢复正确数据,需要保留一个备份。如今,许多应用程序开发员都已经实施了备份策略。而本文涉及的则是模拟运算表备份策略。

  欲备份模拟运算表,应该对运算表进行迭代,然后搜索每个表格以便将实体数据复制到BLOB中或是不同的目的表格中。可对实体组进行处理以加快从Blob中恢复实体数据的进程。注意,本文中的示例是一个运算表的完整备份。

  运算表备份

  这里我们要了解一个简单的完整备份方案。该策略会输入系列表格,每个表格都有一些可分割表格搜索的密钥。这些密钥会被转化为若干范围,而单独备份这些范围可以提供整个表格的备份。将表格备份打乱成一定的排列范围,如此,就可以平行备份表格。 TableKeyInfo类也可以纳入拆分密钥的逻辑中,如下所示:

public class TableKeysInfo
{
    private List keyList = new List();
 
    ///
    /// The table to backup
    ///
    public string TableName { get; set; }
 
    public TableKeysInfo(string tableName, string[] keys)
    {
        if (tableName == null)
        {
            throw new ArgumentNullException("tableName");
        }
 
        if (keys == null)
        {
            throw new ArgumentNullException("keys");
        }
 
 
        this.TableName = tableName;
        // sort the keys
        Array.Sort(keys, StringComparer.InvariantCulture);
 
        // split key list {A, M, X} into {[null-A), [A-M), [M-X), [X-null)}
        this.keyList.Add(new PartitionKeyRange(null, keys.Length > 0 ? keys[0] : null));
        for (int i = 1; i < keys.Length; i++)
        {
                this.keyList.Add(new PartitionKeyRange(keys[i - 1], keys[i]));
        }
 
        if (keys.Length > 0)
        {
            this.keyList.Add(new PartitionKeyRange(keys[keys.Length - 1], null));
        }
    }
   
    ///
    /// The ranges of keys that will cover the entire table
    ///
    internal IEnumerable KeyRangeList
    {
        get
        {
            return this.keyList.AsEnumerable();
        }
    }
}

上一页123456下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答