Выбор базы данных — будь то для приложения или для проекта хранилища данных — это долгосрочное обязательство, пишет на портале The New Stack Тим Ротах, директор по маркетингу продуктов Couchbase.
База данных является основой вашего приложения и обеспечивает надежное хранение и доступ ко всей вашей информации. А без данных у вас не будет и приложения.
Ниже речь пойдет об операционных базах данных — тех, которые предназначены в основном для разработки приложений или микросервисов. Даже в этом сегменте рынка существуют сотни вариантов баз данных. Если вы рассматриваете базу данных как сервис (Database-as-a-Service, DBaaS), это сужает круг, поскольку не все поставщики предлагают свои продукты в качестве полностью управляемой услуги.
В зависимости от выбранной базы данных вам будет проще или сложнее встроить в приложение различную функциональность и развивать ее со временем. Некоторые базы данных предоставляют очень специфические возможности, в то время как другие являются более широкими и гибкими.
Крупные облачные провайдеры предлагают разнообразные варианты DBaaS, каждый из которых ориентирован на определенные возможности. Иногда такой выбор может скорее запутать, чем помочь. Хорошая новость заключается в том, что наличие выбора означает больше возможностей для поиска оптимальной DBaaS.
Критерии DBaaS
Многие облачные базы данных, представленные на рынке, предлагают общие функции, но все они в чем-то отличаются друг от друга. Поэтому вот несколько областей, о которых следует подумать при поиске.
Структура данных. Реляционные системы управления базами данных (РСУБД) были разработаны для очень эффективного хранения данных, что достигается благодаря фиксированной и предопределенной структуре. Хотя эффективность, конечно, имеет свои преимущества, в современной гибкой модели разработки, где приложения и микросервисы меняются очень быстро, эта жесткость часто является негативным аспектом.
Вынужденность менять схему базы данных каждый раз, когда меняются требования к приложению, отнимает время от разработки. Базы данных NoSQL не накладывают таких ограничений, предоставляя разработчикам больше гибкости для более быстрого развития продуктов. Кроме того, лучшие базы данных NoSQL поддерживают транзакции, сохраняя при этом общую гибкость.
Шаблоны запросов. Наиболее распространенным языком запросов во всех типах баз данных является SQL. Он используется уже несколько десятилетий благодаря распространению реляционных баз данных и полезности самого языка. Он прост для чтения/понимания и мощный в своей гибкости.
Тем не менее, существуют и другие способы извлечения данных, такие как «ключ-значение», для более простого и часто более быстрого поиска данных. Нечеткие поисковые запросы, также известные как полнотекстовый поиск, могут быть очень полезной функцией базы данных, обеспечивающей функциональность поиска внутри приложений.
Еще один вариант, набирающий популярность, — GraphQL, который работает с высокосвязанными наборами данных. В зависимости от сочетания потребностей (настоящих и будущих), убедитесь, что DBaaS обеспечивает ваши потребности в запросах. Она также должна предоставляться с набором средств разработки ПО (SDK) для различных популярных языков программирования.
Согласованность. Популярность реляционных баз данных частично объясняется поддержкой свойства ACID (atomicity, consistency, isolation, durability — атомарность, согласованность, изоляция, устойчивость), которое обеспечивает защиту и точность транзакций с данными. Однако в современных приложениях возросла потребность в скорости без необходимости транзакций, и базы данных NoSQL отказались от ACID в пользу согласованности в конечном счете (слабая согласованность).
Сегодня многие базы данных NoSQL предлагают некую смесь сильной (ACID) и слабой согласованности, предоставляя разработчикам больше гибкости в том, как они создают свои приложения. Поэтому важно понимать спектр ваших потребностей с точки зрения требований ACID и то, как это согласуется с конкретным поставщиком.
Варианты развертывания. При использовании DBaaS работы по развертыванию гораздо меньше по сравнению с самостоятельно управляемой системой. Поставщик предоставляет базу данных и все ресурсы, необходимые для ее поддержки, а также обеспечивает возможность масштабирования сервиса с минимальным временем простоя. Поэтому вам необходимо продумать выбор облачного провайдера, регионы и варианты конфигурации для обеспечения доступности.
Кроме того, нужно получить ответы на следующие вопросы. В более широких временных рамках разработки, каковы другие возможности платформы базы данных? Есть ли загружаемая версия для создания минимально жизнеспособного продукта? Что если вам потребуется переключиться на онпремисное развертывание? Знание всех вариантов наперед может уберечь от серьезных ошибок в будущем.
Зрелость. Как уже упоминалось ранее, на рынке представлено огромное количество баз данных. Популярность некоторых из них будет расти, других — падать, выбор одной из них может сработать в краткосрочной перспективе, но в долгосрочной стать проблемой. Зачастую выбор более зрелого продукта может принести много преимуществ, которые вам, возможно, не нужны или вы не осознаете их на начальном этапе, но будете благодарны за них позже. Зрелый продукт часто предлагает лучшие стабильность, поддержку и гибкость.
Высокая доступность и аварийное восстановление. Кто хочет, чтобы его база данных вышла из строя? Разумеется, никто. В зависимости от того, насколько сложными являются ваши требования к данным с точки зрения количества пользователей, объемов данных, географического охвата и т. д., вам необходимо понять, как ваша DBaaS обеспечивает высокую доступность и аварийное восстановление. Некоторые из них лучше с точки зрения архитектуры ядра и возможностей аварийного восстановления. Однако часто требуются дополнительные расходы для обеспечения гарантированного времени безотказной работы, которое вам необходимо.
Масштабируемость. Простое и автоматизированное масштабирование — это то, чем должны обладать все предложения DBaaS, но есть разные способы, которыми они это осуществляют. Некоторые DBaaS масштабируются по бессерверной модели, на основе платы за использование, с автомасштабированием. Это может упростить жизнь, но также и удорожить ее, если масштабы превысят ожидания. Гибкое масштабирование также предлагают модели с выделением ресурсов, что требует немного больше усилий, но включает дополнительный контроль над такими вещами, как процессорные ядра, память, объем хранилища и многое другое. Все эти функции не должны требовать изменений в приложении.
Мобильные и периферийные возможности. Потребуется ли вашей DBaaS синхронизировать данные с мобильным или периферийным приложением? Как будет осуществляться синхронизация данных? Должно ли мобильное приложение работать без подключения к сети? Именно над этими вопросами следует задуматься при выборе встраиваемой базы данных для мобильных устройств, которая поможет сделать ваше приложение в первую очередь автономным.
Безопасность. Обеспечение безопасности — это постоянная борьба между организациями и хакерами. Убедитесь, что ваш поставщик DBaaS предоставляет сложные, многоуровневые технологии безопасности и круглосуточный мониторинг. Системы должны включать такие вещи, как выделенные сети и шифрование данных, находящихся как в состоянии покоя, так и в процессе передачи.
Стоимость. Это обязательный фактор при выборе базы данных. Некоторые DBaaS предлагают очень низкий базовый бесплатный уровень, которого будет недостаточно для реального приложения. Поэтому вы должны подумать об общей стоимости владения (TCO) и о том, как сбалансировать ее с потребностями в производительности чтения/записи, общими возможностями и суммарным количеством пользователей, которых можно поддерживать при масштабировании системы.