Category Archives: Azure

Build 2019: Cosmos DB с поддержкой Spark API для AI и аналитики

Компания Майкрософт на только что прошедшей конференции Build 2019 анонсировала поддержку Apache Spark в Cosmos DB. Cosmos DB изначально проектировалась для точечных операций. Существовал также Spark Connector для доступа к этим данным из внешнего Spark кластера. Но теперь интеграция становится более тесной, и будет возможно запускать real-time аналитику и ML\AI над данными Cosmos DB.

Больше не придется управлять отдельными кластерами Apache Spark, но при этом получить SLA на уровне 99.999. Также, несмотря на то, что Cosmos DB это географически распределенная БД, обработка с помощью Spark будет запускаться на локальных данных в том регионе, где они находятся, что ускоряет получение результата и исключает ненужные перемещения данных.

Дополнительно в Data Explorer появится поддержка Jupiter Notebook – одного из самых распространенных средств для доступа и анализа данных.

A Jupyter notebook.

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

Краткое введение в Azure Cosmos DB

Azure Cosmos DB – это полностью облачная база данных, которая была представлена в мае 2017 года, т.е. ей всего 2 года, но она уже успела приобрести достаточную популярность, если ориентироваться на статистику DB-engines, в частности, в категориях key-value, document и graph. Давайте кратко рассмотрим основные отличительные особенности этой базы данных, а уже в последующих статьях взглянем на них более подробно.

В первую очередь стоит отметить, что Cosmos DB – это развитие другой облачной базы данных компании Майкрософт – DocumentDB, которая появилась на пару лет раньше. Изначально DocumentDB – это была документоориентированная БД, где вся информация хранилась в виде JSON документов. CosmosDB унаследовала это от своего прародителя, но обросла новыми возможностями, поэтому было неправильно оставлять старое название, и было придумано новое и громкое.

Большинство систем управления базами данных организованы вокруг единой модели данных, которая определяет, как данные могут быть организованы, сохранены и обработаны. Например, реляционная модель, которая представляет данные в виде таблиц и связей между ними, является, пожалуй, самой широко распространенной. Cosmos DB – представитель мультимодельных систем, когда вы можете в одной базе данных использовать разные подходы, выбирая тот, который больше подходит для вашего приложения или сервиса. В частности, помимо унаследованной документоориентированной модели, которая является основной, вы можете использовать key-value и графовую модель. Я думаю, в отдельных статьях я покажу, как можно использовать графовую модель для описания знакомых всем сущностей, и какие преимущества это дает по сравнению с реляционной моделью.

Cosmos DB, являсь облачной БД, позволяет вам в несколько кликов развернуть экземпляр вашей базы данных в одном из регионов, где есть дата-центр Azure. Обеспечивает уровень доступности в 99.999% на чтение и запись, позволяет прозрачно расширяться практически без ограничений и гарантирует, что запись и чтение не будут занимать более 10 миллисекунд в 99% случаев. Также вам доступна репликация данных между дата-центрами. Согласитесь, настроить и обеспечить систему с подобными характеристиками своими силами займет в разы больше времени и будет стоить сильно дороже. Конечно, если у нас очень большая БД и много ресурсов, тогда нужно считать более детально, но если у вас относительно небольшая или средняя БД, но вам нужны такие показатели, то, однозначно, вам выйдет сильно дороже обеспечить их самостоятельно, чем с помощью Cosmos DB.

Вы можете работать с Cosmos DB используя Java, .NET, Node.Js или Python. Еще больше возможностей открывается, если использовать Azure Functions в связке с Cosmos DB. На этом мы тоже более подробно остановимся в следующих статьях цикла.

Что еще стоит отметить:

  • Возможность из приложения управлять уровнями согласованности (consistency level)
  • Автоматическое резервное копирование
  • Разграничение прав доступа к данным
  • Возможность создавать триггеры, хранимые процедуры и пользовательские функции внутри БД
  • Поддержка языка SQL
  • Гибкое управление индексированием
  • Поддержка MongoDB API и Cassandra API
  • Наличие локального эмулятора для разработки приложений без доступа к облаку Azure

Звучит очень интересно и напрашивается много вопросов. Давайте же постепенно в последующих статьях будем более подробно рассматривать каждую из этих возможностей и углубляться в детали.

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