| 1 | | == Напредна тема |
| | 1 | = Напредна тема |
| | 2 | |
| | 3 | == Зошто се облучивме за темата Партиционирање ? |
| | 4 | |
| | 5 | Во овој проект се одлучивме да примениме партиционирање на табели (table partitioning) со цел да се подобрат перформансите, скалабилноста и одржливоста на базата на податоци. Системот претставува железничка платформа каде што се генерира голем обем на податоци, особено за патувања, билети и плаќања, кои со тек на време значително се зголемуваат. Поради тоа, класичен пристап со една голема табела би довел до намалени перформанси и побавно извршување на SQL барања. |
| | 6 | |
| | 7 | За решавање на овој проблем користевме RANGE партиционирање базирано на временски атрибути, бидејќи податоците во системот се природно временски ориентирани, освен за билетите за нив користевме HASH партиционирање. |
| | 8 | |
| | 9 | ==1. Train Trip табела – партиционирање по departure_time |
| | 10 | |
| | 11 | Табелата Train_Trip претставува централна табела во системот, бидејќи ги содржи сите информации за железничките патувања (време на поаѓање, пристигнување, статус, воз, вработени итн.). |
| | 12 | |
| | 13 | Причини за партиционирање: |
| | 14 | |
| | 15 | 1. Висока фреквенција на податоци |
| | 16 | |
| | 17 | Секој ден се генерираат нови патувања. |
| | 18 | Со тек на време, оваа табела станува една од најголемите во системот. |
| | 19 | |
| | 20 | 2. Природна временска структура |
| | 21 | |
| | 22 | Секое патување има точно дефиниран departure_time. |
| | 23 | Овој атрибут е идеален за RANGE партиционирање. |
| | 24 | |
| | 25 | 3. Типични прашања во системот |
| | 26 | |
| | 27 | „Сите патувања во одреден месец“ |
| | 28 | „Патувања во 2026 година“ |
| | 29 | „Доцнења во последната недела“ |
| | 30 | |
| | 31 | Овие барања бараат временско филтрирање, кое со партиционирање се извршува многу побрзо. |
| | 32 | |
| | 33 | Како помага партиционирањето: |
| | 34 | |
| | 35 | Со месечни партиции, PostgreSQL чита само дел од податоците (приближно 1/12 од годишните податоци), наместо целата табела. Ова значително ја подобрува брзината на SELECT, UPDATE и DELETE операции. |
| | 36 | |
| | 37 | Дополнително, DEFAULT партицијата овозможува стабилност при внесување на податоци кои не спаѓаат во дефинираните временски интервали. |