Хранение объектов против Услуги блочного хранения

Вступление

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

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

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

Что такое блочное хранилище

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

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

  • Вы можете легко сделать живые снимки всего устройства в целях резервного копирования

  • Размер блочных устройств хранения можно изменить в соответствии с растущими потребностями.

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

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

Некоторые преимущества блочного хранилища:

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

  • Блочные устройства хорошо поддерживаются. Каждый язык программирования может легко читать и писать файлы

  • Разрешения файловой системы и контроль доступа знакомы и понятны

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

К недостаткам блочного хранилища можно отнести:

  • Хранилище привязано к одному серверу за раз

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

  • Вам нужно заплатить за все выделенное для вас место в блочном хранилище, даже если вы его не используете

  • Вы можете получить доступ к хранилищу блоков только через работающий сервер

  • Блочное хранилище требует больше практической работы и настройки по сравнению с хранилищем объектов (выбор файловой системы, разрешения, управление версиями, резервное копирование и т. Д.)

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

Если ваш облачный провайдер не предлагает службу блочного хранилища, вы можете запустить собственную, используяOpenStack Cinder,Ceph или встроенную службу iSCSI, доступную на многих устройствах NAS.

Что такое хранилище объектов

В современном мире облачных вычислений хранение объектов - это хранение и извлечение неструктурированных больших двоичных данных и метаданных с использованием HTTP API. Вместо того, чтобы разбивать файлы на блоки для хранения их на диске с помощью файловой системы, мы имеем дело с целыми объектами, хранящимися по сети. Этими объектами могут быть файл изображения, журналы, файлы HTML или любой отдельный блок байтов. Этоunstructured, потому что нет конкретной схемы или формата, которым они должны следовать.

Хранилище объектов взлетело, потому что это значительно упростило опыт разработчика. Поскольку API состоит из стандартных HTTP-запросов, библиотеки были быстро разработаны для большинства языков программирования. Сохранение большого объема данных стало таким же простым, как запрос HTTP PUT в хранилище объектов. Получение файла и метаданных - это обычный запрос GET. Кроме того, большинство сервисов хранения объектов могут также открыто предоставлять файлы вашим пользователям, устраняя необходимость в поддержке веб-сервера для размещения статических ресурсов.

Кроме того, службы хранения объектов взимают плату только за используемое вами пространство хранения (некоторые также взимают плату за HTTP-запрос и за пропускную способность передачи). Это благо для небольших разработчиков, которые могут получить хранилище и хостинг активов мирового класса по ценам, которые масштабируются с использованием.

Однако хранение объектов не является правильным решением для любой ситуации. Давайте посмотрим на краткое изложение преимуществ и недостатков.

Некоторые преимущества объектного хранилища:

  • Простой HTTP API с клиентами, доступными для всех основных операционных систем и языков программирования

  • Структура затрат, которая означает, что вы платите только за то, что используете

  • Встроенное общедоступное обслуживание статических ресурсов означает, что вы сможете запускать на один сервер меньше

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

  • Необязательное управление версиями означает, что вы можете извлекать старые версии объектов для восстановления после случайной перезаписи данных.

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

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

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

Некоторые недостатки объектного хранилища:

  • Вы не можете использовать сервисы хранения объектов для резервного копирования традиционной базы данных из-за высокой задержки таких сервисов

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

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

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

Существуют некоторые решения для хранения объектов с собственным размещением, хотя вы откажетесь от некоторых преимуществ размещенного решения (таких как отсутствие необходимости беспокоиться о жестких дисках и проблемах масштабирования). Вы можете попробоватьMinio, популярный сервер хранения объектов, написанный на языке Go, илиCeph, илиOpenStack Swift.

Заключение

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

Related