Тип работы:
Предмет:
Язык работы:


Библиотека транзакционного доступа к файлам из PostgreSQL

Работа №147305

Тип работы

Магистерская диссертация

Предмет

информационные системы

Объем работы36
Год сдачи2024
Стоимость5500 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
12
Не подходит работа?

Узнай цену на написание


Введение 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
Введение 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.
• Проведено тестирование полученного решения.
Код проекта закрыт и принадлежит компании ООО “Датаджайл”.


[1] AcidFS documentation // Pylons project. — Access mode: https: //docs.pylonsproject.org/projects/acidfs/en/latest/ (online; accessed: 21.01.2024).
[2] Albe Laurenz. Binary data performance in PostgreSQL // Cybertec, professional partner for PostgreSQL services, support and training. — 2020. — Access mode: https://www.cybertec-postgresql.com/ en/binary-data-performance-in-postgresql/ (online; accessed: 24.05.2023).
[3] Angkaprasert Tinnaphob and Chanchio Kasidit. A Backup Mechanism of Virtual Machine Checkpoint Image using ZFS Snapshots // 2023 20th International Joint Conference on Computer Science and Software Engineering (JCSSE). — 2023. — P. 506-511.
[4] BinaryFilesInDB // PostgreSQL Wiki. — 2021. — Access mode: https: //wiki.postgresql.org/wiki/BinaryFilesInDB (online; accessed: 25.11.2022).
[5] Armbrust Michael, Das Tathagata, Sun Liwen, Yavuz Burak, Zhu Shixiong, Murthy Mukul, Torres Joseph, van Hovell Herman, lonescu Adrian, Luszczak Alicja, undefinedwitakowski Michal, Szafranski Michal, Li Xiao, Ueshin Takuya, Mokhtar Mostafa, Boncz Peter, Ghodsi Ali, Paranjpye Sameer, Senster Pieter, Xin Reynold, and Zaharia Matei. Delta Lake: High-Performance ACID Table Storage over Cloud Object Stores // Proc. VLDB Endow. — 2020. — aug. — Vol. 13, no. 12. — P. 3411-3424. — Access mode: https://doi.org/10.14778/3415478.3415560 (online; accessed: 11.01.2024).
[6] Wright Charles, Spillane Richard, Sivathanu Gopalan, and Zadok Erez. Extending ACID semantics to the file system // TOS. — 2007. — 06. — Vol. 3.
[7] Fittl Lukas. 5mins of Postgres E3: Postgres performance cliffs with large JSONB values and TOAST // pgAnalyze Blog. — 2022. — Access mode: https://pganalyze.com/blog/ 5mins-postgres-jsonb-toast (online; accessed: 02.01.2023).
[8] Hilliger von Thile Alexander Melzer Ingo. Smart files: combining the advantages of DBMS and WfMS with the simplicity and flexibility of spreadsheets // Gesellschaft fur Informatik e.V. — 2005. — Access mode: https://dl.gi.de/items/ 0a610b84-20ad-4366-9a5b-e9c1e03f2ce9 (online; accessed: 10.01.2024).
[9] Paolucci Nicola. How to handle big repositories with Git // Atlassian tutorial. — Access mode: https://www.atlassian.com/ru/ git/tutorials/big-repositories (online; accessed: 07.01.2024).
[10] TOAST // PostgreSQL Documentation. — 2015. — Access mode: https://www.postgresql.org/docs/current/storage-toast.html (online; accessed: 25.11.2022).
[11] Vondra Tomas. Postgres vs. File Systems: A
Performance Comparison // EDB Blog. — 2022. — Access mode: https://www.enterprisedb.com/blog/
postgres-vs-file-systems-performance-comparison (online; accessed: 02.01.2023).
[12] Меликов Георгий. ZFS: архитектура, особенности и отличия от других файловых систем // «Завтра облачно», журнал о цифровой трансформации от VK Cloud Solutions. — 2020. — Access mode: https://mcs.mail.ru/blog/ zfs-arhitektura-osobennosti-i-otlichija (online; accessed: 02.01.2023).



Работу высылаем на протяжении 30 минут после оплаты.




©2024 Cервис помощи студентам в выполнении работ