= Напредна тема == Вовед Во рамки на проектот Universal Library Management System 2026, во шестата фаза беше имплементирана напредна техника за оптимизација на базата на податоци – партиционирање (Partitioning). Оваа фаза овозможува подобрување на перформансите, организацијата и скалабилноста на системот, особено при работа со големи количини податоци. Библиотечните системи секојдневно обработуваат огромен број информации поврзани со позајмување книги, резервации, казни, членства и локации. Со текот на времето, табелите стануваат сè поголеми, што може да доведе до забавување на пребарувањата, обработката и извршувањето на SQL операции. Поради тоа, беше избрана техниката partitioning како современо решение за организација и оптимизација на податоците. == Цел на имплементацијата Главната цел на оваа фаза беше: • оптимизација на перформансите, • побрзо пребарување и филтрирање на податоци, • подобра организација на табелите, • олеснето одржување на базата, • подобрување на скалабилноста на системот, • подготовка на системот за работа со многу големи количини податоци во иднина. Со партиционирањето, системот станува поефикасен и поспремен за реална продукциска околина. = Имплементирани типови на партиционирање Во проектот беа имплементирани два различни типа на partitioning: == 1. RANGE Partitioning Овој тип на partitioning се користи кога податоците се делат според одреден опсег на вредности, најчесто датуми. '''Табела borrowing_new''' Табелата borrowing_new беше партиционирана според колоната borrow_date. Секоја партиција содржи записи за една календарска година: • borrowing_2015 • borrowing_2016 • ... • borrowing_2027 На овој начин, кога се пребаруваат податоци за одредена година, системот пристапува само до конкретната партиција наместо до целата табела. '''Предности''' • значително побрзо пребарување по датум, • подобра организација на историски податоци, • намалување на времето за извршување на queries, • полесно архивирање на постари податоци. '''Табела reservation_new''' Исто така беше применет RANGE partitioning и кај табелата reservation_new, според колоната requested_date. Резервациите беа поделени по години: • reservation_2015 • reservation_2016 • ... • reservation_2027 Со ова се подобрува обработката на резервации и анализа на податоците по временски периоди. == 2. LIST Partitioning LIST partitioning се користи кога податоците се делат според однапред дефинирани вредности. '''Табела fine_new''' Табелата fine_new беше партиционирана според fee_type_id. Секоја партиција претставува различен тип на казна: • членарина, • резервација, • доцнење, • оштетена книга, • изгубена книга. Партициите се: • fine_membership • fine_reservation • fine_late_return • fine_damaged • fine_lost '''Предности''' • побрзо филтрирање по тип на казна, • подобра организација на финансиските записи, • поефикасна статистичка анализа, • олеснето одржување на системот. '''Табела location_new''' Кај табелата location_new беше имплементирано LIST partitioning според колоната floor. Секоја партиција претставува одреден кат во библиотеката: • location_floor_1 • location_floor_2 • location_floor_3 • location_floor_4 • location_floor_5 '''Предности''' • подобра организација на физичките локации, • побрзо пребарување книги по кат, • подобра логичка распределба на податоците, • поедноставено управување со библиотечните простории. == Миграција на податоците При имплементацијата на partitioning беше потребно да се изврши миграција на податоците од оригиналните табели во новокреираните partitioned табели. Причината за ова е што во PostgreSQL постоечка табела која веќе содржи податоци не може директно да се конвертира во partitioned table со едноставна SQL наредба. Partitioning мора да биде дефиниран уште при самото креирање на табелата преку PARTITION BY. Поради тоа беше применет следниот процес: 1. Креирање на нова parent partitioned табела. 2. Креирање на сите потребни partitions. 3. Миграција на податоците од оригиналната табела во новата partitioned структура. 4. Автоматско распределување на записите во соодветните partitions. == Придобивки од имплементацијата Имплементацијата на partitioning овозможи повеќе значајни придобивки: • Подобрување на перформансите Системот пребарува само релевантна партиција наместо целата табела, што значително го намалува времето на извршување. •Подобра скалабилност Базата на податоци може да обработува многу поголем број записи без значително намалување на перформансите. •Полесно одржување Секоја партиција може индивидуално да се менаџира, backup-ира или архивира. •Подобра организација Податоците се логички групирани според: година, тип на казна, кат на библиотеката. •Оптимизација на storage management Се намалува непотребното скенирање на записи и се подобрува искористеноста на ресурсите. == Заклучок Партиционирањето претставува напредна техника за оптимизација која значително ја подобрува ефикасноста на системот Universal Library Management System 2026. Со имплементацијата на RANGE и LIST partitioning, базата на податоци доби подобри перформанси, подобра организација и поголема скалабилност. Оваа фаза покажува дека системот е дизајниран според современи принципи за работа со големи бази на податоци и е подготвен за понатамошно проширување и реална употреба.