Получение исключения - «Значение свойства больше, чем разрешено табличной службой», каков максимальный размер строки в таблице хранения Azure. - PullRequest
11 голосов
/ 16 ноября 2010

Получение исключения «Значение свойства больше, чем разрешено табличной службой» при попытке вставить запись в хранилище таблицы Azure.

Follwing - это структура моего стола, string PartitionKey, String RowKey, идентификатор строки, строковый сайт, имя строки, содержимое байта [],
public DateTime созданный timetime

И я пытаюсь сохранить массив 83755 байт (82 КБ) в поле содержимого, а в других полях не более 35 символов.

Может кто-нибудь сказать, какой максимальный размер строки для таблицы хранения Azure?

Ниже приведен URL-адрес, на который я ссылался .. там упоминается, что строка может иметь максимум 1 МБ. Но мой не превышает 100 КБ.

http://blogs.msdn.com/b/jnak/archive/2010/01/06/walkthrough-windows-azure-table-storage-nov-2009-and-later.aspx

Спасибо

Gopinath

Ответы [ 3 ]

13 голосов
/ 16 ноября 2010

Да, каждая строка может иметь до 1 МБ.Однако каждое свойство байтового массива или строковое свойство ограничено 64 КБ.См. эту ссылку на MSDN для подробностей по каждому типу данных.

5 голосов
/ 17 ноября 2010

Рекомендую проверить Lokad.Cloud для Azure Framework (с открытым исходным кодом). Имеется проверенный на практике код для сериализации больших объектов в табличное хранилище с пределом 960 КБ (разделение свойств и управление ими выполняется инфраструктурой)

Вот пример использования из 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();
2 голосов
/ 17 мая 2017

В мае 2017 года Azure представила Премиум-таблица , которая фактически использует Azure Cosmos DB (ранее называвшуюся Azure DocumentDB) с API-интерфейсом таблицы Azure.

Премиум-таблица имеет одинаковое ограничение в 1 МБ для каждого объекта (строка), но допускается до 1 МБ для одного свойства (без ограничения в 64 КБ).

Кроме того, он допускает неограниченное количество свойств (таблица Azure: 255) и длину имени свойства (таблица Azure: 255) в пределах выделенного RU.Блок запроса - это единица потребления ресурсов для БД Cosmos.

  • Примечания: Премиум-таблица отличается от Премиум-хранилище , которая не поддерживает Таблицу
...