Поделиться через


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

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

Это важно

Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.

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

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

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

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

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

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

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

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

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

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

  • Azure Cosmos DB резервирует имена свойств сущностей ID, rid, etag и 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 для Table?

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

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

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

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

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

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

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

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

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

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

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

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

В настоящее время нет.

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

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

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

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

Как добавить репликацию данных в API для Table в более чем одном регионе 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 для таблицы обеспечивает низкую задержку чтения с сообщением "Чтение собственных операций записи", при этом согласованность с ограниченной задержкой выполняется по умолчанию. Для получения дополнительной информации см. Уровни согласованности.

По умолчанию хранилище таблиц 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, поддерживающих несколько регионов. Вы можете задать приоритет региона с помощью портала Работа с учетными записями Azure Cosmos DB с несколькими регионами.

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

Включен ли 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.

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

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

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

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

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

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

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

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

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

Безопасность

Что такое управление доступом на основе ролей (RBAC)?

Управление доступом на основе ролей (RBAC) — это метод регулирования доступа к компьютеру или сетевым ресурсам на основе ролей отдельных пользователей в организации. В Azure Cosmos DB RBAC используется для предоставления доступа к плоскости данных пользователям и приложениям. Для получения дополнительной информации о различных терминах управления доступом на основе ролей см. глоссарий безопасности.

Как включить управление доступом к плоскости данных на основе ролей для Azure Cosmos DB для Table API?

Используйте собственную функцию управления доступом к данным на основе ролей (RBAC) в Azure Cosmos DB для предоставления доступа пользователям и приложениям. Дополнительные сведения см. в разделе "Предоставление ролевого доступа к плоскости данных".