DBaaS: что такое облачные базы данных
Рассказываем о сервисе управляемых баз данных в облаке и объясняем, как разделяется ответственность за работу кластеров БД между провайдером и клиентом.
Рассказываем о сервисе управляемых баз данных в облаке и объясняем, как разделяется ответственность за работу кластеров БД между провайдером и клиентом.
Что такое база данных?
База данных (БД) — это набор данных, которые хранятся согласно заданной схеме. Для работы с данными используется специализированное программное обеспечение — система управления базами данных (СУБД).
База данных является неотъемлемой частью современных приложений. При создании приложения необходимо выбрать подходящую СУБД и способ развертывания. Благодаря облачным технологиям базу данных можно развернуть нажатием одной кнопки.
Существует два способа развертывания СУБД:
- традиционный,
- в облаке.
Традиционный способ давно известен. База данных разворачивается на отдельном сервере силами специалистов компании — на собственной или арендованной инфраструктуре, в облаке или на выделенных серверах.
Очевидным достоинством такого подхода является полный контроль над инфраструктурой, операционной системой и своей СУБД, с возможностью тонкой настройки под собственные нужды. Однако с большими возможностями приходит большая ответственность. Помимо первичной установки, необходимо заниматься:
- поддержкой инфраструктуры,
- обеспечением отказоустойчивости,
- резервным копированием,
- оптимизацией работы кластеров,
- масштабированием БД, когда «аппетиты» приложения вырастут.
Это требует выделенного сотрудника, а иногда и целого отдела, если баз данных много.
Использование облачной базы данных позволяет делегировать большинство из перечисленных задач провайдеру инфраструктуры. Такой подход называется Database as a Service (DBaaS) — базы данных как сервис или управляемые базы данных (managed databases). Проще говоря, в рамках DBaas вы получаете базу данных «под ключ».
Особенности DBaaS — баз данных в облаке
Облачная база данных во многом похожа на облачные серверы. Рассмотрим подробнее.
Администрирование БД как сервис
Провайдер инфраструктуры выполняет все задачи, связанные с развертыванием, настройкой и администрированием кластеров баз данных. Иными словами, клиенту не нужно думать о том, какой сервер покупать, как установить на него нужную БД, настроить резервное копирование для восстановления в случае аварии и собрать отказоустойчивый кластер. Все это делается автоматически.
При создании базы данных можно выбрать заготовленные конфигурации виртуальных машин или задать параметры, исходя из собственных потребностей. В течение нескольких минут после нажатия кнопки Создать появится кластер базы данных, готовый к работе.
Развертывание БД по нажатию кнопки подходит для команд, у которых недостаточно опыта в самостоятельном администрировании баз данных — например, для программистов, которым необходимо окружение для разработки.
Услуга DBaaS будет полезна и тем, кто умеет «готовить» базы данных. Это избавит инженеров от лишней рутины и позволит сосредоточиться на развитии продукта. Так как это полностью управляемые базы данных, пользователи могут сконфигурировать кластер под потребности приложения — например, можно изменить настройки кластера как при его создании, так и в ходе работы.
Использование DBaaS для разработки и тестирования понятно: утром создал кластер — вечером удалил. В продуктовых окружениях, когда база данных обеспечивает работу приложения, пересоздание БД невозможно, а потребности в ресурсах растут вместе с задачами компании. Поэтому база данных должна иметь возможность масштабироваться.
Масштабируемость управляемых баз данных
Облачные продукты отличаются возможностью легкого масштабирования, и облачные базы данных — не исключение. В случае роста потребления вычислительных ресурсов или хранилища их можно быстро добавить.
Это можно сделать двумя способами:
- изменением конфигурации виртуальных машин кластера (вертикальное масштабирование),
- добавлением новых нод кластера для увеличения производительности БД на чтение (горизонтальное масштабирование).
Хотя облачные технологии значительно упрощают жизнь, они не всесильны. Так, операция уменьшения хранилища недоступна: изменение объема дискового пространства в меньшую сторону может «испортить» данные.
Подробнее о том, как масштабировать кластер →
Отказоустойчивость кластера и резервное копирование
В облачных базах данных есть опция аварийного переключения на резервную ноду. Если мастер-нода выйдет из строя, ее заменит реплика, которая поменяет роль на мастера, — приложение продолжит работать без сбоев. Бывший мастер пересоздастся и вернется в кластер в виде реплики. Чтобы кластер был отказоустойчивым, нужно создать его с несколькими нодами (репликами).
Еще один аргумент в пользу бесперебойной работы DBaaS — автоматическое резервное копирование. Раз в неделю делается полное резервное копирование кластера. Раз в день создается инкрементальный бэкап, который содержит все изменения с момента последней копии. Также каждые 10 минут (или при накоплении определенного объема изменений) создаются WAL-файлы (binlog-файлы — для MySQL). Последние позволяют восстанавливать базу в режиме Point-in-Time Recovery (восстановление в конкретную точку времени) и максимально обезопасить себя от потери данных. Резервные копии хранятся семь дней, то есть кластер можно восстановить в любую точку времени этого периода.
Какие бывают СУБД?
Систем управления базами данных, которые предлагает рынок, достаточно много. Помимо самых известных MySQL, PostgreSQL, Redis, которые есть в облачных базах данных Selectel, есть MS SQL, Oracle, Greenplum, ClickHouse, Vertica, Tarantool и другие. Компании используют ту или иную СУБД в зависимости от задач и компетенций специалистов. Например, ClickHouse и Greenplum чаще всего можно встретить в системах обработки данных. Именно эти БД входят в состав платформы обработки данных Selectel. А вот та же PostgreSQL может использоваться для самых разных задач.
Сделаем обзор самых популярных СУБД, которые используются в большинстве известных миру приложений.
MySQL
MySQL — широкоизвестная транзакционная реляционная СУБД с открытым исходным кодом и большим сообществом. Данная СУБД распространяется в некоторых комплексных решениях для веб-технологий — например, LAMP (Linux, Apache HTTP Server, MySQL, PHP).
MySQL отлично подходит для простых приложений, которые не предъявляют к базе данных специфичных требований — например, для CMS (Content Management System, система управления контентом).
PostgreSQL
Эта СУБД — известный конкурент и ровесник MySQL среди транзакционных реляционных баз данных. PostgreSQL всегда отличалась повышенной сложностью и, как следствие, меньшим сообществом. Тем не менее, это отличный инструмент для хранения и анализа сложных структур БД.
Например, PostgreSQL способен извлекать JSON-данные в колонке и использовать их в запросе. Кроме того, плагин PostGIS позволяет обрабатывать картографические данные, что позволяет хранить в БД геоданные.
СУБД PostgreSQL подходит для работы c «1С: Предприятие». В Selectel доступны специальные версии PostgreSQL, которые позволяют использовать их как основную базу данных для 1С. Это хорошая альтернатива серверу MS SQL (продукт Microsoft).
Redis
Redis — это нереляционная (NoSQL) база данных для хранения структур в виде ассоциативного списка (ключ-значение). Данная СУБД хранит все данные в оперативной памяти (In-Memory Storage), что обеспечивает высокую скорость доступа к данным. Нередко Redis используется в качестве кэша для приложения.
Redis позволяет хранить несколько значений по одному ключу, выстроенных в порядке FIFO (First In, First Out). Таким образом, Redis превращается в брокер сообщений.
Зоны ответственности провайдера Database as a service и клиентов
Облачные базы данных — это managed-сервис. Это значит, что часть ответственности за работу баз данных берет на себя провайдер услуги. В этом одно из важных преимуществ DBaaS. Однако важно понимать, что это не полный аутсорс задач: клиент все еще ответственен за работу самой БД и его действия могут стать причиной ее некорректной работы.
Рассмотрим, что берет на себя провайдер, а что находится в ведомстве клиента. Чаще всего второе касается внутренностей работы баз данных, так как у провайдера нет доступа к данным клиента и логике построения БД.
С ответственностью провайдера все достаточно просто. В нее входят:
- предоставление инфраструктуры и ее настройка,
- отказоустойчивость инфраструктуры кластера (работа 24/7),
- автоматическое развертывание кластера БД и его первоначальная настройка,
- корректное создание кластера,
- доступность ресурсов для масштабирования,
- создание автоматических резервных копий, что обеспечит быстрое восстановление работающих баз данных,
- техническая поддержка,
- быстрое реагирование на аварии инфраструктуры,
- аварийное переключение в случае выхода из строя сервера либо потери сетевой связности между нодами кластера,
- предоставление инструментов мониторинга.
Ответственность клиента рассмотрим подробнее.
Инициация масштабирования
При росте нагрузки клиенту нужно самостоятельно добавить нужное количество реплик или вычислительной мощности. Делается это нажатием нескольких кнопок в панели управления. Такое «ручное» масштабирование необходимо для контроля стоимости владения базами данных. Иногда дешевле оптимизировать существующую базу, чем добавлять новые ноды и ресурсы в DBaaS. Это решение остается за клиентом.
Следить за достаточностью ресурсов в кластере очень важно. Если место на диске закончится, кластер БД перейдет в режим read-only (только чтение). Поэтому клиенту стоит следить за утилизацией дискового пространства и предусмотреть достаточное свободное место «на вырост». С первым помогут инструменты мониторинга в панели управления или метрики в формате Prometheus. Также Selectel присылает уведомления в тикетах при риске заполнения диска.
Запросы и их оптимальность
Базы данных могут работать медленнее, если будут использоваться неоптимальные запросы. Например, ваше приложение может использовать технологию ORM (Object-Relational Mapping), через которую отправляются запросы к базам данным. Часто с ростом нагрузки такие запросы будут создавать дополнительные издержки и влиять на производительность базы данных. Поэтому в высоконагруженных БД такие запросы чаще переписывают/оптимизируют вручную — силами собственных инженеров или DBA (database administrator) на аутсорсе.
В управляемых базах данных провайдер не может контролировать SQL-запросы, которые использует приложение клиента. Поэтому «торможение» систем — далеко не всегда вина поставщика DBaaS. Неоптимальные запросы можно обнаружить с помощью встроенного в облачные базы данных мониторинга. Также на такие запросы могут указать сотрудники техподдержки провайдера, но для этого нужно инициировать дополнительное «расследование» в тикетах.
Кастомные настройки кластера кластера управляемой БД
При создании кластера баз данных все настройки по умолчанию подобраны для оптимальной работы БД, в зависимости от конфигурации кластера. Они оптимальны для высокой производительности кластера. Если дефолтные значения не подходят, можно установить свои значения при создании кластера либо изменить настройки в уже созданном. Неправильно подобранные настройки могут снизить производительность кластера, поэтому стоит менять настройки только в том случае, если вы точно знаете, зачем это нужно.
Архитектура базы данных
Архитектура БД — это комплекс структурных компонентов базы данных, а также средств, обеспечивающих их взаимодействие как друг с другом, так и с конечным пользователем. Условно говоря, это про то, как данные работают между собой и с другими системами приложения. Все это — вотчина клиента, поскольку только ему известна логика работы баз данных для достижения задач бизнеса.
Архитектурные проблемы также могут влиять на производительность работы БД. Если в компании нет компетенций для разработки эффективной архитектуры, можно взять специалиста на аутсорсе или уточнить, есть ли соответствующие услуги у провайдера DBaaS.
Корректное подключение
Наконец, к базе данных нужно правильно подключиться. Для этого можно обратиться к базе знаний провайдера. Как правило, там достаточно подробно описываются шаги. В Selectel эта информация доступна по ссылкам: для PostgreSQL, PostgreSQL для 1С, TimescaleDB, MySQL sync, MySQL semi-sync, Redis и Kafka.
Важно помнить, что провайдер не отвечает за стабильную работу кластера, если запросы и подключение к базе данных приводят к заполнению пула соединений с базой и взаимоблокировке (deadlock). Все это может привести к некорректной работе кластера.
Пример создания проекта с DBaaS в облачной платформе Selectel
Создание проекта
Начнем обзор DBaaS c создания проекта. Если у вас уже есть проект, доступный в облаке Selectel, этот пункт можно пропустить. На вкладке Облачная платформа вас встретит кнопка Создать проект.
Задайте имя проекта и нажмите Создать проект. В течение пары минут будет создан облачный проект, в котором можно будет создать базу данных.
Создание кластера облачной базы данных Selectel
В боковом меню проекта выберите Базы данных.
Выберите подходящий регион и соответствующую зону доступности для обеспечения связности ваших облачных серверов и базы данных. Если у вас нет облачных серверов, то можно выбрать географически ближайший регион. Если вам нужно связать облачную базу данных с выделенным сервером в Selectel или с собственной инфраструктурой на другой площадке, воспользуйтесь услугой L3 VPN.
После выбора региона нажмите Создать кластер.
После нажатия кнопки откроется расширенное меню конфигурации кластера. На данный момент доступны следующие СУБД.
- PostgreSQL — с 10 по 14 версии ,
- PostgreSQL для 1С — с 10 по 14 версии,
- TimescaleDB — база данных для хранения временных рядов,
- MySQL 5.7 и 8,
- MySQL semi-synk,
- Redis 6,
- Kafka 3.5.
Так как СУБД запускается на виртуальном сервере, можно выбрать одну из готовых конфигураций или определить собственную.
Далее следуют параметры отказоустойчивости и сетевой доступности кластера. Реплики создавать не обязательно. Например, при развертывании окружения для разработчика отказоустойчивость базы данных может быть избыточна.
В зависимости от выбранной СУБД на странице могут появиться специфические настройки. Например, для PostgreSQL можно переопределить некоторые параметры в файле конфигурации. Также в БД настроено ежедневное резервное копирование.
После определения всех необходимых параметров можно создать кластер. Спустя несколько минут кластер будет создан.
Подключение к кластеру БД
Облачная база данных не отличается от локальной, разве что доступна в интернете. На странице кластера доступен список адресов для мастер-узла и реплик.
Что мы узнали о DBaaS в облаке
Итак, мы рассмотрели особенности DBaaS. Облачные базы данных — удобный инструмент для всех, кто работает с БД в своих сервисах. Это возможность не тратить время на настройку кластеров, не думать об инфраструктуре и масштабируемости системы.
Однако важно понимать, что провайдер не может брать на себя ответственность за все, что происходит внутри кластеров. У провайдера DBaaS нет и не может быть доступа к клиентским данным. Поэтому о ряде вещей, в числе которых схема баз данных, оптимальность запросов, кастомные настройки, должен подумать клиент.