1. Введение 4
2. Постановка задачи 6
3. Обзор 7
3.1. PostgreSQL Large Objects 7
3.2. bytea 7
3.3. Работа с метаданными файлов 8
3.4. Внешние хранилища данных 10
4. Предлагаемое решение 11
4.1. Описание решения 11
4.2. Расширение PostgreSQL для работы с ZFS 13
5. Тестирование и апробация 18
6. Заключение 19
Список литературы 20
Количество информации, которая генерируется и хранится в компьютерах пользователей, постоянно возрастает: по оценкам некоторых источников [4] объем информации, доступной в сети Интернет, измеряется в зеттабайтах. Эти объемы информации требуют круглосуточного хранения и постоянной обработки. Одним из основных способов хранения и работы с данными являются системы управления и обработки информации (СУБД). Учитывая различный характер видов информации, которыми оперируют пользователи, и способов их обработки, существует большое количество различных СУБД, но наибольшее распространение и развитие получили реляционные СУБД.
Современные реляционные СУБД имеют широкие возможности для представления, хранения и обработки разнородных данных пользователей. Существенная доля этих данных вносится в СУБД в неструктурированном (не реляционном) формате. Яркими примерами систем хранения и обработки неструктурированной информации являются DLP- системы и торговые системы. DLP-системы [1] отвечают за безопасность информационного обмена и сигнализируют о возможных утечках. Такие системы оперируют большим количеством данных пользователей, в число которых входят: документы, изображения, обмен информацией через файловые хранилища и другие действия пользователей. Различные торговые системы часто хранят тысячи и сотни тысяч изображений товаров и должны иметь возможность оперативно работать с этими данными. Организация хранения неструктурированных бинарных данных в БД является сложной и актуальной задачей, которую разработчики должны решать при создании информационной системы.
Распространенным способом хранения неструктурированной информации в компьютерных системах являются файлы. СУБД также имеют множество различных решений, которые позволяют разработчикам реализовывать программные компоненты для связи информации в базах данных и файловых хранилищах. Можно выделить такие решения, как наличие в СУБД специализированных типов данных и модулей для хранения произвольных бинарных данных, возможность интеграции с внешними объектными хранилищами, поддержка в СУБД стандарта SQL/MED и другие решения. Представленные подходы не лишены недостатков, их использование усложняет процесс разработки информационных систем и связанных с ним задач хранения и обработки произвольных неструктурированных данных пользователей. Поэтому задача реализации эффективных и простых инструментов для разработчика, позволяющих оперировать большими объемами неструктурированной информации (изображения, файлы, документы и т.п.) в базах данных является актуальной. Обязательным условием реализации этих инструментов должна быть поддержка основных гарантий транзакционных систем при хранении и обработке неструктурированных данных пользователя.
В работе предложен и реализован новый способ прямого доступа из СУБД к файлам пользователей, расположенных на подключаемом внешнем хранилище. В качестве СУБД в работе выбрана PostgreSQL, файлы пользователей размещаются в пулах файловой системы ZFS. Работа выполняется в команде из двух человек. В данной работе рассматривается верхний уровень всей системы - создание расширения для СУБД, которое позволит разрабатывать интерфейсы прямого доступа к файловым хранилищам ZFS на языке SQL.
В ходе работы были достигнуты следующие результаты.
• Проанализированы существующие подходы к решению задачи работы с бинарными данными в PostgreSQL.
• Определен подход к реализации взаимодействия с файловой системой ZFS в PostgreSQL.
• Реализовано расширение для взаимодействия с файловой системой ZFS.
• Проведено тестирование разработанного решения.
Код проекта закрыт и принадлежит компании ООО ”Датаджайл”.