== Вовед === Општа Цел Оваа фаза има цел да имплементира партиционирање на клучни табели во AirportDB базата на податоци за да се подобрат перформансите на системот, олесни одржувањето на податоците и овозможи поефикасно процесирање на големи волумени на податоци кои се типични за авиоиндустрија. === Зошто Партиционирање? '''Специфични предизвици на AirportDB:''' * Континуиран раст на податоци за летови (секојдневно се додаваат нови летови) * Историски податоци што се акумулираат со години (weatherdata) * Честа потреба за пристап до актуелни податоци, додека стари податоци се ретко користат * Сезонски query-ја (пребарување на летови по датум, сезона, временски услови) '''Очекувани придобивки:''' * Подобрени Перформанси * Полесно Одржување * Скалабилност == Анализа на AirpotdDB табели * Табелата '''airline''' не треба да биде партиционирана затоа што содржи мал број податоци и нема потреба од подобрување на перформанси преку партиционирање. * Табелата '''airplane_type''' не треба да се партиционира затоа што содржи мал број статични записи и нема практична добивка од партиционирање. * Табелата '''airplane''' не треба да биде партиционирана затоа што содржи ограничен број редови, нема колона погодна за партиционирање и не би се добила никаква подобрување во перформансите. * Табелата '''airport_geo''' е lookup табела и треба да остане непартиционирана. * Табелата '''airport_reachable''' има специфична, ограничена намена и мала големина. Партиционирањето би додало административен товар без вистинска корист за перформансите. * Табелата '''airport''' не треба да биде партиционирана затоа што содржи ограничен број статични записи и нема колона погодна за поделба на податоците по партиции. * Табелата '''booking''' е добар кандидат за партиционирање бидејќи може да содржи огромен број на редови со тек на време. Партиционирањето би помогнало за подобри перформанси и полесно управување со историски податоци — особено ако се воведе колона со датум за да се партиционира по време. Но не може да биде партиционирана во MySQL затоа што содржи foreign keys(flight_id, passenger_id). Иако има голем обем на податоци и би имало смисла логички, ограничувањата на MySQL не дозволуваат партиционирање на такви табели. * Табелата '''employee''' не треба да биде партиционирана затоа што содржи релативно мал број записи, нема природен критериум за поделба на партиции и партиционирањето не би донело никакво подобрување на перформансите. * Табелата '''flight_log''' има голем обем на податоци и би била идеална за партиционирање по log_date. Меѓутоа, бидејќи содржи foreign key (flight_id), MySQL не дозволува партиционирање, така што во пракса оваа табела не може да се партиционира додека постои foreign кey. == Имплементација == Тестирање и Перформанси == Предности и Недостатоци == Заклучок и Препораки