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

Область применения: Таблица

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

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

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

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

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

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

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

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

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

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

  • Azure Cosmos DB резервирует имена IDсвойств сущностей , ridetagи ResourceId в настоящее время они не поддерживаются.

  • Значение 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> Запрос на предварительную таблицу CORS Этот метод является частью 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.

    • Класс CloudTableClient
      • \ServiceProperties
      • \ServiceStats
    • Класс CloudTable
      • SetPermissions
      • GetPermissions

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

Требуется ли новый пакет 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.

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

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

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

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

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

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

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

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

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

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

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

Да, если вы не переопределяете tableThroughput через 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 мы рекомендуем не создавать секцию с высокой нагрузкой, чтобы хранить в ней все сведения и выполнять запрос этих данных.

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

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

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

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

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

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

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

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