Microsoft Azure Cosmos DB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:27, 28 декабря 2018.
Microsoft Azure Cosmos DB
Azure-Cosmos-DB-log.png
Разработчики: Microsoft
Операционная система: Microsoft Windows
Лицензия: Проприетарное программное обеспечение
Веб-сайт azure.microsoft.com/ru-ru/

Microsoft Azure Cosmos DB — это глобально распределенная многомодельная база данных Майкрософт, которая поддерживает базы данных документов, пар "ключ-значение" и графов, а также базы данных с широкими столбцами. Имеет возможности глобального распределения и горизонтального масштабирования. Эта база данных использует глобальное распределение в любом количестве регионов Azure путем масштабирования и репликации данных независимо от местонахождения пользователей. Azure Cosmos DB гарантирует показатели задержки с точностью до одной цифры в миллисекундах на 99-м процентиле в любой точке мира, а также предлагает несколько моделей согласованности для тонкой настройки производительности и обеспечивает высокую доступность с возможностями множественной адресации[Источник 1].

Возможности

Интегрированные возможности глобального распределения

  • Возможность распределять данные в любом числе регионов Azure.
  • Автоматическая отправка запросов в ближайший центр обработки данных.
  • Возможность добавления регионов в базу данных без необходимости повторного развёртывания приложения.

Поддерживаемые модели данных

Azure Cosmos DB поддерживает несколько моделей данных:

  • Модель данных документов.
  • Модель пар "ключ-значение".
  • Модель графов.
  • Модель таблиц.
  • Модель семейств столбцов.

API-интерфейсы

API-интерфейсы поддерживаются пакетами SDK, доступными на нескольких языках, для следующих моделей данных:

  • API SQL— ядро СУБД с поддержкой бессхемного формата JSON и широкими возможностями отправки SQL-запросов.
  • API MongoDB — решение MongoDB как услуга с высокой масштабируемостью на базе платформы Azure Cosmos DB. Совместимо с существующими библиотеками, драйверами, средствами и приложениями MongoDB.
  • API Cassandra — распределенное решение "Cassandra как услуга" на базе платформы Azure Cosmos DB. Совместимо с существующими библиотеками, драйверами, средствами и приложениями Apache Cassandra.
  • API Gremlin — полностью управляемая горизонтально масштабируемая служба базы данных графа. Она упрощает создание и запуск приложений, которые используют часто подключаемые наборы данных, и поддерживает API Open Gremlin (на основе спецификации Apache TinkerPop, Apache Gremlin).
  • API таблицы — служба базы данных пар "ключ-значение", созданная для предоставления возможностей уровня "Премиум" (например, автоматического индексирования, гарантировано низкой задержки и глобального распределения) существующим приложениям хранилища таблиц Azure без изменения приложений.

Масштабирование

Рисунок 1 – Калькулятор настройки пропускной способности

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

Производительность и надёжность

  • Azure Cosmos DB гарантирует пользователям низкую сквозную задержку на уровне 99-го процентиля.
  • Для обычного элемента размером 1 КБ Cosmos DB обеспечивает сквозную задержку операций чтения менее 10 мс, а для индексированных операций записи — менее 15 мс на уровне 99-го процентиля в пределах одного и того же региона Azure. Среднее значение задержки значительно ниже (менее 5 мс).
  • Доступность на уровне 99,99 % в соответствии с соглашением об уровне обслуживания для всех учетных записей базы данных в пределах одного региона и доступность для всех операций чтения на уровне 99,999 % для всех учетных записей базы данных в пределах нескольких регионов.
  • Существует возможность динамически назначать приоритет для регионов.
  • Реализована функция моделирования сбоя одного или нескольких регионов с гарантированной нулевой потерей данных, чтобы проверить комплексную доступность всего приложения

Уровни согласованности

Azure Cosmos DB поддерживает следующие уровни согласованности:

  • Строгая согласованность. Линеаризация. Операции чтения гарантированно возвращают самую последнюю версию элемента.
  • Ограниченное устаревание. Согласованность префиксов. Операции чтения могут отставать от операций записи не более чем на k префиксов или на интервал времени t.
  • Согласованность сеанса. Согласованность префиксов. Монотонные операции чтения и записи, чтение собственных операций записи, запись после чтения.
  • Согласованность префиксов. Обновления, которые возвращаются, содержат часть префиксов всех обновлений, без разрывов.
  • Итоговая согласованность. Неупорядоченное чтение.

Индексация

По умолчанию все данные Azure Cosmos DB индексируются. Хотя Azure Cosmos DB может автоматически регулировать все параметры индексирования, Azure Cosmos DB также поддерживает задание пользовательской политики индексирования для коллекций во время создания. В Azure Cosmos DB можно разработать и настроить форму индекса без ущерба для гибкости схемы[Источник 2].

Согласованный (Consistent)

Если для коллекции Azure Cosmos DB указана политика Consistent, запросы к данной коллекции Azure Cosmos DB соответствуют уровню согласованности, указанному для точечных операций чтения (т. е. строгий, ограниченный с запаздыванием, сеанса и окончательный). Индекс обновляется синхронно при обновлении документа (т. е. при вставке, замене, обновлении и удалении документа в коллекции Azure Cosmos DB).

Согласованное индексирование поддерживает согласованность запросов за счет возможного сокращения пропускной способности записи. Это сокращение является функцией уникальных путей, которые должны быть проиндексированы, и "уровня согласованности". Режим согласованного индексирования предназначен для рабочих нагрузок типа "быстрая запись, немедленный запрос".

Асинхронное индексирование (Lazy)

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

Во время получения данных индекс обычно находится в режиме наверстывания. В асинхронном индексировании изменения срока жизни (TTL) приводят к удалению индекса и его последующему повторному созданию. Этим объясняется несогласованность запроса COUNT и результатов в течение некоторого периода времени. В большинстве учетных записей Azure Cosmos DB нужно использовать согласованный режим индексирования.

Нет (None)

У коллекции с режимом индексирования None нет связанного индекса. Обычно это применимо для тех случаев, когда Azure Cosmos DB используется как хранилище пары "ключ — значение", а доступ к документам осуществляется только по свойству их идентификатора.

Уровни согласованности

Рисунок 2 – Настройка уровня согласованности

В Microsoft Azure Cosmos DB существует несколько уровней согласованности[Источник 3] (см. Рис. 2).

Строгая согласованность

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

Ограниченное устаревание

  • Согласованность с ограниченным устареванием гарантирует, что операции чтения могут отставать от записи не более чем на K версий или префиксов элемента или на интервал времени t.
  • Следовательно, при выборе ограниченного устаревания это самое "устаревание" можно настроить двумя способами: указать количество K версий элемента, на которое операции чтения могут отставать от операций записи, и интервал времени t.
  • Согласованность с ограниченным устареванием обеспечивает общий глобальный порядок в пределах "окна устаревания". Гарантии для монотонных операций чтения в регионе существуют как в пределах "окна устаревания", так и вне его.
  • Модель ограниченного устаревания обеспечивает более строгую согласованность, в сравнении с моделями согласованности сеанса, постоянного префикса и итоговой согласованности. Для глобально распределенных приложений мы рекомендуем использовать ограниченное устаревание в ситуациях, где требуется строгая согласованность, но при этом необходима доступность порядка 99,99 % и низкая задержка.
  • С учетными записями Azure Cosmos DB, для которых настроена согласованность с ограниченным устареванием, можно связать любое количество регионов Azure.
  • Затраты на операцию чтения (в используемых единицах запроса) с ограниченным устареванием выше, чем при согласованности уровня сеанса и согласованности в конечном счете, но не отличаются от затрат при строгой согласованности.

Согласованность сеанса

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

Согласованность префиксов

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

Итоговая согласованность

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

Источники

  1. Добро пожаловать в базу данных Azure Cosmos DB//Microsoft Docs. [2016—2017]. Дата обновления: 02.12.2018. URL: https://docs.microsoft.com/ru-ru/azure/cosmos-db/introduction (дата обращения: 02.12.2018).
  2. Как работает индексирование данных в Azure Cosmos DB//Actian community. [2016—2017]. Дата обновления: 02.12.2018. URL: https://docs.microsoft.com/ru-ru/azure/cosmos-db/indexing-policies (дата обращения: 02.12.2018).
  3. Настраиваемые уровни согласованности данных в Azure Cosmos DB//Actian community. [2016—2017]. Дата обновления: 02.12.2018. URL: https://docs.microsoft.com/ru-ru/azure/cosmos-db/consistency-levels#consistency-levels (дата обращения: 02.12.2018).