Получение исключения - "Значение свойства больше, чем разрешено службой таблицы", каков максимальный размер строки в лазурной таблице хранения

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

Follwing - это моя структура таблицы, строка PartitionKey, String RowKey, строка Id, строковый сайт, имя строки, byte [] content,
public DateTime createdtime

И я пытаюсь сохранить массив 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

Спасибо,

Гопинатх

Ответ 1

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

Ответ 2

Я рекомендую проверить схему Lokad.Cloud для Azure (Open Source). Существует тестовый код для сериализации больших объектов в хранилище таблиц с предел 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();

Ответ 3

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

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

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

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