Сучасні системи баз даних

Вибіркова дисципліна
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5.
Кількість аудиторних занять: 
Лекційних занять - 15, лабораторних занять 7.
Самостійна робота: 
91 годин.
Семестровий контроль: 
Залік.
Освітню компоненту забезпечує: 
Анотація: 

Анотація навчальної дисципліни
Курс "Сучасні системи баз даних" пропонує глибоке занурення у світ NoSQL технологій та їх застосування в сучасній розробці програмного забезпечення. Студенти отримають комплексне розуміння різноманітних NoSQL систем, їх архітектури та принципів роботи.
Курс починається з огляду NoSQL концепцій та порівняння їх з реляційними базами даних. Далі розглядаються основні типи NoSQL баз даних: ключ-значення (Redis), документоорієнтовані (MongoDB), колонкові (Apache Cassandra) та графові (Neo4j).
Особлива увага приділяється практичному застосуванню цих технологій. Студенти навчаться проектувати, створювати та оптимізувати бази даних, використовуючи специфічні для кожної системи мови запитів та інструменти.
Курс також охоплює фундаментальні теми, такі як шардинг, реплікація, CAP теорема, та концепцію Polyglot Persistence. Додатково розглядаються спеціалізовані рішення, як-от Elasticsearch для повнотекстового пошуку та Apache Hadoop для обробки великих даних.
Практичні заняття дозволять студентам отримати hands-on досвід роботи з різними NoSQL системами, виконуючи реальні завдання з моделювання даних, написання запитів та оптимізації продуктивності.
Після завершення курсу студенти будуть здатні обирати відповідні NoSQL рішення для різних сценаріїв використання, ефективно проектувати та реалізовувати системи зберігання даних, а також оптимізувати їх для високої продуктивності та масштабованості.

Тематика та види навчальних занять

Для денної форми здобуття освіти

Лекційні заняття
Лекція 1. «Вступ. Big Data. Основні властивості NoSQL і реляційних баз даних».
Лекція 2. «Типи NoSQL баз даних. Polyglot persistence».
Лекція 3. «Основні принципи NoSQL баз даних (масштабування, шардинг, реплікація, CAP теорема)».
Лекція 4. «Бази даних типу «ключ-значення»: Redis. Структури даних Redis».
Лекція 5. «Redis: приклади використання, транзакції, збереження даних, пошук, кешування».
Лекція 6. «Бази даних типу «документ»: MongoDB. CRUD операції».
Лекція 7. «MongoDB: агрегація, індексування».
Лекція 8. «Широкополосні бази даних: Apache Cassandra».
Лекція 9. «Графові баз даних: Neo4j. Graph Traversal Framework».
Лекція 10. «Neo4j: мова запитів Cypher».
Лекція 11. «Додаткові аспекти графових баз даних».
Лекція 12. «Виклики Polyglot Persistence».
Лекція 13. «Apache Hadoop: MapReduce, HDFS».
Лекція 14. «Elasticsearch».
Лекція 15. «Сховища RDF. SPARQL».

Практичні заняття
Практичне заняття №1. «Особливості основних типів NoSQL баз даних. Polyglot Persistence. Вибір типу NoSQL бази даних для різних частин проєкту».
Мета заняття: Ознайомитися з поняттям Polyglot Persistence. Навчитися аргументовано вибирати типи NoSQL баз даних для різних частин проєкту залежно від задач і вимог.

Практичне заняття №2. «База даних типу ключ-значення Redis».
Мета заняття: Ознайомитися з NoSQL базою даних Redis та її структурами даних. Навчитися писати запити до Redis БД. Імплементувати найпоширеніші завдання Redis: сесії користувачів, кошик користувача, кешування.

Практичне заняття №3. «База даних типу документ MongoDB».
Мета заняття: Ознайомитися з базою даних MongoDB. Навчитися створювати колекції та наповнювати їх документами, виконувати запити на оновлення та пошук даних.

Практичне заняття №4. «Агрегація у базі даних MongoDB».
Мета заняття: Навчитися писати запити до MongoDB з використанням агрегації.

Практичне заняття №5. «Широкополосна база даних Apache Cassandra».
Мета заняття: Ознайомитися з NoSQL базою даних Cassandra та її основними типами даних. Навчитися проєктувати та створювати таблиці, наповнювати їх даними. Навчитися писати запити до БД Cassandra.

Практичне заняття №6. «Графова база даних Neo4j».
Мета заняття: Ознайомитися з базою даних Neo4j та мовою запитів Cypher. Навчитися створювати графову базу даних, писати запити до неї. 

Практичне заняття №7. «Використання фреймворку Mapreduce для опрацювання великих даних».
Мета заняття: Навчитися виконувати аналіз даних за допомогою Mapreduce.

Для заочної форми здобуття освіти

Лекційні заняття
Лекція 1. «Основні принципи NoSQL даних, типи NoSQL баз даних».
Лекція 2. «Redis, MongoDB, Cassandra, Neo4j».

Практичні заняття
Практичне заняття №1. «База MongoDB».
Мета заняття: Ознайомитися з базою даних MongoDB. Навчитися створювати колекції та наповнювати їх документами, виконувати запити на оновлення та пошук даних, використовувати агрегацію.

Практичне заняття №2. «Графова база даних Neo4j».
Мета заняття: Ознайомитися з базою даних Neo4j та мовою запитів Cypher. Навчитися створювати графову базу даних, писати запити до неї. 

Консультації здійснюються впродовж семестру згідно встановленого розкладу.

 Індивідуальна робота

Для денної форми здобуття освіти
Створити проєкт на основі Polyglot Persistence, який включає реляційну та всі вивчені в курсі NoSQL бази даних.

Для заочної форми здобуття освіти
Створити проєкт на основі Polyglot Persistence, який включає реляційну та щонайменше дві різні NoSQL бази даних.

 Форми контрольних заходів та оцінювання результатів навчання

Для денної форми здобуття освіти
Опитування на лекціях, перевірка лабораторних робіт, модульні контрольні роботи, екзамен

Для заочної форми здобуття освіти
Перевірка лабораторних робіт, екзамен

 Політика освітнього процесу та умови допуску до підсумкового контролю
Здобувач зобов’язаний своєчасно та якісно виконувати всі отримані завдання; за необхідністю з метою з’ясування всіх незрозумілих під час самостійної та індивідуальної роботи питань відвідувати консультації викладача. Дотримуватись принципів академічної доброчесності.
Виконаний не свій варіант завдання здобувачем не оцінюється.
Робота, яка виконана після встановлених викладачем термінів, не приймається.
Відсутність здобувача на екзамені або на контрольній роботі відповідає оцінці «0». 
Складання/перескладання екзаменів – за встановленим деканатом розкладом.
Під час лекції здійснювати телефонні дзвінки забороняється.
Заборонено використання будь-яких підручників, посібників, конспектів лекцій, шпаргалок під час проходження модульних контролів та екзамену з дисципліни.

Компетентності: 

К1. Здатність аналізувати предметні області, формувати, класифікувати вимоги до програмного забезпечення.

Передумови вивчення дисципліни: 

Знання з теорії баз даних та теорії графів

Результати навчання: 

РН1. Оцінювати і вибирати ефективні методи і моделі розроблення, впровадження, супроводу програмного забезпечення та управління відповідними процесами на всіх етапах життєвого циклу.
РН2. Виявляти інформаційні потреби і класифікувати дані для проєктування програмного забезпечення.
РН3. Розробляти і модифікувати архітектуру програмного забезпечення для реалізації вимог замовника.

2024 рік