Статья по системам хранения данных – до сих пор одна из самых читаемых в этом блоге, хотя опубликована уже пять лет назад. Однако, в ней не описаны объектные системы хранения. Продолжаем тему.
***
Объёмы хранимых данных быстро. Аналитическое агентство IDC предсказывает, что к 2020 году общий объём данных в системах хранения достигнет 40 зеттабайт (1021байт), причем преобладают неструктурированные данные, для которых объектные системы подходят больше всего.
Прогноз по объёмам и типам хранимых данных (Worldwide and U.S. Enterprise Storage Systems Forecast Update, Natalya Yezhkova, 2016–2020)
Поэтому важно разобраться в том, что такое объектные системы хранения, и чем они отличаются от файловых и блочных. Напомним кратко, что такое блочное и файловое хранение.
Обычно, первичные данные хранятся в виде блоков и файлов в дата-центре. В частности, функции блочного хранения используются на низких уровнях, в виде блоков фиксированного размера, которые легко индексируются и находятся в системе хранения. Отсюда и название: «структурированные» данные. Обычно это устройства SAN (Storage Attached Network).
https://shalaginov.com/2019/08/06/6262/
Файловая система хранения, однако, часто организуется в иерархии файлов и папок, которые существуют в системах хранения NAS (Network Attached Storage). В устройствах SAN используются протоколы iSCSI и Fibre Channel, а в файловых системах NAS используются протоколы SMB или NFS.
Эти типы хранилищ обычно располагаются поблизости от вычислительных ресурсов. Однако по мере того, как объёмы данных продолжают расти. По большей части частности, это т.н. «холодные» данные, которые нечасто используются при вычислениях, но их, тем не менее все равно нужно хранить. Поэтому, должны быть варианты для эффективного, надёжного и экономичного хранения этих данных.
Объектные системы хранения предназначены для неструктурированных данных, которые являются высоко масштабируемыми и устойчивыми для мира облачных вычислений. Неструктурированные данные не являются фиксированным форматом и состоят из файлов разного размера.
Вот некоторые типичные характеристики объектных систем хранения:
- Данные хранятся как объекты, а не в виде с традиционными блоками, или файлов, состоящих из тех же блоков
- Объекты могут включать в себя самые разные форматы: резервные копии, архивы, видео, изображения, лог-журналы, файлы HTML и т.д.
- Они неструктурированы по своей природе, потому что нет единого формата для способа хранения таких данных.
- В отличие от структуры каталогов, которая имеется в традиционных файловых системах хранения, в нем используется простой список объектов, хранящихся в «пакетах» (buckets).
- Объекты хранятся с использованием уникальных идентификаторов, а не имён файлов, что резко снижает «накладные расходы» (служебную информацию), необходимые для хранения данных.
- Объекты хранятся вместе с определёнными пользователем метаданными, что облегчает поиск объектов при масштабировании данных.
- Объекты могут иметь как терабайтные объёмы, так и быть размером в несколько килобайт, а один “пакет” может содержать миллиарды объектов.
- Разработчики приложений могут легко получить доступ к объектам, используя простые команды через интерфейсы API с помощью запросов «GET» и «PUT» без сложных структур каталогов.
Различия между тремя вариантами хранения:
Основные различия между блочными, файловыми и объектными системами хранения
Объекты могут иметь разные форматы и размеры, и обращаются к ним через определённый URL-адрес, который построен с именем пакета (bucketname) и идентификатора (objectID) объекта. Например, так:
Пример: https://bucketname.companyname.com/objectID.ext
Пакеты не вложены как файлы, папки или данные в другие пакеты. Они доступны в едином пространстве имён и могут увеличиваться в размере от нескольких терабайт до петабайт. Взаимодействие с данными при этом проще из-за единого пространства имён, которое представляет собой единый логический вид данных, которые могут охватывать много устройств хранения.
Давайте разберём пример, чтобы лучше понять различия между блоком и объектом. Как файл 100 МБ обрабатывается в решении объектного хранения по сравнению с блочным решением?
https://shalaginov.com/2019/08/06/6262/
Когда данные записываются в блочное хранилище, файл 100 МБ разбивается на гранулярные блоки фиксированного размера. Объектном хранилище, файл записывается целиком. Блоки работают хорошо для интерактивных локальных запросов, но имеют ограниченные возможности масштабирования. В случае обновления файла размером 100 Мбайт, блочное хранилище может производить гранулярные обновления без замены всего файла 100 МБ. Это отлично подходит для работы с транзакционными базами данных.
Напротив, когда файл 100 МБ обновляется в объектном хранлище, весь объект можно легко помещать в пакет (bucket), не разбивая файл на блоки с фиксированными размерами. Это полное обновление делает хранение объектов идеальным для наборов данных, которые редко обновляются. Объектное хранилище обычно выбирается для данных WORM, которые пишутся один раз, но читаются много раз (Write Once Read Many). Объектное хранилище хорошо масштабируется, поскольку может постоянно расти в соответствии с требованиями, оно построено с избыточностью, чтобы обеспечить постоянную доступность данных, снижает совокупную стоимость владения ТСО.
Различие между блочным и объектным хранилищем для файла в 100 МБ
Объектное хранилище подходит не для всех объёмов данных и сценариев, но, безусловно, имеет много применений. Вот некоторые рекомендации, в каких случаях целесообразно использовать объектные системы хранения:
- Долгосрочное сохранение, например, различные данные нормативной документации, данные WORM
- Резервные копии – дампы базы данных, файлы журналов, резервные копии существующего программного обеспечения
- Среда разработки DevOps – одно глобальное пространство имён, которое легко доступно с использованием простых запросов PUT и GET для управления различными объектами: изображениями, медиафайлами и пр.
- Неструктурированные данные – мультимедийные файлы, документы, статические изображения, звуковые и видеофайлы
- Отрасли с большими наборами данных:
- Здравоохранение – электронные медицинские записи, цифровые изображения, данные системы PACS
- Финансово-торговая платформы, данные электронной почты, мессенджеры, данные системы нормативного архива
- Статический веб-контент – большие HTML-файлы и изображения для сайтов.