Выбор базы данных один из самых важных шагов при разработке нового микросервиса. Если выбрать неправильную БД, то переход на другую может быть очень дорогостоящим и рискованным. Каждая технология или тип БД имеет свои плюсы и минусы, поэтому необходимо провести тщательный анализ перед принятием решения.
С одной стороны - в некоторых БД общего назначения (например MySQL, PostgreSQL) происходит конвергенция и их производители утверждают, что это облегчит жизнь разработчикам.
С другой стороны - облачные провайдеры, такие как Amazon, Yandex.Cloud, предлагают ошеломляющий набор баз данных и вариантов хранения.
Например, у Amazon есть Aurora, DynamoDB, DocumentDB, elastiCache, S3, elastic file system и т.д.
У Yandex.Cloud есть Greenplum, Redis, OpenSearch и т.д . Что затрудняет определение того, какой из вариантов правильный.
При выборе подходящей технологии базы данных для вашего микросервиса, учитывайте следующие критерии:
Шаблоны запросов
Насколько сложны запросы? Вам необходим только поиск по ключевому слову или по нескольким другим параметрам? Нужен ли нечеткий поиск? То, как вы планируете извлекать данные - один из основных критериев выбора наилучшей базы данных для ваших нужд.
Если поиск происходит по ключевому значению, то вам нужно хранилище ключ-значение, например DynamoDB, Redis, S3 или GCS.
Если же вы в основном ищете по ключевому полю, но иногда также необходимо выполнить поиск по одному или нескольким дополнительным полям, в таком случае больше подходят Wide-column базы, например, DynamoDB или Cassandra.
Однако если вам нужны запросы по множеству разных полей, можно рассмотреть реляционные базы данных, такие как MySQL и PostgreSQL, или документно-ориентированные базы, такие как MongoDB или CouchDB.
Обратите внимание, документные базы не очень хорошо подходят для запросов, требующих объединения данных из разных документов.
Наконец, если вам требуются возможности неточного поиска, можно рассмотреть такие как Elasticsearch или Solr.
Консистентность
Требуется ли строгая согласованность? Если вам необходимо прочитать данные сразу после записи (обеспечить строгую согласованность) и требуется несколько центров обработки данных, то реляционные базы, такие как MySQL или PostgreSQL, будут более подходящими, чем документно-ориентированные (MongoDB или CouchDB).
Емкость хранилища
Какой объем хранилища необходим?
Большинство систем баз данных ограничены объемом дискового пространства (например, MySQL) или испытывают проблемы с производительностью, поскольку количество узлов и сегментов исчисляется сотнями (например, Elasticsearch).
Когда требуется бесконечное хранилище - то лучше присмотреться к облачным решениям. Сервисы хранения объектов, такие как S3 и Yandex.Cloud, позволят хранить столько данных, сколько потребуется. Вы будете платите меньше за данные, которые редко извлекаются.
Производительность
Какая пропускная способность вам нужна, а какая задержка допустима? Производительность всех баз данных падает при увеличении объема трафика при чтении/записи. В этом случае могут пригодиться такие оптимизации, как индексация и разбиение данных на сегменты.
Если у вас очень большой трафик и требуется низкая задержка, то облачные провайдеры, такие как Amazon DynamoDB и Yandex.Cloud, могут быть хорошим выбором.
Пока ваш сервис развернут в том же ЦОД, что и база данных, задержки могут быть менее 10 миллисекунд. Вопрос в том, сколько вы готовы платить за высокую пропускную способность.
Зрелость и стабильность
Выбор самой модной, мощной и полнофункциональной базы данных для самостоятельного размещения может показаться заманчивым, но только в том случае, если у вас есть достаточно администраторов БД с нужной экспертизой и навыками.
Установка, конфигурирование и тонкая настройка БД - это длительное и рискованное испытание. Иногда выбор “старой” организации (on-premise) в качестве самостоятельной установки принесет больше дивидендов в долгосрочной перспективе, когда речь заходит о стабильности производства.
Стоимость
Какие будут затраты, если выбрать управляемое облачное решение?
Модель оплаты для управляемых облачных решений обычно пропорциональна трафику на чтение/запись.
Ниже вы найдете блок-схему, которая поможет вам выбрать подходящую технологию баз данных под ваши нужды.
Понравилась статья? Подписывайтесь на телеграм-канал, чтобы не пропустить обновления.