Напредне базе података

Циљ и исход предмета

Упознавање студената са принципима, елементима и начином рада савремених система за управљање базама података. Након овог курса студенти ће бити у стању да разумеју интерну функционалност система за управљање базама података. Биће у стању да анализирају основне алгоритме за евалуацију упита и контролу конкурентности. Моћи ће да имплементирају или модификују постојеће модуле система за управљање базама података и да оцењују њихове перформансе.

Теоријска настава

Физичка архитектура система за управљање базама података. Управљање меморијским простором. Управљање датотекама. Физичка организација база података. Базе у меморији. Индексирање на бази стабла. Indexed Sequential Access Method (ISAM). Претраживање, уметање, брисање и дупликати. Компресија кључа. Масовно учитавање B+ стабла. Индексирање на бази хеширања. Статичко, прошириво и линеарно хеширање. Евалуација упита. Системски каталог. Алгоритми за релационе операције. Екстерно сортирање. Екстерни Merge Sort. Употреба B+ стабала за сортирање. Евалуација релационих оператора. Операција селекције (без индекса – несортирани и сортирани подаци, са индексом – индекс са B+ стаблом, хеш индекс). CNF и подударање индекса. Селекције са дисјункцијом. Операција пројекције. Операција Join. Операције над скуповима. Операција агрегације. Оптимизација упита. Превођење SQL упита у алгебру. Еквиваленције релационе алгебре (селекције, пројекције, пресеци и уније). Упити са више релација. Угњеждени подупити. Оптимизације на бази цене и на бази правила. Управљање трансакцијама. ACID скуп особина. Трансакције и распоређивање. Конкурентно извршавање трансакција. Контрола конкурентности на бази кључева. Подршка трансакцијама у SQL-у. Опоравак од отказа. Атомичност и rollback имплементација. Имплементација дистрибуираних база података. Евалуација паралелних упита. Партиционисање података. Нерелационе и NoSQL базе података. Дедуктивне, темпоралне и просторне базе података.

Практична настава

Систем отвореног кода за управљање базама података MySQL. Анализа архитектуре и експериментална модификација следећих модула: Connection Manager, Thread Manager, Connection Thread, User Authentication, Access Control, Parser, Command Dispatcher, Query Cache, Optimizer, Table Manager, Table Modification, Table Maintenance, Status Reporting, Abstracted Storage Engine Interface, Storage Engine Implementations (MyISAM, InnoDB, MEMORY, Berkeley DB), Logging, Replication Master, Replication Slave, Client/Server Protocol API.