Часто задаваемые вопросы об API для таблицы в Azure Cosmos DB

ПРИМЕНИМО К: Таблица

Azure Cosmos DB для таблицы доступен в портал Azure Сначала необходимо зарегистрироваться для получения подписки Azure. После регистрации вы можете добавить учетную запись Azure Cosmos DB для таблиц в подписку Azure, а затем добавить таблицы в свою учетную запись. Поддерживаемые языки и связанные краткие руководства см. в статье Введение в Azure Cosmos DB для таблицы.

API для таблиц в Azure Cosmos DB и хранилище таблиц Azure

Где API для таблицы не идентично поведению хранилища таблиц Azure?

Существуют некоторые различия в поведении, которые следует учитывать пользователям, поступающим из хранилища таблиц Azure, которые хотят создавать таблицы с помощью Azure Cosmos DB для таблиц:

  • Azure Cosmos DB для таблицы использует модель зарезервированной емкости для обеспечения гарантированной производительности, но это означает, что она оплачивается сразу после создания таблицы, даже если емкость не используется. При использовании хранилища таблиц Azure вы платите только за используемую емкость. Это помогает объяснить, почему API для таблицы может предлагать соглашение об уровне обслуживания для чтения 10 мс и 15 мс на запись на 99-м процентиле, в то время как хранилище таблиц Azure предлагает 10-секундное соглашение об уровне обслуживания. Но, как следствие, использование API для таблиц таблиц, даже пустых таблиц без каких-либо запросов, стоить денег, чтобы обеспечить доступность емкости для обработки любых запросов к ним в рамках SLA, предлагаемого Azure Cosmos DB.

  • Результаты запроса, возвращаемые API для таблицы, не сортируются в порядке ключа секции или ключа строки, как в хранилище таблиц Azure.

  • Ключи строк могут содержать не более 255 байт.

  • Пакеты могут содержать не более 2 МБ.

  • В настоящий момент CORS не поддерживается.

  • В именах таблиц в хранилище таблиц Azure регистр не учитывается, но они находятся в Azure Cosmos DB для таблицы.

  • Некоторые внутренние форматы кодирования информации Azure Cosmos DB, например двоичные поля, в настоящее время не так эффективны, как хотелось бы. Поэтому на размер данных могут накладываться неожиданные ограничения. Например, сейчас невозможно использовать полную 1-мегабайтную сущность таблицы для хранения двоичных данных, так как кодировка увеличивает размер данных.

  • Имена IDсвойств сущностей , id, rid, etagи ResourceId зарезервированы для использования Cosmos DB и в настоящее время не поддерживаются.

  • Значение TakeCount для TableQuery не ограничено 1000.

  • С точки зрения REST API следующие конечные точки и параметры запросов поддерживаются хранилищем таблиц Azure, но не поддерживаются Azure Cosmos DB для таблиц:

    Методы REST Конечная точка или параметр запроса REST URL-адреса документов Объяснение Поддерживается в Хранилище таблиц Поддерживается в API для таблиц
    GET, PUT /?restype=service@comp=properties Set Table Service Properties (Настройка свойств службы таблиц) и Get Table Service Properties (Получение свойств службы таблиц) Эта конечная точка используется для настройки правил CORS, конфигурации аналитики хранилища и настроек ведения журналов. В настоящее время CORS не поддерживается, а аналитика и ведение журналов обрабатываются в базе данных Azure Cosmos и в таблицах хранения Azure по-разному. Да Нет
    OPTIONS /<table-resource-name> Preflight Table Request (Предварительные запросы таблиц) Этот метод является частью CORS и сейчас не поддерживается в Azure Cosmos DB. Да Нет
    GET /?restype=service@comp=stats Get Table Service Stats (Получение статистики службы таблиц) Предоставляет сведения о том, как быстро данные копируются между первичными и вторичными базами данных. Это не требуется в Azure Cosmos DB, так как репликация является частью операций записи. Да Нет
    GET, PUT /mytable?comp=acl Get Table ACL (Получение ACL таблиц) и Set Table ACL (Настройка ACL таблиц) Этот метод получает и устанавливает хранимые политики доступа, используемые для управления подписями коллективного доступа (SAS). Да Нет
  • Azure Cosmos DB для таблицы поддерживает только формат JSON, но не ATOM.

  • Сейчас Azure Cosmos DB не поддерживает некоторые классы и методы, предусмотренные для пакета SDK для .NET.

    Class Неподдерживаемый метод
    CloudTableClient *ServiceProperties*
    *ServiceStats*
    CloudTable SetPermissions*
    GetPermissions*
    TableServiceContext * (не рекомендуется использовать этот класс)
    TableServiceEntity " "
    TableServiceExtensions " "
    TableServiceQuery " "

Другие часто задаваемые вопросы

Нужен ли новый пакет SDK для использования API для таблицы?

Нет, имеющиеся пакеты SDK службы хранилища должны по-прежнему работать. Однако мы рекомендуем всегда получать последние версии пакетов SDK для обеспечения оптимальной поддержки и (в большинстве случаев) высокой производительности. Список доступных языков см. в статье Общие сведения об Azure Cosmos DB для таблицы.

Какая строка подключения требуется использовать для подключения к API для таблицы?

Используйте следующую строку подключения:

DefaultEndpointsProtocol=https;AccountName=<AccountNamefromCosmosDB;AccountKey=<FromKeysPaneofCosmosDB>;TableEndpoint=https://<AccountName>.table.cosmosdb.azure.com

Вы можете получить строку подключения на странице строки подключения на портале Azure.

Разделы справки переопределить параметры конфигурации для параметров запроса в пакете SDK для .NET для API для таблицы?

Некоторые параметры обрабатываются методом CreateCloudTableClient, а другие — с помощью app.config в разделе appSettings в клиентском приложении. Сведения о параметрах конфигурации см. в описании возможностей Azure Cosmos DB.

Изменилось ли что-либо для клиентов, использующих существующий пакет SDK для хранилища таблиц Azure?

Нет. Для существующих или новых клиентов, использующих имеющиеся пакеты SDK для хранилища таблиц Azure, никаких изменений не предусмотрено.

Разделы справки просматривать данные таблицы, хранящиеся в Azure Cosmos DB, для использования с API для таблиц?

Чтобы просмотреть данные, используйте портал Azure. Вы также можете использовать API для кода таблицы или средства, упомянутые в следующем ответе.

Какие средства работают с API для таблиц?

Вы можете использовать обозреватель хранилищ Azure.

Средства с гибкостью для получения строки подключения в формате, указанном ранее, могут поддерживать новый API для таблицы. Вы можете ознакомиться со списком средств для таблицы в статье Клиентские инструменты службы хранилища Azure.

Контролируется ли параллелизм операций?

Да, оптимистическая блокировка операций обеспечивается за счет использования механизма ETag.

Поддерживается ли для сущностей модель запросов OData?

Да, API для таблицы поддерживает запросы OData и запросы LINQ.

Можно ли подключиться к хранилищу таблиц Azure и Azure Cosmos DB для таблицы параллельно в одном приложении?

Да, подключение возможно, если вы создадите два отдельных экземпляра CloudTableClient, каждый из которых указывает на свой собственный URI в строке подключения.

Как переместить имеющееся приложение хранилища таблиц Azure в предложение?

Поддерживается AzCopy.

Как выполняется расширение объема хранилища для этой службы, если исходный объем данных (например, "n" ГБ) со временем увеличится до 1 ТБ?

Azure Cosmos DB предоставляет неограниченный объем хранилища за счет горизонтального масштабирования. Увеличение объема хранилища осуществляется службой по мере необходимости.

Разделы справки отслеживать api для таблиц?

Вы можете использовать панель API для метрик таблиц для мониторинга запросов и использования хранилища.

Как рассчитать необходимую пропускную способность?

Вы можете использовать калькулятор емкости, чтобы рассчитать пропускную способность таблиц, необходимую для выполнения операций. Дополнительные сведения см. на странице оценки единиц запросов и хранилища данных. Как правило сущность можно показать как JSON-файл, задав значения для операций.

Можно ли использовать API для пакета SDK для таблиц локально с эмулятором?

На данный момент нет.

Может ли существующее приложение работать с API для таблицы?

Да, поддерживается такой же API.

Нужно ли переносить существующие приложения хранилища таблиц Azure в пакет SDK, если я не хочу использовать API для функций таблиц?

Нет, вы можете создавать и использовать существующие ресурсы хранилища таблиц Azure, не прерывая работу. Однако если вы не используете API для таблицы, вы не сможете воспользоваться автоматическим индексом, дополнительным параметром согласованности или глобальным распределением.

Разделы справки добавить репликацию данных в API для таблицы в нескольких регионах Azure?

Вы можете использовать параметры глобальной репликации портала Azure Cosmos DB для добавления регионов, поддерживаемых приложением. Чтобы разработать глобально распределенное приложение, вы также должны добавить приложение, присвоив ключу PreferredLocation значение локального региона. Так вы сможете обеспечить низкую задержку операций чтения.

Разделы справки изменить основной регион записи для учетной записи в API для таблицы?

Чтобы добавить регион, а затем выполнить отработку отказа в нужный регион, вы можете использовать панель портала глобальной репликации службы Azure Cosmos DB. См. дополнительные сведения о разработке с использованием учетных записей Azure Cosmos DB с поддержкой нескольких регионов.

Как настроить предпочитаемые регионы для чтения, чтобы обеспечить низкую задержку при распределении данных?

Чтобы облегчить чтение из локального расположения, используйте ключ PreferredLocation в файле app.config. Для существующих приложений API для таблицы выдает ошибку, если задан параметр LocationMode. Удалите этот код, так как API для таблицы извлекает эти сведения из файла app.config.

Как следует думать об уровнях согласованности в API для таблицы?

В Azure Cosmos DB реализованы продуманные компромиссные сочетания показателей согласованности, доступности и задержки. Azure Cosmos DB предлагает пять уровней согласованности API для разработчиков таблиц, поэтому вы можете выбрать правильную модель согласованности на уровне таблицы и выполнять отдельные запросы при запросе данных. Подключаемый клиент может выбирать уровень согласованности. Вы можете изменить уровень с помощью аргумента consistencyLevel для CreateCloudTableClient.

API для таблиц предоставляет операции чтения с низкой задержкой, а по умолчанию — "Чтение собственных записей" с согласованностью с ограниченным устареванием. Дополнительные сведения см. в статье Настраиваемые уровни согласованности данных в DocumentDB.

По умолчанию хранилище таблиц Azure обеспечивает строгую согласованность в пределах региона и итоговую согласованность в дополнительных расположениях.

Обеспечивает ли Azure Cosmos DB для таблицы больше уровней согласованности, чем хранилище таблиц Azure?

Да, см. дополнительные сведения о распределенном характере Azure Cosmos DB в описании уровней согласованности. Так как уровни согласованности подкреплены гарантийными обязательствами, вы можете больше не беспокоиться об этом.

Сколько времени занимает репликация данных, когда включено глобальное распределение?

Azure Cosmos DB надежно фиксирует данные в локальном регионе, отправляя их в другие регионы за миллисекунды. Такая репликация зависит только от времени кругового пути центра обработки данных. См. дополнительные сведения о возможностях глобально распределенной службы базы данных Azure Cosmos DB.

Можно ли изменить уровень согласованности запросов на чтение?

В Azure Cosmos DB можно указать уровень согласованности на уровне контейнера (в таблице). Пакет SDK для .NET также позволяет указать этот уровень, изменив значение ключа TableConsistencyLevel в файле app.config. Вы можете выбрать строгую согласованность, согласованность с ограниченным устареванием, согласованность на уровне сеанса, согласованность префиксов и итоговую согласованность. См. дополнительные сведения о настраиваемых уровнях согласованности данных в Azure Cosmos DB. Основная идея состоит в том, что уровень согласованности для запросов не может быть выше уровня согласованности для таблицы. Например, вы не можете выбрать для таблицы итоговую согласованность, а для запросов — строгую согласованность.

Как API для таблицы обрабатывает отработку отказа в случае сбоя региона?

API для таблицы использует глобально распределенную платформу Azure Cosmos DB. Чтобы обеспечить нормальную работу приложения при простое центра обработки данных, вам нужно использовать несколько регионов для учетной записи на портале Azure Cosmos DB. См. дополнительные сведения о разработке с использованием учетных записей Azure Cosmos DB с поддержкой нескольких регионов. Вы можете задать приоритет регионов. Дополнительные сведения см. в статье Автоматическая отработка отказа между регионами для обеспечения непрерывности бизнес-процессов в DocumentDB.

Вы можете не только добавить любое нужное число регионов для учетной записи, но и управлять тем, в какой регион будет выполняться отработка отказа, настроив приоритет для этой процедуры. Чтобы использовать базу данных, вам также нужно предоставить приложение. В это время ваши клиенты смогут работать без простоя. В отличие от других, последняя версия клиентского пакета SDK для .NET автоматически обнаруживает регион. То есть он может определять регион, который стал недоступен, и автоматически выполнять отработку отказа в другой регион.

Включен ли API для таблиц для резервного копирования?

Да, API для таблиц использует платформу Azure Cosmos DB для резервного копирования. Резервные копии создаются автоматически. См. дополнительные сведения об оперативном резервном копировании и восстановлении с помощью Azure Cosmos DB.

Индексировать ли API для таблицы все атрибуты сущности по умолчанию?

Да, по умолчанию индексируются все атрибуты сущности. Дополнительные сведения см. в статье Политика индексирования в Azure Cosmos DB.

Значит ли это, что мне не нужно создавать несколько индексов для запросов?

Да, Azure Cosmos DB для таблицы обеспечивает автоматическое индексирование всех атрибутов без определения схемы. Таким образом, разработчик может сосредоточиться на приложении, не беспокоясь о создании индексов и управлении ими. Дополнительные сведения см. в статье Политика индексирования в Azure Cosmos DB.

Можно ли изменить политику индексирования?

Да, вы можете изменить политику индексирования, предоставив определение индекса. Вам нужно правильно закодировать эти параметры, а также экранировать их.

Политику индексирования можно установить ​​только на портале в обозревателе данных. Перейдите к таблице, которую нужно изменить, выберите Масштаб и параметры -> "Политика индексации", внесите необходимые изменения и нажмите Сохранить.

a. Индексация только по ключу секции и ключу строки

  {
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
      {
        "path": "/\"$pk\"/?"
      },
      {
        "path": "/\"$id\"/?"
      }
    ],
    "excludedPaths": [
      {
        "path": "/*"
      },
      {
        "path": "/\"_etag\"/?"
      }
    ]
  } 

b. Индексация по настраиваемому столбцу

  {
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
      {
        "path": "/\"mycolumn\"/*"
      } 
    ],
    "excludedPaths": [
      {
        "path": "/*"
      },
      {
       "path": "/\"_etag\"/?"
      }
    ]
  }  

Azure Cosmos DB как платформа предоставляет разные возможности, включая сортировку, выполнение статистических вычислений, иерархию и пр. Будете ли вы добавлять эти возможности в API для таблицы?

API для таблиц предоставляет те же функции запросов, что и хранилище таблиц Azure. Кроме того, эта база данных поддерживает сортировку, выполнение статистических вычислений, геопространственные запросы, иерархию и множество встроенных функций. Дополнительные сведения см. в статье Запросы SQL для Azure Cosmos DB.

Когда следует изменить TableThroughput для API для таблицы?

Значение TableThroughput следует изменять в следующих случаях:

  • При извлечении, преобразовании и загрузке данных или при передаче большого объема данных за короткий промежуток времени.
  • Чтобы получить более высокую пропускную способность для контейнера или набора контейнеров в серверной части. Например, вы видите, что используемая пропускная способность превышает подготовленную и выполняется регулирование. Дополнительные сведения см. в статье Настройка пропускной способности для коллекций Azure Cosmos DB.

Можно ли увеличить или уменьшить пропускную способность API для таблицы таблиц?

Да, для этого вы можете использовать панель масштабирования портала Azure Cosmos DB. См. дополнительные сведения о настройке пропускной способности.

Определяется ли пропускная способность таблицы по умолчанию для новых подготовленных таблиц?

Да, если не переопределить пропускную способность таблицы с помощью файла app.config и не использовать предварительно созданный контейнер в Azure Cosmos DB, служба создаст таблицу с предопределенной пропускной способностью (400).

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

Нет. Цены для существующих клиентов хранилища таблиц Azure не изменились.

Как рассчитывается цена для API для таблицы?

Это зависит от заданного значения TableThroughput.

Разделы справки обрабатывать любые ограничения скорости для таблиц в API для предложения таблиц?

Если скорость запроса превышает емкость подготовленной пропускной способности для базового контейнера или набора контейнеров, вы получите сообщение об ошибке, а пакет SDK повторит вызов на основе политики повтора.

Почему мне нужно выбирать пропускную способность помимо PartitionKey и RowKey, чтобы воспользоваться преимуществами API для таблиц в Azure Cosmos DB?

Azure Cosmos DB определяет для вашего контейнера пропускную способность по умолчанию, если вы не укажете другое значение в файле app.config или на портале.

Azure Cosmos DB предоставляет гарантии производительности и задержки с верхними границами для операций. Это возможно, если обработчик может применить управление операциями клиента. Настраивая значение TableThroughput, вы гарантированно получаете требуемые показатели пропускной способности и задержки, так как платформа резервирует эту емкость и обеспечивает бесперебойное выполнение операций.

Изменяя спецификации, вы можете гибко управлять пропускной способностью в соответствии со своими потребностями, обеспечивая поддержку сезонности приложений и позволяя минимизировать затраты.

Хранилище таблиц Azure обходится мне недорого, так как я плачу только за хранение данных и редко выполняю запросы. Предложение Azure Cosmos DB для таблиц, кажется, заряжает меня, хотя я не выполнил ни одной транзакции и не сохранил ничего. Можете объяснить, почему это происходит?

Azure Cosmos DB — это глобально распределенная система на основе соглашений об уровне обслуживания, которая гарантирует высокую доступность, низкую задержку и высокую пропускную способность. В отличие от других систем, в Azure Cosmos DB гарантируется зарезервированная пропускная способность. Azure Cosmos DB предоставляет такие запрашиваемые клиентами дополнительные возможности, как вторичные индексы и глобальное распространение.

При приеме данных в хранилище таблиц Azure мне не приходили уведомления о достижении квоты, информирующие о заполнении секции. С помощью API для таблицы я получаю это сообщение. Значит ли это, что предложение связано с определенными ограничениями, и поэтому мне необходимо изменить приложение?

Azure Cosmos DB — это система на основе соглашений об уровне обслуживания, которая предоставляет неограниченные возможности масштабирования, а также гарантирует согласованность, низкую задержку, высокую пропускную способность и доступность. Объем данных и индекс должны быть управляемыми и масштабируемыми, чтобы получить гарантированную производительность уровня "Премиум". Ограничение в 20 ГБ для числа сущностей и элементов на ключ секции требуется для повышения скорости поиска и производительности запросов. Кроме того, для обеспечения достаточной масштабируемости приложения для службы хранилища Azure мы рекомендуем не создавать секцию с высокой нагрузкой, чтобы хранить в ней все сведения и выполнять запрос этих данных.

Итак, PartitionKey и RowKey по-прежнему требуются с API для таблицы?

Да. Так как поверхность API для таблицы аналогична поверхности пакета SDK хранилища таблиц Azure, ключ секции обеспечивает эффективный способ распространения данных. Ключ строки является уникальным в пределах такой секции. Его присутствие обязательно, а значение может быть нулевым, как в пакете SDK уровня "Стандартный". Размер значения RowKey составляет 255 байт, а значения PartitionKey — 1 КБ.

Какие сообщения об ошибках для API для таблицы?

Хранилище таблиц Azure и Azure Cosmos DB для таблиц используют одни и те же пакеты SDK, поэтому большинство ошибок будут одинаковыми.

Почему я получаю регулирование при попытке создать много таблиц друг за другом в API для таблицы?

Azure Cosmos DB — это система на основе соглашений об уровне обслуживания, которая гарантирует согласованность, низкую задержку, высокую пропускную способность и доступность. Так как это подготовленная система, она способна резервировать ресурсы, чтобы гарантировать выполнение этих требований. Эта система определяет создание таблиц в быстром режиме и выполняет регулирование. Мы рекомендуем создавать не более пяти таблиц в минуту. Помните, что API для таблицы является подготовленной системой. Оплата начисляется с момента подготовки.

Как отправить отзыв о пакете SDK или сообщить об ошибках?

Свой отзыв можно опубликовать на следующих ресурсах: