Как хранят петабайты данных современные приложения? Рассказываем, что стоит об этом знать, чтобы говорить на одном языке со своим IT-отделом, и как хранение данных связано с облаками.

Современные приложения генерируют огромное количество данных, которые надо где-то хранить. Такие объемы нельзя залить на один сервер или диск, поэтому понадобились более сложные технологические решения. Так возникло несколько основных подходов к хранению данных приложений. Разберемся, в чем их особенности.

Современные способы хранения данных тесно связаны с облаками: в облаке можно почти неограниченно увеличивать объем хранения без дополнительных закупок оборудования и утилизировать оплаченные ресурсы на 100%.

Блочные хранилища — базовый уровень хранения данных в облаке

Базовый уровень хранения данных в облаках — это блочные хранилища. По аналогии с дисками физических компьютеров, «блочка» — это виртуальные диски виртуальных машин, так что почти любые облачные сервисы имеют блочные хранилища «под капотом».

Блочное хранилище — аналог жёстких дисков для виртуальных машин

В основе части облачных хранилищ данных, о которых я расскажу в этой статье, лежат блочные хранилища.

Базы данных — для хранения данных приложений

Базы данных — вспомогательные блоки почти для любого приложения. В них хранятся и обрабатываются данные, которые могут занимать большой объем. В роли фрагментов данных, хранимых в базе, может выступать число, фрагмент текста, даже файл. Видов баз данных великое множество: для обработки транзакций, хранения неструктурированных данных, кэширования информации и многих других задач.

Базы данных оптимальны для постоянных типовых операций. Например, в базу данных записывается информация о заказах, поступающих в интернет-магазин, на основе которой приложение автоматически выписывает счет на оплату.

Базы данных хранят данные приложений в определённом формате и порядке

Базы данных развертывают на собственных серверах или в виде облачного сервиса, который в общем случае называется DBaaS. Облачные базы данных выполняют те же функции, что и обычные, однако у них есть несколько преимуществ:

  • Любой объем хранения — расширяется в любой момент, без закупки оборудования.
  • Отказоустойчивость — встроенное резервирование данных, так что при выходе из строя оборудования всегда остаются резервные копии.
  • Повышенная безопасность — DBaaS работают в высоконадежных и защищенных средах, под контролем мощных средств технической защиты и экспертов по безопасности.

В облаке Mail.ru Cloud Solutions можно развернуть облачные СУБД PostgreSQL, MySQL, ClickHouse, Redis, Arenadata DB.

Файловые хранилища — для небольшого офиса

Файловые хранилища, как ясно из названия, оперируют файлами. В таком хранилище файлы организованы в каталоги и подкаталоги (папки), каждый файл можно найти по имени и пути вложенных друг в друга каталогов. Файлы можно добавлять, удалять, перезаписывать, читать, исполнять. Такие файловые системы мы привыкли видеть на своих ПК и ноутбуках.

Вложенные каталоги и файлы в файловом хранилище. Иерархия каталогов устроена так же, как на персональных компьютерах

Файловые хранилища удобны, когда с файлами собираются работать непосредственно люди: работа с файлами в дереве каталогов многим привычна. Файловые хранилища используют и некоторые приложения, если основной объект их работы — файлы и каталоги.

Когда файлов немного, файловое хранилище хорошо справляется. Однако при большом числе файлов структура каталогов становится громоздкой, поиск в ней и обращение к файлам замедляется. Поэтому файловые хранилища подходят для простых офисных задач — совместной работы небольшого числа сотрудников, файлового обмена, хранения архивов. Но они плохо подходят для больших массивов разнородных данных, которые надо быстро обрабатывать.

Как и базы данных, файловые хранилища развертывают как на физическом оборудовании, так и в облачном варианте, на виртуальных дисках. Облачные хранилища вмещают больше файлов, к ним проще организовать удаленный доступ сотрудников. Их можно арендовать у облачных провайдеров, при этом обычно тарифицируется зарезервированный объем файлового хранилища.

Объектные хранилища — для неограниченного объема любых данных

Данные в объектном хранилище размещаются без иерархии папок, принятой в файловом хранилище. Все данные хранятся в виде объектов, причём в роли объекта может быть что угодно: документ, изображение, тяжёлый исходник видео, фрагмент кода.

Объектные хранилища изначально облачные, их либо арендуют у провайдеров публичных облаков, либо строят в своём частном облаке. В обоих случаях преимущество перед файловыми хранилищами в том, что скорость доступа к любому объекту не зависит от числа объектов. Размещение миллиарда объектов не приводит к падению скорости — ситуация, немыслимая для файлового хранилища.

Объектное хранилище S3
Удобство хранения в облаке от мегабайт до петабайт данных

В виде публичного сервиса объектное хранилище дополняется еще несколькими уникальными преимуществами:

  1. Безграничное изменение объема хранения без перенастройки работающих с хранилищем приложений. Для сравнения, если приложение использует обычный физический или облачный диск, однажды диск заканчивается. Нужно не только добавить новый, но и настроить приложение, чтобы оно понимало, когда к какому диску обращаться. С облачным хранилищем таких проблем нет: приложения работают по одинаковым правилам при любом объеме хранения.
  2. Встроенная репликация данных. Данные автоматически копируются, копии хранятся на разных серверах, в разных дата-центрах. Это обеспечивает их сохранность и быстрое восстановление работы даже при сбое доступа к одной из копий.
  3. Бесперебойный доступ к объектам хранилища для любого числа пользователей. Вы можете разместить в хранилище видеоролик, и когда десятки тысяч человек будут его одновременно смотреть, число обращений не создаст никаких проблем.

В частных облаках все эти свойства для объектного хранилища приходится обеспечивать дополнительно.

Скорость доступа к объектам в хранилище не уменьшается при большом количестве обращений

Объектные хранилища созданы для встраивания в приложения, поэтому их основной интерфейс — программный (API), то есть, команды, которые хранилище и приложения передают друг другу. Один из распространённых API — S3 (Simple Storage Service), а поддерживающие его объектные хранилища, называют S3-хранилищами. У объектных хранилищ бывает и «человеческий» интерфейс (UI), через который можно, к примеру, загрузить объект и настроить доступ к нему.

Примеры использования объектного хранилища:

  1. Хранение архива документов: файлов, писем, архивных данных, нормативной документации. Здесь можно особо выделить хранение «тяжёлых» файлов, которые накапливаются, но для которых не хочется покупать всё больше железа: исходники медиа-файлов, полные последовательности ДНК.
  2. Хранение неструктурированных данных, которые не имеют фиксированного формата и состоят из объектов разного размера, типа и структуры. В объектном хранилище часто накапливают big data, к которым затем применяют машинный анализ и строят прогнозы для принятия бизнес-решений.
  3. Раздача контента: для видеохостингов, фотобанков, галерей, кода игр и даже статических (то есть не меняющихся) страниц веб-сайтов. Важна возможность не только разместить практически неограниченное число объектов, но и организовать доступ к ним любого количества пользователей.
  4. Хранение резервных копий (бэкапов) данных. Объектное хранилище можно интегрировать с системами, которые делают бэкапы любых папок, дисков, баз данных и целых инфраструктур и организовать автоматическое бэкапирование с сохранением версий.

Иногда объектные хранилища все же используют в роли файловых систем, когда работать нужно с файлами в иерархии каталогов, но хочется сохранить преимущества объектного хранилища по надежности и масштабируемости. В этом случае можно использовать дополнительные утилиты, например Диск-О, чтобы создать дерево каталогов и имитировать работу с объектами хранилища как с файлами. Использовать эти утилиты несложно, поэтому в некоторых случаях объектным хранилищем вполне можно заменить файловое.

Развернуть объектное хранилище можно в собственном центре обработки данных (ЦОД) в составе частного облака или воспользоваться услугой облачных провайдеров. Провайдеры обычно тарифицируют объем хранения, трафик и запросы к хранилищу, стоимость которых может отличаться в разных тарифах.

Облачные или физические хранилища?

Большинство современных приложений в какой-то форме используют базы данных, файловые или объектные хранилища.

Хранение на собственном физическом оборудовании оправдано при хорошо предсказуемом будущем объеме хранения и когда у вас достаточно рук, чтобы это хранилище обслуживать.

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

Оригинал статьи на iksmedia.ru