【问题标题】:How to embed documents in Azure Table Storage如何在 Azure 表存储中嵌入文档
【发布时间】:2011-12-25 20:00:51
【问题描述】:

我希望能够使用如下结构将具有子对象的对象存储在 Azure 表存储中:

public class AzureTestDocument : TableServiceEntity
{
    public AzureTestDocument(int counter)
        : base("_default", counter.ToString())
    {
        Counter = counter;
        Child = new AzureTestChildDocument(counter);
    }

    public int Counter { get; set; }
}

public class AzureTestChildDocument
{
    public AzureTestChildDocument(int counter)
    {
        Counter = counter;
    }

    public int Counter { get; set; }
}

如果我删除子文档,则保存父文档可以正常工作。保存这样的结构会导致“请求输入之一无效”异常。做一点谷歌搜索发现了这篇文章about supported types,这可能意味着除了支持的简短列表之外,您无法嵌入任何类型。

请澄清是否是这种情况,或指出我可能遗漏的内容。

【问题讨论】:

    标签: azure nosql azure-storage azure-table-storage


    【解决方案1】:

    Azure 表存储支持保存仅包含原始属性的实体。任何嵌套的子对象都需要单独保存:

    您可以将子对象序列化为字符串并将这些字符串保存为属性。

    或者,您可以将这些子对象保存为 Azure 表中的单独行

    或者,如果您正在处理文档,您可以将这些对象保存在 Azure BLOB 存储中。

    【讨论】:

    • 您可以只存储字节,而不是序列化为字符串,因为支持字节数组。如果它大于 64k,那么将文档保存在 blob 存储中将是可行的方法。
    • 表实体(包括所有属性)的最大大小为 1 MB。但是 Azure 表也支持 byte[] 数据类型,所以理论上可以在那里“嵌入”任何类型的文档。有关 Azure 表的更多信息:msdn.microsoft.com/en-us/library/windowsazure/dd179338.aspx
    • 我偶然发现了FatEntities,这似乎是另一个帮助包含附加数据的工具。感谢您的澄清!
    猜你喜欢
    • 2013-08-20
    • 2021-10-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多