Changes between Version 1 and Version 2 of AdvancedTopics


Ignore:
Timestamp:
05/21/26 18:33:15 (5 days ago)
Author:
231105
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedTopics

    v1 v2  
    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
     151. Висока фреквенција на податоци
     16
     17Секој ден се генерираат нови патувања.
     18Со тек на време, оваа табела станува една од најголемите во системот.
     19
     202. Природна временска структура
     21
     22Секое патување има точно дефиниран departure_time.
     23Овој атрибут е идеален за RANGE партиционирање.
     24
     253. Типични прашања во системот
     26
     27„Сите патувања во одреден месец“
     28„Патувања во 2026 година“
     29„Доцнења во последната недела“
     30
     31Овие барања бараат временско филтрирање, кое со партиционирање се извршува многу побрзо.
     32
     33Како помага партиционирањето:
     34
     35Со месечни партиции, PostgreSQL чита само дел од податоците (приближно 1/12 од годишните податоци), наместо целата табела. Ова значително ја подобрува брзината на SELECT, UPDATE и DELETE операции.
     36
     37Дополнително, DEFAULT партицијата овозможува стабилност при внесување на податоци кои не спаѓаат во дефинираните временски интервали.