Cosmos DB - база данных планетарного масштаба

Tags: Azure, database, CosmosDB, Serverless

Cosmos DB – это оптимальный вариант для решения современных важных задач, управляемых данными и определяемых приложениями. В настоящее время вряд ли можно встретить приложение, ограничивающееся одним регионом. Важной особенностью современности является возможность доступа к приложениям из разных точек мира. Это то требование, реализация которого возможна через облако. Следующее требование – низкое время отклика. Так как современные приложения должны быть доступны из любой точки мира, нужна быстрая реакция в режиме «реального времени». Не маловажным является и неограниченный прием данных. Огромное внимание уделяется безопасности, ответственность за которую в облаке несет провайдер. Требование приема разнообразных данных означает возможность поддержки различных форматов, структур, языков запросов.

Современные приложения сталкиваются с новыми сложностями, требующими углубленных знаний. 

  1. Управление и синхронизация данных по всему миру

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

  1. Работа в режиме реального времени
  2. Обработка и анализ крупных, сложных наборов данных
  3. Масштабирование

В Cosmos DB поддерживается горизонтальное масштабирование. Платформа эластично масштабирует операции чтения и записи по всему миру.

  1. Низкая задержка для пользователей.

Время отклика в Cosmos DB измеряется миллисекундами

  1. Модернизация существующих приложений и данных

Azure Cosmos DB была создана для поддержки современных приложений и сценариев использования. Она дает возможность организациям реагировать на запросы пользователей по всему миру, менять динамику бизнеса в режиме реального времени. С Cosmos DB существует возможность размещения данных в более чем 55 регионах по всему миру и выстраивания эффективной работы с клиентами в режиме реального времени. Она отлично подходит для игр, интернета вещей и электронной коммерции, т.к. является прогностической и быстрой службой, даже в моменты пиков трафика. Предоставляет упрощенную разработку с бессерверной архитектурой. Здесь задействованы архитектура, управляемая событиями, и приложения, работающие на бессерверной платформе, например, Azure Functions. Для аналитики используется Apache Spark, являющийся одним из стандартов науки о данных в машинном обучении. Cosmos DB обеспечивает простое перемещение (Lift and Shift) данных NoSQL. 

На представленной диаграмме показана платформа Azure Cosmos DB через различные форматы, интерфейсы

Верхний слой используется для подключения к Cosmos DB. Поддерживает следующие интерфейсы: etcd, таблицы APi, Cassandra, Core API, apache Spark, Mongo DB, Gremlin.

Второй слой – это форматы. Если Вы выберете интерфейс Таблица API или Cassandra, то им соответствует формат «ключ-значение»; для Cassandra – формат семейства столбцов; для Core API и Mongo DB – формат документа; для Gremlin – формат графов. 

Нижний уровень представляет собой характерные черты Cosmos DB: глобальное размещение (возможность выбрать любой из 55 регионов по всему миру. Доступно с минимальной задержкой и может использоваться для аварийного переключения, а также для восстановления после отказа), эластичное масштабирование  хранилища и плата только за необходимую пропускную способность; гарантия низкой задержки (Cosmos DB гарантирует время отклика менее 10 миллисекунд для операций чтения и записи); 5 моделей согласованности (тщательно продуманный протокол репликации позволяет выбрать модель, подходящую именно для ваших приложений); развитая SLA гарантирует пропускную способность, доступность и безопасность базы данных.  

Рассмотрим варианты схем

Глобальное размещение данных и их доступность.

Эта схема используется многими компаниями по всему миру. Разместите данные там, где есть Ваши пользователи для предоставления доступа в режиме реального времени к постоянно действующей службы для них в любой точке мира. Такая модель дает возможность репликации в любом регионе Azure, гарантирует низкое время отклика для пользователей по всему миру, высокую доступность и аварийное восстановление. Цель такой схемы: минимизировать время задержки для каждого пользователя. 

 Создание в режиме реального времени

Эта схема подходит для чувствительных к задержкам приложениями с необходимостью персонализации, установки цен и выявления подлогов. Модели машинного обучения генерируют рекомендации в режиме реального времени по каталогам продуктов. Анализ продуктов происходит в течение нескольких миллисекунд. Низкое время отклика гарантирует высокую производительность приложения по всему миру. 

Схема для игр и электронной коммерции

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

  

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

Упрощенная разработка с бессерверной архитектурой

Схема хорошо демонстрирует интеграцию функций или реакционных систем, основанных на событиях. Она создана для сокращения времени выхода на рынок, позволяет расширять масштабируемость, предоставляет свободу от управления фреймворками с микросервисами, управляемыми событиями.

Cosmos DB – это глобально распределенная служба базы данных,  многоуровневая система, которая способна адаптироваться к различным требованиям в режиме реального времени и любым требованиям бессерверной архитектуры. Для адаптации к любой системе используется метод секционирования на части. Он позволяет масштабировать до 100 млн запросов в секунду из нескольких регионов. Поддержка осуществляется для любых рабочих нагрузок. Секционированная система работает автоматически. Каждая часть управляет заданную пропускную способность. Таким образом, Вы платите только за пропускную способность и необходимое Вам хранилище. Cosmos DB гарантирует время отклика менее, чем 10 миллисекунд для операции чтения и менее 15 миллисекунд для записи запросов. 

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

Существует 5 моделей согласованности, позволяющих регулировать репликацию баз данных согласно необходимостям приложений. Две противоположные модели: strong (строгая) и eventual (в конечном счете). 

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

  1. Ограниченное устаревание предоставляет прогнозируемое окно устаревания, в котором операции чтения могут отставать от операций записи по обновлению или по интервалу времени, в зависимости от того, что достигнуто первым. Эта модель менее строгая и более быстрая, чем Strong.
  2. Сеанс – ограничен уровнем сеанса клиента, гарантирует монотонное чтение и монотонную запись. Обеспечивает согласованность сеанса и максимальную пропускную способность.
  3. Согласованный префикс выстраивает реплики в очередь и гарантирует, что операции чтения не увидят неупорядоченные операции записи.

Многоуровневые модели данных позволяют использовать модель, подходящую Вашим требованиям и те API, инструменты и фреймворки, которые Вы предпочитаете. Cosmos DB предлагает множество API для доступа и запроса данных, включая SQL, различные популярные OSS API и встроенную поддержку для рабочих нагрузок NoSql. Бессхемная служба Cosmos DB автоматически индексирует все ваши данные, независимо от модели. 

10 причин, чтобы сделать выбор в пользу Cosmos DB:

  1. Глобальная распределенность «под ключ»
  2. Позволяет использовать огромные базы данных и производить их масштабируемость
  3. Задержка отклика в  миллисекунды по всему миру
  4. Встроенная поддержка различных типов данных
  5. Предоставляет 5 моделей согласованности для выбора наиболее подходящей
  6. Обеспечивает условия для критически важных приложений
  7. Предоставляет высокую гибкость для оптимизации скорости и стоимости
  8. Поддержка рабочих нагрузок больших данных с высокой доступностью и надежностью
  9. Предоставляет несколько уровней защиты
  10. Подходит для аналитики и архитектуры, управляемой событиями.

No Comments

Add a Comment