УДК 004.65

ПРИМЕНЕНИЕ БОЛЬШИХ БИНАРНЫХ ОБЪЕКТОВ ДЛЯ ХРАНЕНИЯ ИЗОБРАЖЕНИЙ

Ивкин Игорь Михайлович
Пензенский Государственный Университет
Аспирант кафедры МО и ПЭВМ

Аннотация
Статья описывает некоторые инженерно-технические аспекты применения больших бинарных объектов в качестве хранилищ изображений в вебе. Она является логическим продолжением публикации "Применение бинарных объектов в качестве хранилищ для большого количества файлов" и иллюстрирует модифицированный и доработанный способ такого хранения данных.

Ключевые слова: бинарные объекты, хранение изображений


HOW TO USE BINARY LARGE OBJECTS TO STORE THE PICTURES

Ivkin Igor Michaylovitch
Penza State University
Post-graduate of department of CS

Abstract
The article describes some technical issues of using BLOBs (Binary Large OBjects) as storages for pictures on web-environment. It continues previously published topic "Using of Large Binary objects to store big volume of data" and demonstrates an improved and remastered way to store such kind of data.

Keywords: Binary Large Objects, BLOBs, storages for pictures


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Ивкин И.М. Применение больших бинарных объектов для хранения изображений // Современные научные исследования и инновации. 2013. № 9 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2013/09/26350 (дата обращения: 03.10.2017).

Введение.

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

Как показано в статье [1], возможным подходом к хранению многочисленных файлов является использование больших бинарных объектов. Подход  подразумевает хранение всех требуемых данных в двоичном виде в очень больших файлах с произвольным доступом для чтения и последовательным доступом для записи. Хорошим примером таких данных являются пользовательские изображения или фотографии.

Очень большое количество фотографий – характерная и острая проблема для сайтов объявлений. Среднее количество фотографий объекта недвижимости составляет, по исследованиям Национальной ассоциации риэлторов  Франции, около 30 штук [2], а объявления о продаже автомобилей содержат от 3 до 7 изображений. Таким образом, два миллиона объявлений о недвижимости будут содержать около 60 миллионов изображений. Каждое изображение имеет значение для покупателя и продавца, поэтому утрата этих файлов нежелательна, также требуется обеспечивать быстрый доступ среди десятков миллионов хранимых изображений к конкретным фотографиям.

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

Структура файловой системы.

В статье [1] указано, что рекомендуемым способом адресации хранимых данных в большом бинарном объекте является смещение от начала объекта, то есть от нулевого байта. Это смещение предлагается задавать в количестве блоков определенного размера. Разумно выбрать блок размером 512 байт, поскольку 512 байт – это стандартный размер физического сектора на подавляющем большинстве накопителей на жестких магнитных дисках.

Используя 32-битное беззнаковое целое для хранения этого смещения, мы можем адресовать данные, хранимые в большом бинарном объекте размером в 2 терабайта, что является следствием из соотношения 232 * 512 байт = 2 199 023 255 552 байт = 2 097 152 мегабайт = 2048 гигабайт = 2 терабайта. При среднем размере изображения в 70 килобайт (71 680 байт), можно рассчитать, что этого объема хватит приблизительно на 30 670 000 изображений.

Необходимо отметить также, что хранение файлов размером в 2 терабайта – источник серьезных проблем администрирования, создания резервных копий и восстановления некачественных данных в результате аппаратных сбоев. Использование большого бинарного объекта размером в 2 терабайта означает также, что огромный объем данных (30 000 000 изображений) должен физически находиться на одном компьютере и обуславливает невозможность его размещения порционно на нескольких вычислительных машинах.

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

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

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

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

Уменьшается и время «холодного» запуска системы. За счет уменьшения размера бинарных объектов, построение дерева в памяти происходит быстрее. Процедуру построения для нескольких томов можно проводить параллельно, поскольку данные являются независимыми.

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

Стратегия поиска Map-Reduce.

Эта стратегия основывается на подходе Map-Reduce, популяризованном компанией Google. Суть ее состоит в том, что главный вычислительный узел (Master Node в терминологии Map-Reduce) инициирует поиск элемента во всех томах. Затем он агрегирует результаты поиска и, соответственно, получает какой-либо результат.

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

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

Стратегия поиска по параметризованному идентификатору.

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

Основная идея этой стратегии состоит в именовании элементов таким образом, чтобы имя элемента содержало всю мета-информацию о его местонахождении, такую как идентификатор тома, а также смещение относительно начала тома. Например, если данные хранятся в 6 томах, каждый по 128 гигабайт, и необходимо получить изображение из 5 тома, которое находится через 512 000 байт от начала файла, название элемента может выглядеть как 5-512000.

Достоинство этого подхода в том, что из операции поиска элементов полностью исключается собственно поиск. Имея параметризованное название элемента в каком-либо хранилище (это может быть база данных объявлений, содержащая также список картинок, привязанных к объявлению, по принципу «одно-ко-многим»), можно мгновенно получить данные из указанного тома по указанному смещению.

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

Заключение.

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

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

Метод будет дорабатываться и в дальнейшем. Описанные стратегии поиска элементов являются компромиссными и имеют существенные недостатки, поэтому целью будущих исследований является их совершенствование.


Библиографический список
  1. Ивкин И.М. Применение бинарных объектов в качестве хранилищ для большого количества файлов. // Современные научные исследования и инновации. – № 6 Июнь 2012 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2012/06/15556
  2. FNAIM – Les Metiers de’l Immobilier – 2012 [Электронный ресурс]. URL: http://www.fnaim.fr/3662-les-metiers-de-l-immobilier.htm


Все статьи автора «Toledo»


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

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: