Тема: Библиотека транзакционного доступа к файлам из PostgreSQL
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
1. Постановка задачи 6
2. Обзор 7
2.1. Стандартные средства PostgreSQL 7
2.2. Система контроля версий Git 8
2.3. Прочие подходы 9
3. Предлагаемое решение 13
3.1. Описание решения 13
3.2. Выбор файловой системы 14
4. Реализация 16
4.1. Архитектура библиотеки 16
4.2. Детали реализации 17
4.3. Разграничение адресного пространства 18
4.4. Многопроцессное взаимодействие 20
4.5. Изолированные транзакции 22
5. Функциональное тестирование 23
Заключение 24
Введение 4
1. Постановка задачи 6
2. Обзор 7
2.1. Стандартные средства PostgreSQL 7
2.2. Система контроля версий Git 8
2.3. Прочие подходы 9
3. Предлагаемое решение 13
3.1. Описание решения 13
3.2. Выбор файловой системы 14
4. Реализация 16
4.1. Архитектура библиотеки 16
4.2. Детали реализации 17
4.3. Разграничение адресного пространства 18
4.4. Многопроцессное взаимодействие 20
4.5. Изолированные транзакции 22
5. Функциональное тестирование 23
Заключение 24
Список литературы 25
📖 Введение
Одной из самых популярных объектно-реляционных СУБД является PostgreSQL, которая широко используется в различных областях, включая финансы, науку и образование. Она имеет открытый исходный код, поддерживает репликации, хранимые процедуры и прочие полезные функции, а также совместима с набором требований ACID. Одним из требований ACID является атомарность, которая гарантирует, что транзакция либо будет выполнена полностью, либо не выполняется совсем. Также крайне важно сохранять согласованность данных в базе, особенно при одновременной работе над ней несколькими пользователями, что критично для многих информационных систем, например, для банковских или систем, взаимодействующих с рынком ценных бумаг.
Для хранения данных внутри базы в PostgreSQL предусмотрено множество типов, таких как integer, text, boolean и прочие. Эти типы данных позволяют эффективно хранить и обрабатывать структурированные данные, однако они не подходят для неструктурированных данных, например, бинарных. Основное отличие этих типов данных в том, что неструктурированные данные не соответствуют заранее определенной структуре, из-за этого подходы к хранению и обработке такого рода информации должны отличаться от соответствующих подходов работы со структурированными данными. Примерами бинарных данных, которые может быть полезно хранить в информационной системе, могут быть pdf-документы, картинки, архивы, электронные письма, медицинские данные и тп. Несмотря на то, что перечисленные данные имеют строго определенную внутреннюю структуру, с точки зрения базы данных — это набор байт заданной длины.
Если бинарные данные имеют небольшой размер, то часто для их хранения помимо основной таблицы заводят вспомогательную, в которой хранят мета-информацию, такую как дата последнего изменения и ссылка на конкретную версию файла. Такой способ подходит, если планируется хранить файлы небольшого размера, которые помещаются в страницу фиксированного размера (в PostgreSQL обычно 8 Кб). Однако хранение файлов большого размера, размещение которых требует десятки и более блоков, начинает занимать значительное время. В результате пользователи сталкиваются с проблемами производительности.
В данной работе будут рассмотрены подходы к транзакционному доступу к бинарным файлам внутри СУБД PostgreSQL, предложен подход, позволяющий делать это эффективно с точки зрения занимаемого дискового пространства и времени, а также поддерживающий транзакционность операций над бинарными данными.
✅ Заключение
• Проанализированы существующие подходы к решению задачи хранения бинарных данных в PostgreSQL.
• Определён подход к хранению бинарных данных.
• Реализована библиотека, предоставляющая API для транзакционного доступа к бинарным данным в PostgreSQL.
• Проведено тестирование полученного решения.
Код проекта закрыт и принадлежит компании ООО “Датаджайл”.





