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