12

尝试在天蓝色表存储中插入记录时出现异常“属性值大于表服务允许的值”。

下面是我的表结构,字符串 PartitionKey,String RowKey,string Id , string site, string name , byte[ ] content,
public DateTime createdtime

我正在尝试在内容字段中保存 83755 字节数组( 82KB ),其他字段最多为 35 个字符。

谁能告诉我天蓝色存储表的最大行大小是多少?

以下是我提到的 url .. 那里提到该行最大可以有 1MB。但我的不超过 100 KB。

关联

谢谢,

戈皮纳特

4

3 回答 3

15

是的,每行最多可以有 1MB。但是,每个字节数组属性或字符串属性限制为 64K。有关每种数据类型的详细信息,请参阅此 MSDN 参考

于 2010-11-16T14:15:26.510 回答
5

我建议查看Lokad.Cloud for Azure框架(开源)。有一个经过生产测试的代码,用于将大型实体序列化到表存储中,限制为 960KB(属性拆分和管理由框架处理)

这是FatEntities wiki的示例用法

// TODO: change your connection string here
var providers = Standalone.CreateProviders(
   "DefaultEndpointsProtocol=https;AccountName=;AccountKey=");

// 'books' is the name of the table
var books = new CloudTable<Book>(providers.TableStorage, "books");

var potterBook = new Book 
   { Author = "J. K. Rowling", Title = "Harry Potter" };

var poemsBook = new Book 
   { Author = "John Keats", Title = "Complete Poems" };

// inserting (or updating record in Table Storage)
books.Upsert(new[]
    {
        new CloudEntity<Book> {
            PartitionKey = "UK", RowRey = "potter", Value = potterBook},
        new CloudEntity<Book> {
            PartitionKey = "UK", RowRey = "poems", Value = poemsBook}
    });

// reading from table
foreach(var entity in books.Get())
{
    Console.WriteLine("{0} by {1} in partition '{2}' and rowkey '{3}'",
        entity.Value.Title, entity.Value.Author, 
        entity.PartitionKey, entity.RowRey);
}

Console.WriteLine("Press enter to exit.");
Console.ReadLine();
于 2010-11-17T08:35:17.240 回答
2

2017 年 5 月,Azure 推出了Premium Table,它实际上利用了 Azure Cosmos DB(以前称为 Azure DocumentDB)和 Azure Table API。

高级表对每个实体(行)有相同的 1MB 限制,但它允许单个属性最多 1MB(没有 64K 限制)。

此外,它允许在专用 RU 内无限数量的属性(Azure 表:255)和属性名称长度(Azure 表:255)。Request Unit 是 Cosmos DB 的资源消耗单位。

  • 备注:Premium Table 与 Premium Storage 不同,Premium Storage不支持 Table
于 2017-05-17T03:05:46.320 回答