wiki:AdvancedTopics

Version 3 (modified by 231105, 5 days ago) ( diff )

--

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

Зошто се одлучивме за темата Партиционирање ?

Во овој проект се одлучивме да примениме партиционирање на табели (table partitioning) со цел да се подобрат перформансите, скалабилноста и одржливоста на базата на податоци. Системот претставува железничка платформа каде што се генерира голем обем на податоци, особено за патувања, билети и плаќања, кои со тек на време значително се зголемуваат. Поради тоа, класичен пристап со една голема табела би довел до намалени перформанси и побавно извршување на SQL барања.

За решавање на овој проблем користевме RANGE партиционирање базирано на временски атрибути, бидејќи податоците во системот се природно временски ориентирани, освен за билетите за нив користевме HASH партиционирање.

==1. Train Trip табела – партиционирање по departure_time

Табелата Train_Trip претставува централна табела во системот, бидејќи ги содржи сите информации за железничките патувања (време на поаѓање, пристигнување, статус, воз, вработени итн.).

Причини за партиционирање:

  1. Висока фреквенција на податоци

Секој ден се генерираат нови патувања. Со тек на време, оваа табела станува една од најголемите во системот.

  1. Природна временска структура

Секое патување има точно дефиниран departure_time. Овој атрибут е идеален за RANGE партиционирање.

  1. Типични прашања во системот

„Сите патувања во одреден месец“ „Патувања во 2026 година“ „Доцнења во последната недела“

Овие барања бараат временско филтрирање, кое со партиционирање се извршува многу побрзо.

Како помага партиционирањето:

Со месечни партиции, PostgreSQL чита само дел од податоците (приближно 1/12 од годишните податоци), наместо целата табела. Ова значително ја подобрува брзината на SELECT, UPDATE и DELETE операции.

Дополнително, DEFAULT партицијата овозможува стабилност при внесување на податоци кои не спаѓаат во дефинираните временски интервали.

Attachments (22)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.