wiki:AdvancedTopic

Version 3 (modified by 231101, 3 weeks ago) ( diff )

--

Напредна тема

Вовед

Во рамки на проектот 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, базата на податоци доби подобри перформанси, подобра организација и поголема скалабилност. Оваа фаза покажува дека системот е дизајниран според современи принципи за работа со големи бази на податоци и е подготвен за понатамошно проширување и реална употреба.

Note: See TracWiki for help on using the wiki.