Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал: https://er.chdtu.edu.ua/handle/ChSTU/6306
Назва: Дослідження спеціалізованих комп’ютерних систем аналізу великих даних
Автори: Корпань, Ярослав Васильович
Миргородченко, Ігор Олександрович
Дата публікації: січ-2022
Короткий огляд (реферат): Мета роботи – дослідження різноманітності комп’ютерних систем, а саме їх інструментів та методів для аналізу великих даних, а також системи їх зберігання. Для досягнення поставленої мети було вирішено наступні завдання: проведено аналіз об’єкта дослідження, визначено тенденції розвитку систем обробки великих даних; проведено дослідження сучасних методів обробки великих даних; проаналізовано програмні засоби які використовуються для аналізу великих даних; запропоновано удосконалення структури системи аналізу великих даних.
URI (Уніфікований ідентифікатор ресурсу): https://er.chdtu.edu.ua/handle/ChSTU/6306
Розташовується у зібраннях:123 Комп’ютерна інженерія (Спеціалізовані комп’ютерні системи)

Файли цього матеріалу:
Файл Опис РозмірФормат 
М_123_2022_Миргородченко.pdf
  Restricted Access
2.23 MBAdobe PDFПереглянути/Відкрити    Запит копії


Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.

Extracted text
 
 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОІЧНИЙ УНІВЕРСИТЕТ 
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ 
КАФЕДРА РОБОТОТЕХНІКИ ТА СПЕЦІАЛІЗОВАНИХ 
КОМП’ЮТЕРНИХ СИСТЕМ 
 
 
 
 
 
 
 
 
Пояснювальна записка 
до кваліфікаційної роботи 
освітнього ступеню «магістр» 
 
на тему: ДОСЛІДЖЕННЯ СПЕЦІАЛІЗОВАНИХ КОМП’ЮТЕРНИХ 
СИСТЕМ ДЛЯ АНАЛІЗУ ВЕЛИКИХ ДАНИХ 
 
 
 
 
 
 
 
Виконав: студент 2 курсу, групи МСКС-2107 
спеціальності 123 Комп’ютерна 
інженерія, освітня програма 
«Спеціалізовані комп’ютерні 
системи» 
      Ігор МИРГОРОДЧЕНКО  
(ім’я, ПРІЗВИЩЕ) 
Керівник      Ярослав КОРПАНЬ   
( ім’я, ПРІЗВИЩЕ) 
 
Рецензент        
( ім’я, ПРІЗВИЩЕ)
 
 
 
 
 
 
 
 
Черкаси 2022 року 
 
2 
 
ЗМІСТ 
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ ................................................................ 5 
ВСТУП ................................................................................................................. 6 
РОЗДІЛ 1 АНАЛІЗ ОБ’ЄКТУ ДОСЛІДЖЕННЯ ............................................. 8 
1.1 Великі дані та їх актуальність у світі .......................................................... 8 
1.1.1 Поняття «великі дані»  ............................................................................... 8 
1.1.2 Приклади використання великих даних  ................................................. 9 
1.2 Особливості великих даних  ...................................................................... 12 
1.2.1 Типи великих даних  ................................................................................ 12 
1.2.2 Характеристики великих даних  ............................................................. 15 
1.3 Обробка великих даинх  ............................................................................. 19 
1.3.1 Основні етапи процесу обробки великих даних  .................................. 19 
1.3.2 Аналітика великих даних  ....................................................................... 20 
1.4 Архітектура великих даних ........................................................................ 24 
РОЗДІЛ 2 СУЧАСНІ МЕТОДИ ОБРОБКИ ВЕЛИКИХ ДАНИХ ................ 36 
2.1 Важливість методів обробки великих даних ............................................ 36 
2.2 Обробка наукових даних ............................................................................ 36 
2.3 Обробка комерційних даних  ..................................................................... 37 
2.4 Обробка транзакцій ..................................................................................... 38 
2.5 Розподілена обробка даних ........................................................................ 40 
2.6 Обробка даних в реальному часі ............................................................... 40 
2.7 Пакетна обробка даних ............................................................................... 41 
2.8 Багатопроцесорна обробка даних .............................................................. 43 
2.9 Обробка даних з розподілом часу ............................................................. 44 
2.10 Різновид методів обробки даних в сервісі Spotify ................................. 45 
РОЗДІЛ 3 ПРОГРАМНІ ЗАСОБИ ДЛЯ АНАЛІЗУ ВЕЛИКИХ 
ДАНИХ ............................................................................................................... 49 
3.1 Вибір мови програмування ........................................................................ 49 
3.1.1 Мова програмування Python  .................................................................. 50 
3.1.2 Мова програмування R  ........................................................................... 52 
 
3 
3.1.3 Мова програмування Java  ....................................................................... 53 
3.1.4 Мова програмування Scala  ..................................................................... 54 
3.1.5 Мова програмування MATLAB  ............................................................. 55 
3.1.6 Мова програмування Julia  ...................................................................... 56 
3.1.7 Мова програмування Go  ......................................................................... 57 
3.1.8 Мова структурованих запитів SQL  ....................................................... 58 
3.2 Аналіз систем обробки великих даних ..................................................... 58 
3.2.1 Системи для прийому великих даних  ................................................... 59 
3.2.2 Система для збирання великих даних  ................................................... 64 
3.2.3 Системи для обробки великих даних  .................................................... 66 
3.2.4 Системи для зберігання великих даних  ................................................ 68 
3.2.5 Системи для запиту великих даних  ....................................................... 71 
3.2.6 Системи для візуалізації великих даних  ............................................... 46 
РОЗДІЛ 4 СТРУКТУРА СИСТЕМИ АНАЛІЗУ ВЕЛИКИХ ДАНИХ ......... 72 
4.1 Опис ідеї проекту бізнес-аналітики ........................................................... 72 
4.2 Платформа Google Cloud Platform ............................................................. 73 
4.2.1 Потокова обробка даних  ......................................................................... 74 
4.2.2 Зберігання даних  ..................................................................................... 80 
4.2.3 Аналіз даних  ............................................................................................ 82 
4.3 Візуалізація даних в Looker ........................................................................ 84 
ВИСНОВКИ ....................................................................................................... 87 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ......................................................... 89 
 
 
 
 
4 
 
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ 
 
ЗМІ - засоби масової інформації 
СУБД – система управління базами даних.  
БД – база даних. 
ETL – Extract, Transform, Load (витягування, перетворення та 
завантаження). 
ПЗ – програмне забезпечення. 
JIT – «Just-in-Time» компіляція. 
GCP – Google Cloud Platform (набір хмарних служб). 
 
 
5 
 
ВСТУП 
 
В кваліфікаційній роботі досліджуються спеціалізовані комп’ютерні 
системи для аналізу великих даних. 
Актуальність теми. З моменту появи Інтернету в 1989 році кількість 
користувачів і відтвореного контенту постійно зростає. У 1993 році в 
Інтернеті було лише 130 сайтів, якими користувалися близько 3 мільйонів 
людей. У 2014 році вперше було понад мільярд сайтів, а на 18 грудня 2021 
рік їх кількість перевищила 1,9 мільярда. Щодня ця кількість збільшується 
приблизно на 550 тисяч. 
Занадто стрімкий ріст популярності інформаційних технологій та 
діджиталізація усіх аспектів життя людини в наш час призводить до 
перманентного збільшення об’єму інформації в світі.  
У 2020 році на одного жителя планети створювалося 1,7 МБ 
інформації в секунду. Facebook генерує 4 петабайти щодня. Google 
виконує понад 5,6 мільярдів пошукових запитів кожного дня, а люди по 
всьому світу щосекунди надсилають один одному більше 3 мільйонів 
листів.  
Загалом щорічний об’єм згенерованих даних на 2020 рік становив 44 
зетабайт. Очікується, що до 2025 року кількість даних, що генеруються 
щодня, досягне 463 екзабайт у всьому світі. За прогнозами, до 2025 року 
глобальне створення даних зросте до понад 180 зетабайт.  У 2020 році 
кількість створених і відтворених даних досягла нового максимуму.  
Зростання було вищим, ніж очікувалося раніше, через збільшення попиту 
через пандемію COVID-19, оскільки більше людей працювали та 
навчалися вдома та частіше використовували домашні розваги. 
З формацією нових даних виникає питання про їхню обробку та 
аналіз. Таким чином, з часом все більше світових IT компаній зацікавлені в 
розробці комп’ютерних систем і програмного забезпечення, яке б 
 
6 
допомогло якнайширше аналізувати великі дані та представляти їх у 
зручному форматі для подальшого опрацювання спеціалістами.  
Також певною задачею перед компаніями постає проблема 
зберігання великих даних. З кожним роком актуальність цієї проблеми 
тільки зростає, так як спираючись на дослідження проведені у 2020 році 
такі гіганти як Google, Facebook, Microsoft і Amazon зберігають 
щонайменше 1200 петабайт інформації.   
Мета дослідження. Дослідити різноманітність комп’ютерних 
систем, а саме їх інструментів та методів для аналізу великих даних, а 
також системи їх зберігання. 
Для досягнення поставленої мети необхідно вирішити наступні 
завдання: 
- провести аналіз об’єкта дослідження, визначити тенденції 
розвитку систем обробки великих даних; 
- провести дослідження сучасних методів обробки великих 
даних; 
- проаналізувати програмні засоби які використовуються для 
аналізу великих даних; 
- запропонувати удосконалення структури системи аналізу 
великих даних. 
Об’єктом дослідження є процеси обробки та аналізу великих даних. 
Предметом дослідження є системи зберігання, обробки та аналізу 
великих даних. 
Методи дослідження  
Методологічними основами дослідження обраної теми були методи 
аналізу, синтезу та оптимізації, порівняння, узагальнення. На різних етапах 
дослідження використовувалися загальні та спеціальні методи теорії 
систем управління базами даних та методів побудови систем аналізу 
великих даних. 
Апробація результатів дослідження 
 
7 
Результати кваліфікаційної роботи доповідалися й обговорювалися 
на студентській конференції та надруковані в наступних тезах: 
1. Миргородченко І. О. Програмний модуль вивчення граматики 
англійської мови на платформі Telegram / І. О. Миргородченко, К. Б. 
Онищук, В. М. Лукашенко // Збірник тез доповідей студентської 
науково­практичної конференції ЧДТУ : 19–22 квітня  2021 р. 
[Електронний ресурс] / [упоряд. Мельник І.В.]; M­во освіти і науки 
України, Черкас. держ. технол. ун­т. – Черкаси : ЧДТУ, 2021. – c. 128. 
2. Онищук К. Б. Програмне забезпечення для бухгалтерії мереж 
супермаркетів / К. Б. Онищук, І. О. Миргородченко, В. М. Лукашенко // 
Збірник тез доповідей студентської науково­практичної конференції 
ЧДТУ : 19–22 квітня  2021 р. [Електронний ресурс] / [упоряд. Мельник 
І.В.]; M­во освіти і науки України, Черкас. держ. технол. ун­т. – Черкаси 
: ЧДТУ, 2021. – c. 129. 
3. Дяченко І. В. Аналіз методів підвищення рівня якості процесу навчання 
іноземної мови / І. В. Дяченко, І. О. Миргородченко, В. М. Лукашенко // 
Збірник тез доповідей студентської науково­практичної конференції 
ЧДТУ: 19–22 квітня 2022 р. [Електронний ресурс] / [упоряд. Батраченко 
О. В., Бєляєва С. С., Захарова О. В. та ін.]; М­во освіти і науки України, 
Черкас. держ. технол. ун­т. – Черкаси: ЧДТУ, 2022. – C. 51-52. 
Структура та обсяг кваліфікаційної роботи 
Кваліфікаційна робота магістра складається з вступу, чотирьох 
розділів, висновку та списку використаних джерел. Загальний обсяг роботи 
складає 90 сторінок, 29 рисунків. Список використаних джерел містить 24 
найменувань. 
 
 
8 
 
РОЗДІЛ 1 АНАЛІЗ ОБ’ЄКТУ ДОСЛІДЖЕННЯ 
 
1.1  Великі дані та їх актуальність у світі  
1.1.1 Поняття «великі дані» 
Термін «великі дані» (ориг. – «Big Data») з'явився в 2008 році. 
Вперше його використав редактор журналу Nature — Кліффорд Лінч. Він 
розповідав про бурхливий ріст обсягів світової інформації та відзначав, що 
освоїти їх допоможуть нові інструменти та більш розвинені технології [1]. 
Розглядаючи термін «великі дані», спочатку  потрібно визначити що 
таке дані з технічної точки зору. Дані – це величини, знаки або символи, 
над якими операції виконуються комп’ютером, які можуть зберігатися та 
передаватись у формі електричних сигналів і записуватися на магнітних, 
оптичних чи механічних носіях [1].  
У наші дні користувачі регулярно генерують дані: коли вони 
відкривають будь-яку програму, шукають інформацію в Google, 
здійснюють покупки в Інтернеті або просто подорожують зі смартфоном в 
кармані. В результаті виникають величезні масиви цінної інформації, які 
компанії збирають, аналізують і візуалізують. 
Великі дані – це набір даних величезного обсягу, який з часом 
зростає експоненціально. Це дані такого великого розміру та складності, 
що жоден із традиційних інструментів керування даними не може їх 
зберігати чи ефективно обробляти [1].  
Простіше кажучи, великі дані — це більші, складніші набори даних, 
особливо з нових джерел даних. Ці набори даних настільки об’ємні, що 
традиційне програмне забезпечення для обробки даних просто не може 
ними керувати. Але ці величезні обсяги даних можна використовувати для 
вирішення бізнес-проблем, з якими раніше впоратися не було б 
можливості [1]. 
 
 
 
9 
1.1.2 Приклади використання великих даних 
Нижче наведено приклади великих даних: 
1. Транспортування 
Великі дані забезпечують роботу додатків GPS для смартфонів, від 
яких більшість із нас залежить, щоб діставатися з місця на місце за 
найменший час. Джерела даних GPS включають супутникові зображення 
та державні установи [2]. 
Літаки генерують величезні обсяги даних, порядку 1000 гігабайт для 
трансатлантичних рейсів. Авіаційні аналітичні системи використовують 
усе це для аналізу паливної ефективності, ваги пасажирів і вантажів, а 
також погодних умов з метою оптимізації безпеки та споживання енергії 
[2]. 
Один пасажирський трансатлантичний літак може генерувати більше 
1000 гігабайт даних за один рейс. З багатьма тисячами рейсів на день 
генерація даних досягає багатьох петабайт різної інформації [3]. 
Великі дані спрощують і оптимізують транспортування через: 
- Управління заторами та контроль руху 
Завдяки аналітиці великих даних Карти Google тепер можуть 
підказати найменш завантажений маршрут до будь-якого пункту 
призначення. 
- Планування маршруту 
Різні маршрути можна порівнювати з точки зору потреб 
користувачів, споживання палива та інших факторів, щоб спланувати для 
максимальної ефективності. 
- Безпека руху 
Обробка в реальному часі та прогнозна аналітика використовуються 
для точного визначення аварійних та небезпечних зон. 
2. Банківські та фінансові послуги 
Фінансова галузь використовує великі дані та аналітику для 
високопродуктивного використання для: 
 
10 
• виявлення шахрайства: банки відстежують моделі покупок та іншу 
діяльність власників кредитних карток, щоб позначити нетипові рухи 
та аномалії, які можуть сигналізувати про шахрайські транзакції [2]; 
• управління ризиками: аналітика великих даних дозволяє банкам 
відстежувати операційні процеси, ключові показники ефективності та 
діяльність співробітників і звітувати про них [2]; 
• оптимізація відносин з клієнтами: фінансові установи аналізують дані 
про використання веб-сайту та транзакції, щоб краще зрозуміти, як 
перетворити потенційних клієнтів на клієнтів і стимулювати більше 
використання різноманітних фінансових продуктів [2]; 
• персоналізований маркетинг: банки використовують великі дані для 
створення широких профілів індивідуальних стилів життя, уподобань і 
цілей клієнтів, які потім використовуються для мікроцільових 
маркетингових ініціатив [2]. 
Нью-Йоркська фондова біржа є прикладом великих даних, які 
генерують близько одного терабайта нових торгових даних на день [3].  
3. ЗМІ, розваги та соціальні мережі 
Статистика показує, що більше 500 терабайт нових даних потрапляє 
в бази даних соціальної мережі Facebook щодня. Ці дані в основному 
генеруються під час завантаження фотографій і відео, обміну 
повідомленнями, розміщення коментарів тощо [3]. 
Індустрія розваг використовує Big Data, щоб отримати інформацію з 
відгуків клієнтів, передбачити інтереси та вподобання аудиторії, 
оптимізувати розклад програм і націлити маркетингові кампанії. 
Двома яскравими прикладами є Amazon Prime, який використовує 
аналітику великих даних, щоб рекомендувати програмування для окремих 
користувачів, і Spotify, який робить те саме, щоб пропонувати 
персоналізовані музичні пропозиції [2]. 
 
 
 
11 
4. Метеорологія 
Метеорологічні супутники та датчики по всьому світу збирають 
великі обсяги даних для відстеження умов навколишнього середовища. 
Метеорологи використовують Big Data, щоб: 
- вивчати закономірності стихійних лих; 
- робити прогноз погоди; 
- розуміти вплив глобального потепління; 
- прогнозувати наявність питної води в різних регіонах світу; 
- забезпечувати раннє попередження про наближення екстрених 
ситуацій, таких як урагани та цунамі  [2]. 
5. Охорона здоров’я 
Великі дані впевнено мають серйозний вплив на галузь охорони 
здоров’я. Пристрої та датчики збирають дані пацієнтів, які потім у режимі 
реального часу передаються в електронні медичні записи окремих осіб. 
Постачальники та практичні організації зараз використовують великі дані 
для низки цілей, зокрема: 
- прогноз епідемічних спалахів; 
- раннє виявлення симптомів, щоб уникнути захворювань; 
- електронні медичні картки; 
- сповіщення в режимі реального часу; 
- посилення залучення пацієнтів; 
- прогнозування та профілактика важких захворювань; 
- стратегічне планування; 
- прискорення дослідження; 
- телемедицина; 
- покращений аналіз медичних зображень [2]. 
6. Освіта 
Адміністратори, викладачі та зацікавлені сторони використовують 
великі дані, щоб допомогти покращити свої навчальні програми, залучити 
найкращих талантів і оптимізувати досвід студентів. Наприклад: 
 
12 
- Налаштування навчальних програм 
Великі дані дозволяють адаптувати академічні програми до потреб 
окремих студентів, часто спираючись на поєднання онлайн-навчання, 
традиційних занять та самостійного навчання [2]. 
- Зниження рівня відсіву 
Прогностична аналітика дає навчальним закладам інформацію про 
результати студентів, відповіді на запропоновані програми навчання та 
інформацію про те, які успіхи в студентів на ринку праці після закінчення 
навчання [2]. 
- Підвищення результатів навчання учнів 
Аналіз особистих даних учнів може забезпечити краще розуміння 
їхніх стилів навчання та поведінки, а також використовувати для 
створення оптимального навчального середовища [2]. 
- Цільовий міжнародний рекрутинг 
Аналіз великих даних допомагає установам точніше прогнозувати 
ймовірний успіх заявників. І навпаки, це допомагає іноземним студентам 
визначити навчальні заклади, які найкраще відповідають їхнім 
академічним цілям, і, швидше за все, вступити туди [2].  
7. Енергетика 
Впроваджуючи інтелектуальні лічильники, щоб зменшити витоки 
електроенергії та допомогти користувачам керувати споживанням енергії. 
Центри диспетчеризації навантаження використовують аналіз великих 
даних для моніторингу моделей навантаження та виявлення відмінностей 
між тенденціями споживання енергії на основі різних параметрів, а також 
для включення літнього часу [2]. 
 
1.2 Особливості великих даних 
1.2.1 Типи великих даних 
Великі дані, як правило, можна поділити на такі типи: структуровані, 
неструктуровані, напівструктуровані. 
 
13 
1. Структуровані великі дані 
Будь-які дані, які можна зберігати, отримувати доступ і обробляти у 
формі фіксованого формату, називають структурованими даними. З часом 
досягнення в галузі інформатики сягнули більшого успіху в розробці 
методів роботи з такими даними де формат добре відомий заздалегідь, а 
також у отриманні з них цінності. Однак у наш час ми передбачаємо 
проблеми, коли розмір таких даних значно зростає, типові розміри 
досягають кількох зетабайтів [3].  
1 зетабайт дорівнює 1 мільярду терабайтів. Дивлячись на ці цифри, 
можна легко зрозуміти, чому дано назву «великі дані», і уявити собі 
проблеми, пов’язані з їх зберіганням і обробкою. 
Дані, що зберігаються в системі керування реляційною базою даних, 
є одним із прикладів структурованих даних.  
На рис. 1.1 представлено таблицю «Employee» у базі даних, яка є 
прикладом структурованих даних [3]. 
 
 
Рис. 1.1. Приклад структурованих даних 
 
2. Неструктуровані великі дані 
Будь-які дані з невідомою формою або структурою класифікуються 
як неструктуровані дані. Крім величезного розміру, неструктуровані дані 
створюють численні проблеми з точки зору їх обробки для отримання з 
них певної цінності. Типовим прикладом неструктурованих даних є 
 
14 
різнорідне джерело даних, що містить комбінацію простих текстових 
файлів, зображень, відео тощо. Сьогодні організації мають велику 
кількість даних, але, на жаль, вони не знають, як отримати з них цінність, 
оскільки ці дані знаходяться в необробленому або неструктурованому 
форматі [3]. 
На рис. 1.2 зображено результат, який повертає пошуковий сервіс 
Google, що в свою чергу є типом неструктурованих даних [3]. 
 
 
Рис. 1.2.  Приклад неструктурованих даних 
 
3. Напівструктуровані великі дані 
Напівструктуровані дані - це дані, які не є ні необробленими, ні 
типізованими даними в звичайній системі баз даних. Це структуровані 
дані, але вони не організовані в раціональній моделі, як таблиця або графік 
на основі об'єктів. Багато даних, знайдених в Інтернеті, можна описати як 
напівструктуровані. Прикладом напівструктурованих даних є дані, 
представлені у файлі XML, або теги, які можна проаналізувати. 
Файли, які є напівструктурованими, можуть містити раціональні 
дані, що складаються із записів, але ці дані можуть бути не впорядковані в 
 
15 
розпізнавану структуру. Деякі поля можуть бути відсутніми або містять 
інформацію, яку неможливо легко описати в системі баз даних. 
На рис. 1.3 показано особисті дані, що зберігаються у файлі XML, які 
можуть представляти неструктуровані дані [3]. 
 
 
Рис. 1.3. Приклад напівструктурованих даних 
 
1.2.2 Характеристики великих даних 
Спочатку характерними властивостями великих даних були три 
характеристики. Це загальновідома абревіатура «3V», тобто: Volume 
(обсяг), Velocity (швидкість), Variety (різноманітність). Але останні 
дослідження в цій області визначають п’ять основних характеристик – 
«5V». Тобто додалися ще такі характеристики як: Value (цінність), Veracity 
(достовірність). 
На рис. 1.4 зображено п’ять основних характеристик великих даних. 
 
 
Рис. 1.4. П’ять основних характеристик великих даних 
 
16 
Основні характеристики великих даних: 
1. Обсяг (Volume)  
Сама назва «Big Data» пов’язана з величезним розміром. Розмір 
даних відіграє дуже важливу роль у визначенні цінності даних. Також від 
обсягу даних залежить те, чи дійсно певні дані можна вважати великими 
даними чи ні.  
Це можуть бути дані невідомої цінності, як-от канали даних Twitter, 
потоки кліків на веб-сторінці чи мобільному додатку або обладнання з 
підтримкою датчиків. Для деяких організацій це можуть бути десятки 
терабайт даних. Для інших це можуть бути сотні петабайт. Отже, обсяг є 
однією з характеристик, яку необхідно враховувати під час роботи з 
рішеннями для великих даних [4]. 
2. Швидкість (Velocity)  
Термін «швидкість» означає швидкість генерування даних. Те, 
наскільки швидко дані генеруються та обробляються відповідно до вимог, 
визначає реальний потенціал даних. 
Швидкість великих даних стосується швидкості, з якою надходять 
дані з таких джерел, як бізнес-процеси, журнальні записи (логи) додатків, 
мереж та сайтів соціальних мереж, датчиків, мобільних пристроїв тощо.  
Потік даних є величезним і безперервним. Зазвичай найвища 
швидкість потоків даних безпосередньо в пам’ять, на відміну від запису на 
диск. Деякі інтелектуальні продукти, які підключаються до Інтернету, 
працюють у режимі реального часу або майже в режимі реального часу, і 
потребують їх оцінки та відповідних дій з ними у реальному часі [4]. 
Висока швидкість має вирішальне значення для продуктивності 
будь-якого процесу великих даних. Він складається зі швидкості змін, 
спалахів активності та зв’язування вхідних наборів даних [6]. 
3. Різноманітність (Variety)  
Різноманітність відноситься до різних типів великих даних. Це одна з 
найбільших проблем, з якою стикається індустрія великих даних, оскільки 
 
17 
вона впливає на продуктивність. Різноманітність — це різні типи даних, 
які ви збираєте з різних видів джерел. 
Традиційні типи даних були структуровані та чітко вписувалися в 
реляційну базу даних. Із зростанням обсягу великих даних вони надходять 
у вигляді нових неструктурованих типів даних. Неструктуровані та 
напівструктуровані типи даних, як-от текст, аудіо та відео, вимагають 
додаткової попередньої обробки для отримання значення та підтримки 
метаданих [4]. 
Раніше електронні таблиці та бази даних були єдиними джерелами 
даних для більшості програм. Зараз дані у вигляді електронних листів, 
фотографій, відео, пристроїв моніторингу, PDF-файлів, аудіо тощо також 
розглядаються в програмах для аналізу. Ця різноманітність 
неструктурованих даних створює певні проблеми для зберігання, вибірки 
та аналізу даних [3]. 
Отже, важливо правильно керувати різними даними, упорядковуючи 
їх. 
4. Цінність (Value)  
Цінність - найважливіша характеристика з точки зору бізнесу. 
Цінність великих даних зазвичай походить від відкриття розуміння та 
розпізнавання шаблонів, які призводять до більш ефективних операцій, 
міцніших відносин з клієнтами та інших чітких і кількісно вимірних 
переваг для бізнесу [5]. 
Виявлення цінності великих даних полягає не лише в їх аналізі (що є 
ще однією перевагою). Це цілий процес відкриття, який потребує 
проникливих аналітиків, бізнес-користувачів і керівників, які ставлять 
правильні запитання, розпізнають закономірності, роблять обґрунтовані 
припущення та прогнозують подальшу поведінку. 
Цінність стосується переваг, які ваша організація отримує від даних. 
Чи відповідають вони цілям вашої організації? Чи допомагають вашій 
організації вдосконалюватися? Наскільки ваші дані правдиві та наскільки 
 
18 
ви можете на них покладатися? Це одна з найважливіших основних 
характеристик великих даних [6]. 
5. Достовірність (Veracity)  
Достовірність – це «правдивість» або точність даних та 
інформаційних активів, яка часто визначає рівень впевненості у їхньому 
використанні [5]. 
Точність даних одна з найбільш важливих характеристик великих 
даних, так як низька достовірність може сильно пошкодити точність ваших 
результатів. 
Окрім п’яти основних характеристик, нові дослідження поступово 
вводять такі додаткові «V»: Variability (мінливість), Validity (дійсність), 
Volatility (волатильність), Visualization (візуалізація). 
1. Мінливість (Variability)  
Мінливість стосується невідповідності, що може бути інколи 
продемонстрована даними. Таким чином відбувається перешкоджання  
процесу можливості ефективно обробити та керувати даними [3]. 
Мінливість даних можна розглядати як зміну характеру даних, яку 
компанії прагнуть відловити, управляти та аналізувати. Наприклад, в 
аналітиці тексту, мінливістю даних вважаються зміни у ключових словах 
або фразах [5]. 
2. Дійсність (Validity)  
Дійсність даних визначає наскільки актуальними та валідними є дані, 
які будуть використовуватися за певним призначенням [6]. Кожна 
організація хоче отримати точні результати, а достовірні дані є ключем до 
отримання точних результатів. Дійсність стосується питання: «Чи дані 
правильні та точні для використання за призначенням?». 
3. Волатильність (Volatility) 
Великі дані постійно змінюються. Дані, зібрані з певного джерела 
день тому, можуть вже відрізнятися від того, що може знайтися сьогодні. 
 
19 
Це називається волатильністю даних, і вона впливає на однорідність ваших 
даних [6]. 
Волатильність стосується швидкості змін і тривалості життя даних. 
Організації повинні розуміти, як довго певний тип даних є дійсним. 
Наприклад, настрої в соціальних мережах часто змінюються та дуже 
волатильні. Прикладом низьковолатильних даних це тенденції погоди, які 
легше передбачити. 
4. Візуалізація (Visualization)  
Віуалізацією вважається презентація згенерованих результатів 
великих даних за допомогою візуального представлення, наприклад, 
графіків чи графів. Це стало поширеним нещодавно, тому що 
професіонали, які працюють з великими даними регулярно діляться їхніми 
результатами з аудиторією, яка не пов’язана з технічними професіями [6]. 
 
1.3 Обробка великих даних 
1.3.1 Основні етапи процесу обробки великих даних 
Щоб вирішити складні проблеми обробки великих даних, прийнято 
рішення розділити цей процес на такі етапи: 
Поглинання  
Поглинання даних стосується процесу збору та підготовки даних. 
Щоб підготувати дані, використовуйте процес ETL – Extract, Transform, 
Load (витягування, перетворення та завантаження). На цьому етапі 
потрібно визначити певні джерела даних, визначити, чи збиратимуться 
дані пакетами чи потоково, і підготувати їх шляхом очищення, масування 
та організації. Виконується процес витягування під час збору даних і 
процес перетворення для їх оптимізації [6]. 
Зберігання  
Після того, як було зібрано необхідні дані, їх потрібно зберегти. Тут 
виконається останній крок ETL, процес завантаження. Дані будуть 
зберігатися в сховищі даних або озері даних, залежно від вимог. Ось чому 
 
20 
дуже важливо розуміти цілі тої чи іншої організації під час виконання 
будь-якого процесу великих даних [6]. 
Аналіз 
На цьому етапі процесу обробки великих даних аналізуються дані, 
щоб отримати цінну інформацію для організації. Існує чотири види 
аналітики великих даних: приписна, прогнозна, описова та діагностична. 
На цьому етапі використовується штучний інтелект і алгоритми 
машинного навчання для аналізу даних [6]. 
Споживання 
Це завершальний етап процесу обробки великих даних. Після того, 
як було проаналізовано дані та знайдено результати, потрібно поділитися 
ними з іншими. Тут доведеться використовувати візуалізацію даних і 
розповідь даних, щоб ефективно поділитися своїми висновками з 
нетехнічною аудиторією, наприклад із зацікавленими сторонами чи 
менеджерами проектів [6]. 
 
1.3.2 Аналітика великих даних 
Існує чотири основні типи аналітики великих даних: дескриптивна 
(описова), діагностична, предиктивна (прогнозна) та прескриптивна 
(рекомендаційна) аналітика. На рис. 1.5 показана піраміда з даних типів 
аналітики великих даних. 
Вони використовують різні інструменти для таких процесів, як 
збирання даних, очищення, інтеграція, візуалізація та багато інших, щоб 
покращити процес аналізу даних і забезпечити користь компанії від даних, 
які вони збирають. 
Описова аналітика 
Описова аналітика є однією з найпоширеніших форм аналітики, яку 
компанії використовують, щоб бути в курсі поточних тенденцій і 
операційної діяльності компанії. Це один із перших кроків аналізу 
 
21 
необроблених даних шляхом виконання простих математичних операцій і 
створення звітів про зразки та вимірювання [7].  
 
 
Рис. 1.5. Аналітична піраміда 
 
Дана аналітика відповідає на питання «Що сталося?», створюючи 
зведення історичних даних для їхнього подальшого аналізу. Визначивши 
тенденції та розуміння за допомогою описової аналітики, можна 
використовувати інші типи аналітики, щоб дізнатися більше про причини 
цих тенденцій. 
Описову аналітику потрібно буде використовувати під час роботи з 
фінансами, виробництвом і продажами. Деякі завдання, які потребують 
такого типу аналітики, включають створення фінансових звітів і 
показників, опитування, соціальні медіа-ініціативи та інші завдання, 
пов’язані з бізнесом [7]. 
Описова аналітика пропонує багато переваг. Проте одна з його 
головних переваг полягає в тому, що вона допомагає компаніям зрозуміти 
великі обсяги необроблених даних, які вони збирають, зосереджуючись на 
більш критичних областях. Описова аналітика змінила спосіб ведення 
 
22 
бізнесу компаніями. Сьогодні вони використовують цей тип аналітики, 
щоб краще зрозуміти свою поточну бізнес-ситуацію порівняно з минулим. 
Це важливий крок в аналітиці даних, і без нього було б неможливо 
передбачити будь-які майбутні тенденції або прийняти рішення на основі 
даних [7]. 
Діагностична аналітика 
Діагностична аналітика — це один із найдосконаліших типів 
аналітики великих даних, який можна використовувати для дослідження 
даних і вмісту. За допомогою такого типу аналітики використовуються 
отримані знання, щоб відповісти на запитання: «Чому це сталося?». Отже, 
аналізуючи дані, можна зрозуміти причини певної поведінки та подій, 
пов’язаних із компанією, її клієнтами, працівниками, продуктами тощо [7]. 
Припустимо, що відбулися кардинальні зміни в продажу продукту, 
навіть якщо до нього не внесено жодних маркетингових змін. Потрібно 
було б використати діагностичну аналітику, щоб визначити цю аномалію 
та знайти випадковий зв’язок такої зміни. Деякі інструменти та методи, які 
використовуються для такого завдання, включають: пошук 
закономірностей у наборах даних, фільтрацію даних, використання теорії 
ймовірностей, регресійний аналіз тощо [7].  
Переваги діагностичної аналітики включають краще розуміння даних 
і різні способи пошуку відповідей на запитання компанії. Цей тип 
аналітики дозволяє компаніям зрозуміти своїх клієнтів за допомогою 
інструментів для пошуку, фільтрації та порівняння даних, створених 
окремими особами [7]. 
Прогнозна аналітика 
Прогнозна аналітика відповідає на питання «Що може статися?» з 
урахуванням аналізу накопиченої інформації. Як випливає з назви, цей тип 
аналізу даних призначений для прогнозування майбутніх результатів на 
основі зібраних даних. Щоб отримати найкращі результати, вона 
 
23 
використовує багато складних інструментів прогнозування та моделей, 
таких як машинне навчання та статистичне моделювання [7]. 
Прогнозна аналітика є однією із найпоширеніших видів аналітики 
сьогодні. 
Основна перевага прогнозної аналітики — надійний і більш точний 
прогноз майбутнього. Завдяки прогнозам, зробленим за допомогою цього 
типу аналітики, компанії можуть знайти способи заощаджувати та 
заробляти гроші, керувати графіками доставки та залишатися на вершині 
вимог до інвентаризації [7]. 
Використання прогнозної аналітики у відділі маркетингу може 
допомогти організаціям залучити нових клієнтів і втримати старих. 
Аналізуючи дані клієнтів або поточні тенденції, компанії можуть 
передбачити потреби клієнтів [7]. 
Компанії щодня збирають величезні обсяги даних від своїх клієнтів, 
співробітників тощо. Але ці дані нічого не варті, якщо не знати, як витягти 
з них інформацію. Найбільші компанії світу використовують аналітику 
великих даних та її види для розвитку свого бізнесу [7]. 
Рекомендаційна аналітика 
Рекомендаційна аналітика відповідає на, мабуть, головне 
управлінське питання «Що потрібно зробити?». Даний вид аналітики бере 
результати описового та прогнозного аналізу та знаходить рішення для 
оптимізації бізнес-практики за допомогою різноманітних симуляцій і 
методів. Вона використовує дані, щоб запропонувати, який подальший 
крок буде найкращим для компанії. Інструментами цієї аналітики є 
найновітніші технології  штучного інтелекту, які мають змогу помічати 
найменші дрібниці в роботі мережі та обирати найкраще рішення для 
управління серед усіх можливих [7]. 
Google є однією з багатьох компаній, які використовують цей тип 
аналітики. Вони використали її при розробці своїх безпілотних 
 
24 
автомобілів. Ці автомобілі аналізують дані в реальному часі та приймають 
рішення на основі рекомендаційної аналітики [7]. 
Деякі переваги рекомендаційної аналітики включають покращення 
процесів, кампаній, стратегій, виробництва та обслуговування клієнтів. 
Використовуючи статистичні дані та моделювання, цей тип аналітики 
допомагає виробникам краще зрозуміти ринок і передбачити його стан у 
майбутньому. Це також допомагає їм чітко розставити пріоритети та 
побачити, який курс дій може привести до більших фінансових прибутків 
[7]. 
 
1.4 Архітектура великих даних 
Найкращий шлях до вирішення складної проблеми – це «розділити 
проблему». Рішення для великих даних можна добре зрозуміти за 
допомогою багаторівневої архітектури, яка представлена на рис. 1.6. 
Багаторівнева архітектура розділена на різні рівні, де кожен виконує певну 
функцію. 
 
Рис. 1.6. Аналітична піраміда 
 
25 
Ця архітектура допомагає розробити конвеєр даних (Data Pipeline) із 
різними вимогами системи пакетної обробки або системи потокової 
обробки. Ця архітектура складається з семи основних рівнів, які 
забезпечують безпечний потік даних, та двох додаткових. 
 
1. Джерела даних (Data Sources) 
Весь процес обробки великих даних починається з даного рівня. 
Середовище великих даних може керувати як пакетною обробкою, так і 
обробкою джерел великих даних у реальному часі. Такими прикладами є: 
- сховища даних додатків, наприклад, реляційні бази даних; 
- статичні файли створені програмою, наприклад, файли 
журнальних записів веб-сервера; 
- джерела даних у реальному часі, такі як IoT-пристрої. 
 
2. Рівень прийому даних (Data Ingestion Layer) 
Прийом даних є першим кроком для створення конвеєра даних, а 
також найскладнішим завданням у системі великих даних. На цьому рівні 
планується, як передавати потоки даних із сотень або тисяч джерел у центр 
обробки даних. Оскільки дані надходять із кількох джерел зі змінною 
швидкістю та в різних форматах [8]. 
Прийом великих даних передбачає підключення до різних джерел 
даних, вилучення даних і виявлення змінених даних. Йдеться про 
переміщення даних — і особливо неструктурованих даних — з місця їх 
походження в систему, де їх можна зберігати та аналізувати [8]. 
Дані можуть передаватися в режимі реального часу або 
завантажуватися пакетами. Коли дані надходять у режимі реального часу, 
вони надходять негайно. Коли дані завантажуються пакетами, елементи 
даних завантажуються порціями через певний проміжок часу. Поглинання 
— це процес передачі даних у систему обробки даних [8]. 
 
26 
Процес ефективного прийому даних починається з визначення 
пріоритетів джерел даних, перевірки окремих файлів і маршрутизації 
елементів даних до правильного пункту призначення. [8] 
Проблеми прийому даних. 
Зі збільшенням кількості пристроїв IoT швидко зростає як обсяг, так 
і дисперсія джерел даних. Таким чином, вилучення даних таким чином, 
щоб їх могла використовувати цільова система, є серйозною проблемою 
щодо часу та ресурсів [8]. Деякі інші проблеми, з якими стикається прийом 
даних: 
- Коли численні джерела великих даних існують у різних 
форматах, найбільшою проблемою для бізнесу є отримання даних із 
розумною швидкістю та подальша їх ефективна обробка, щоб дані могли 
бути пріоритетними та покращувати бізнес-рішення. 
- Сучасні джерела даних і споживаючі програми швидко 
розвиваються. 
- Дані змінюються без попередження незалежно від програми-
споживача. 
- Виявлення та захоплення змінених даних — це завдання 
складне не лише через напівструктуровану або неструктуровану природу 
даних, але й через низьку затримку, необхідну для окремих бізнес-
сценаріїв, які потребують такого визначення [8]. 
Ось чому він повинен бути добре розроблений, щоб забезпечити 
наступні речі: 
- Здатний обробляти та оновлювати нові джерела даних, 
технології та програми. 
- Переконатися, що програма-споживач працює з правильними, 
послідовними та надійними даними. 
- Дозволяє швидко використовувати дані. 
 
27 
- Місткість і надійність — система повинна масштабуватися 
відповідно до надходження вхідних даних, а також вона має бути 
відмовостійкою. 
- Обсяг даних — хоча краще зберігати всі вхідні дані, у деяких 
випадках зберігаються агреговані дані. 
Параметри прийому даних. 
- Швидкість даних. Швидкість даних стосується швидкості, з 
якою надходять дані з різних джерел, таких як машини, мережі, взаємодія 
людей, медіа-сайти, соціальні мережі. Рух даних може бути масовим або 
безперервним [8]. 
- Розмір даних. Цей параметр передбачає величезний обсяг 
даних. Дані генеруються з різних джерел, які можуть з часом 
збільшуватися [8]. 
- Частота даних. Дані можуть оброблятися в режимі реального 
часу або по пакетах. У режимі реального часу обробка продовжується 
безперервно, оскільки дані, надходять в один і той самий час, але в обробці 
по пакетах дані зберігаються в пакетах, фіксованих через певний часовий 
інтервал і потім обробка йде далі [8]. 
- Формат даних. Дані можуть бути в різних форматах, переважно 
це може бути структурований формат, тобто табличний, або 
неструктурований формат, тобто зображення, аудіо, відео, або 
напівструктурований, тобто JSON файли, файли CSS тощо [8]. 
 
3. Рівень збирача даних (Data Collector Layer) 
Цей рівень є початком конвеєру даних. Тут більше уваги 
приділяється транспортуванню даних від рівня прийому до решти 
конвеєру даних. Тут ми використовуємо систему обміну повідомленнями, 
яка діятиме як посередник між усіма програмами, які можуть надсилати та 
отримувати повідомлення. Це рівень, на якому компоненти роз’єднані так, 
 
28 
щоб була можливість почати аналітику незалежно від надсилання нових 
даних. 
Конвеєр даних (Data Pipeline) 
Конвеєр даних — основний компонент інтеграції даних. Усі 
перетворення даних відбуваються в конвеєрі даних. Це інструмент на 
основі Python, який передає потоки та перетворює дані в режимі реального 
часу для служби, яка цього потребує. Конвеєр даних автоматизує 
переміщення та перетворення даних. Етапи конвеєра даних можуть 
включати очищення, перетворення, об’єднання, моделювання тощо в будь-
якій комбінації [8]. 
Конвеєр даних — це механізм обробки даних, який працює у вашій 
програмі. Він використовується для перетворення всіх вхідних даних у 
стандартний формат, щоб ми могли підготувати їх для аналізу та 
візуалізації. Конвеєр даних побудований на віртуальній машині Java (JVM) 
[8]. 
Отже, конвеєр даних – це серія кроків, за допомогою яких 
переміщуються дані. Результати роботи одного кроку в процесі стають 
вхідними даними наступного.  
Функції конвеєра великих даних [8] 
- Конвеєр даних допомагає передавати дані у систему. Це 
означає передачу неструктурованих даних з місця їх надходження в 
систему, де їх можна зберігати та аналізувати для прийняття бізнес-рішень. 
- Конвеєр даних також допомагає об’єднати різні типи даних. 
- Упорядкування даних також здійснюється на цьому етапі. 
- Це також один із процесів, за допомогою якого ми можемо 
вдосконалити, очистити, покращити необроблені дані. 
Після вдосконалення корисних даних конвеєр даних надає оброблені 
дані, на основі яких можна застосовувати операції з необробленими 
даними та приймати точні бізнес-рішення. 
Необхідність конвеєру великих даних 
 
29 
Головною причиною необхідності конвеєра даних є те, що важко 
контролювати міграцію даних і керувати помилками даних [8]. Інші 
причини необхідності розглянуті нижче: 
- Бізнес-рішенн. Критичний аналіз можливий лише при 
поєднанні даних із кількох джерел. Для прийняття бізнес-рішень ми 
повинні мати єдине зображення всіх даних, що надходять [8]. 
- Підключення. Нові дані постійно надходять, а старі 
змінюються, тому кожна нова інтеграція може тривати від кількох днів до 
кількох місяців [8]. 
- Точність. Єдиний спосіб створити довіру споживачів даних — 
переконатися, що ваші дані підлягають перевірці. Однією з найкращих 
практик, яку легко застосувати, це ніколи не відкидати вхідні чи проміжні 
дані під час їх зміни [8]. 
- Затримка. Чим більш свіжі ваші дані, тим гнучкішими можуть 
бути рішення у вашій компанії. Отримання даних з API і баз даних у 
режимі реального часу може бути складним, і багато цільових джерел 
даних, у тому числі великі сховища, такі як Amazon S3, і аналітичні бази 
даних, такі як Amazon Redshift, оптимізовані для отримання даних 
порціями, а не потоком [8]. 
- Масштабованість. Кількість даних може збільшуватися або 
зменшуватися з часом. Таким чином, використання даних не є 
рівномірним. Тож можна зробити наш конвеєр настільки масштабованим, 
що зможе обробляти будь-який обсяг даних, що надходитиме зі змінною 
швидкістю [8]. 
Варіанти користування конвеєром великих даних 
Конвеєр даних корисний для деяких посад, у тому числі для 
технічних директорів, інформаційних директорів, спеціалістів із обробки 
даних, інженерів даних, аналітиків BI, аналітиків SQL та будь-кого іншого, 
хто отримує цінність від потоку даних від взаємодії користувачів, 
Інтернету або мобільних пристроїв у реальному часі [8]. 
 
30 
4. Рівень обробки великих даних (Data Processing Layer) 
На попередньому рівні було зібрано дані з різних джерел і зроблено 
їх доступними для проходження решти конвеєра. 
На цьому рівні головне завдання — робити деяку «магію» з даними, 
оскільки тепер дані готові, і залишається лише скерувати їх в різні пункти 
призначення. Тобто тут фокус зосереджений на спеціалізації системи 
обробки конвеєру даних, або можна сказати, що дані, які були зібрані на 
попередньому рівні, повинні обробитися тут [8]. 
Є такі види систем обробки великих даних [8]: 
- система пакетної обробки великих даних, наприклад Apache 
Sqoop; 
- система обробки майже в реальному часі, наприклад Apache 
Storm; 
- система обробки в реальному часі, наприклад Apache Flink. 
5. Рівень зберігання великих даних (Data Storage Layer) 
Головна проблема полягає в тому, щоб зберігати дані в потрібному 
місці залежно від використання. Звісно, існують реляційні бази даних, які 
протягом багатьох років були успішним місцем для зберігання даних. Але 
з новими стратегічними корпоративними додатками для великих даних 
більше не потрібно схилятися до реляційної концепції зберігання даних 
[8]. 
Потрібні різні бази даних для обробки різних даних, але 
використання різних баз даних створює накладні витрати. Ось чому 
поширюється вступ до нової концепції у світі баз даних, яка називається 
Поліглотна стійкість (Polyglot Persistence) [8]. 
Поліглотна стійкість — це ідея використання кількох баз даних для 
роботи однієї програми. Поліглотна стійкість — це спосіб розділити ваші 
дані на кілька баз даних і разом використовувати їх потужність [8]. 
 
31 
Ця концепція використовує переваги різних баз даних. Тут 
різноманітні типи даних упорядковані різними способами. А це означає - 
вибір правильного інструменту для правильного використання [8]. 
Це така ж ідея, що лежить в основі програмування, що називається 
Polyglot Programming, яка полягає в тому, що програми мають бути 
написані на різних мовах, щоб скористатися тим, що різні мови підходять 
для вирішення різних проблем. 
Переваги поліглотної стійкості [8]:  
- Швидший час відповіді. Тут використовуються всі функції баз 
даних в одній програмі, завдяки чому час відповіді програми стає дуже 
швидким. 
- Допомагає програмі добре масштабуватися. Програма 
надзвичайно добре масштабується з даними. Усі бази даних NoSQL добре 
масштабуються, якщо правильно їх моделювати для даних, які потрібно 
зберігати. 
- Багатий досвід. Використання потужності кількох баз даних 
одночасно, приносить великий досвід. Наприклад, якщо потрібно шукати 
продукти в програмі електронної комерції, використовується ElasticSearch, 
який повертає результати на основі релевантності, чого MongoDB не може 
зробити. 
6. Рівень запиту великих даних (Data Query Layer) 
Це рівень, де відбувається активна аналітична обробка. Це сфера, де 
необхідні інтерактивні запити, і це зона, де традиційно домінують 
розробники-експерти SQL. До появи Hadoop у нас було недостатньо 
пам’яті, через що процес аналізу займав тривалий час [8]. 
Спочатку проходить тривалий процес, тобто ETL, щоб отримати 
нове джерело даних, готове до зберігання, а потім поміщаються дані в базу 
даних або сховище даних. Але тепер аналіз даних став важливим кроком, 
 
32 
який вирішує проблеми під час обчислення такої великої кількості даних 
[8]. 
Компанії з усіх галузей використовують аналітику великих даних, 
щоб збільшити дохід, зменшити витрати та підвищити продуктивність. 
Озеро даних (Data Lake)  
Озеро даних – це сховище, у якому зберігаються всі дані організації 
– як структуровані, так і неструктуровані. Можна представити це як 
величезний пул для зберігання даних у їх природному необробленому 
стані [9].  
Озеро даних може обробляти величезні обсяги даних, які створюють 
більшість організацій, без необхідності їх попереднього структурування. 
Дані, що зберігаються тут, можна використовувати для створення 
конвеєрів даних, щоб зробити їх доступними для інструментів аналітики 
даних, щоб знаходити інформацію, яка забезпечує ключові бізнес-рішення 
[9]. 
Оскільки великі обсяги даних в озері даних не структуруються перед 
збереженням, кваліфіковані спеціалісти з обробки даних можуть отримати 
доступ до ширшого діапазону даних набагато швидше, ніж у сховищі 
даних. 
Переваги озера даних [9]: 
- Величезні обсяги структурованих і неструктурованих даних, 
таких як транзакції ERP і журнали викликів, можна зберігати економічно 
ефективно. 
- Дані доступні для використання набагато швидше, якщо 
зберігати їх у необробленому стані. 
- Більш широкий спектр даних можна аналізувати новими 
способами, щоб отримати несподівані та раніше недоступні відомості. 
Сховище даних (Data Warehouse) [ 
Як і озеро даних, сховище даних є сховищем бізнес-даних. Однак, на 
відміну від озера даних, у сховищі даних знаходяться лише добре 
 
33 
структуровані та уніфіковані дані для підтримки конкретних потреб бізнес-
аналітики та аналітики в цілому [9].  
Можна представити це як справжній склад, де вміст спочатку 
обробляється, а потім упорядковується в секції та розміщується на 
полицях. Дані зі сховища готові до використання для підтримки 
історичного аналізу та звітності для прийняття рішень у всіх напрямках 
діяльності організації [9]. 
Хмарне сховище даних — це база даних, яка зберігається як 
керований сервіс у загальнодоступній хмарі та оптимізована для 
масштабованої бізнес-аналітики. Таке сховище усуває обмеження 
фізичних центрів обробки даних і дозволяє швидко збільшувати або 
скорочувати свої сховища даних відповідно до мінливих бізнес-бюджетів і 
потреб [9]. 
Сховище даних пропонує величезні переваги для організацій, 
особливо в тому, що стосується бізнес-аналітики. Після початкової роботи 
з очищення та обробки дані, що зберігаються в сховищі, служать єдиним 
джерелом істини, що є безцінним для аналізу бізнес-даних, співпраці та 
кращого розуміння [9].  
Три основні переваги сховища даних [9]: 
- Потрібна незначна підготовка даних або зовсім не потрібна, що 
значно полегшує доступ до цих даних і їх аналіз для аналітиків і бізнес-
користувачів. 
- Точні та повні дані стають доступними швидше, тож 
підприємства можуть швидше перетворювати інформацію на результати. 
- Уніфіковані, узгоджені дані пропонують єдине джерело 
правди, зміцнюючи довіру до аналізу даних і прийняття рішень у різних 
бізнес-напрямках. 
 
7. Рівень візуалізації великих даних (Data Visualization Layer) 
 
34 
Цей рівень зосереджений на візуалізації великих даних. що приверне 
увагу людей, зацікавить їх, зробить висновки добре зрозумілими. Ось чому 
він надає повну бізнес-інфографіку. Тому що висновки зроблені з ваших 
даних потребують хорошого пояснення. 
Рівень візуалізації даних часто є термометром, який вимірює успіх 
проекту. Це місце, де значення даних сприймається користувачем. 
Незважаючи на те, що Hadoop та інші інструменти призначені для обробки 
та зберігання великих обсягів даних, вони не мають вбудованих засобів 
для візуалізації даних і розповсюдження інформації, що не дозволяє 
зробити ці дані легко доступними для кінцевих бізнес-користувачів [8]. 
 
8. Рівень безпеки великих даних (Data Security Layer) 
Безпека - це основне завдання будь-якої роботи. Безпека має бути 
реалізована на всіх рівнях, починаючи від прийому, через зберігання, 
аналітику, аж до споживання [8]. Щоб підтвердити безпеку каналу даних, 
необхідно виконати кілька кроків: 
- Автентифікація підтвердить особу користувача та 
переконається, що він є тим, за кого себе видає [8]. 
- Наступний крок до захисту даних – це визначення того, до 
якого набору даних можуть звертатися користувачі або служби. Контроль 
доступу обмежить доступ користувачів і служб лише до тих даних, на які 
вони мають дозвіл [8]. 
- Шифрування та маскування даних необхідні для забезпечення 
безпечного доступу до конфіденційних даних. Конфіденційні дані в 
кластері повинні бути захищені як у стані спокою, так і в русі [8]. 
- Іншим аспектом вимог безпеки даних є перевірка доступу 
користувачів до даних. Він може виявити спроби входу та доступу, а також 
адміністративні зміни [8]. 
 
9. Рівень моніторингу великих даних (Data Monitoring Layer) 
 
35 
Дані в корпоративних системах подібні до їжі — їх потрібно 
зберігати свіжими. Так само як і зі споживання зіпсованої їжі, це може 
призвести до захворювання, використання «зіпсованих» даних може бути 
шкідливим для здоров’я організації [8]. 
Даних може бути багато, але вони мають бути надійними, щоб бути 
цінними. Хоча на підприємствах більшість уваги зосереджено на тому, як 
зберігати й аналізувати великі обсяги даних, також важливо підтримувати 
ці дані свіжими та організованими [8]. 
Постійний моніторинг даних є важливою частиною механізмів 
управління. 
Дані вважаються високоякісними, якщо вони відповідають бізнес-
потребам і задовольняють цільове використання, щоб вони були 
корисними для прийняття успішних бізнес-рішень [8]. 
 
  
 
36 
РОЗДІЛ 2 СУЧАСНІ МЕТОДИ ОБРОБКИ ВЕЛИКИХ ДАНИХ 
 
2.1 Важливість методів обробки великих даних 
Існують різні методи обробки даних залежно від джерела даних і 
кроків, виконаних блоком обробки для отримання результату. Не існує 
універсального методу, який можна використовувати для обробки даних. 
Метод обробки даних визначатиме час відповіді на запит і надійність 
результату. Тому його потрібно підбирати ретельно. Наприклад, у ситуації, 
де доступність має вирішальне значення, наприклад на порталі фондової 
біржі, обробка транзакцій має бути кращим методом. 
Важливо відзначити різницю між обробкою даних і системою 
обробки даних. Обробка даних — це правила, за якими дані 
перетворюються на корисну інформацію. Система обробки даних – це 
програма, оптимізована для певного типу обробки даних. 
 
2.2 Обробка наукових даних 
Обробка наукових даних передбачає велике використання 
обчислювальних операцій, але менші обсяги вхідних і вихідних даних. До 
обчислювальних операцій належать арифметичні операції та операції 
порівняння. У цьому методі обробки будь-яка ймовірність помилок 
неприйнятна, оскільки це призведе до неправильного результату [10].  
Процес обробки наукових даних зображено на рис. 2.1. 
Для наукових даних життєво важливо, щоб не було суттєвих 
помилок, які сприяють неправильним висновкам. Тому процес перевірки, 
сортування та стандартизації даних виконується дуже ретельно, і 
використовується широкий спектр наукових методів, щоб гарантувати 
відсутність неправильних зв’язків і висновків [12]. 
 
37 
 
Рис. 2.1. Процес обробки наукових даних 
 
2.3 Обробка комерційних даних 
Комерційна обробка даних означає метод застосування стандартних 
реляційних баз даних, який включає використання пакетної обробки. Це 
передбачає надання величезних даних як вхідних даних у систему та 
створення великого обсягу вихідних даних, але з використанням меншої 
кількості обчислювальних операцій. Він в основному поєднує комерцію та 
комп’ютери, щоб зробити його корисним в  веденні бізнесу [10].  
Дані, які обробляються за допомогою цієї системи, як правило, 
стандартизовані, тому ймовірність помилок набагато менша [10]. 
Прикладом обробки комерційних даних є обробка заробітної плати 
робітнику, процесс якої представлено на рис. 2.2. 
Комерційна обробка даних зазвичай використовує стандартні 
реляційні бази даних і використовує пакетну обробку. Однак деякі, 
зокрема, технологічні програми можуть використовувати нереляційні бази 
даних [12]. 
 
 
38 
 
 
Рис. 2.2. Приклад обробки комерційних даних 
 
У обробці комерційних даних все ще існує багато застосувань, які 
схиляються до наукового підходу, наприклад прогнозне дослідження 
ринку. Їх можна вважати гібридом двох методів [12]. 
 
2.4 Обробка транзакцій 
Обробка транзакцій розгортається в критично важливих ситуаціях. 
Це ситуації, порушення яких негативно вплине на бізнес. Наприклад, 
обробка біржових угод або ж інші приклади використання обробки 
транзакцій, які представлені на рис. 2.3.  
При обробці транзакцій доступність є найважливішим фактором. На 
доступність можуть впливати такі фактори, як: 
- Апаратне забезпечення: система обробки транзакцій повинна 
мати резервне обладнання. Апаратне резервування допускає часткові збої, 
оскільки резервні компоненти можуть бути автоматизовані, щоб взяти на 
себе керування та підтримувати роботу системи [11]. 
 
 
39 
 
Рис. 2.3. Приклади використання обробки транзакцій 
 
- Програмне забезпечення: програмне забезпечення системи 
обробки транзакцій повинно бути розроблено таким чином, щоб швидко 
відновлюватися після збою. Як правило, системи обробки транзакцій 
використовують для цього абстракцію транзакцій. Простіше кажучи, у разі 
збою незафіксовані транзакції відхиляються. Це дозволяє швидко 
перезавантажити систему [11]. 
 
2.5 Розподілена обробка даних 
Дуже часто набори даних занадто великі, щоб поміститися на одну 
машину. Розподілена обробка даних розбиває ці великі набори даних і 
зберігає їх на кількох машинах або серверах. Він базується на розподіленій 
файловій системі Hadoop (HDFS), архітектура якої зображена на рис. 2.4 
[11].  
 
 
40 
 
Рис. 2.4. Архітектура розподіленої файлової системи Hadoop 
 
Розподілена система обробки даних має високу відмовостійкість. 
Якщо один сервер у мережі виходить з ладу, завдання обробки даних 
можна перерозподілити на інші доступні сервери [11]. 
Розподілена обробка також може значно заощадити кошти. 
Підприємствам більше не потрібно будувати дорогі мейнфрейм-
комп’ютери та інвестувати в їх утримання та обслуговування [11]. 
Потокова обробка та пакетна обробка є поширеними прикладами 
розподіленої обробки [11]. 
 
2.6 Обробка даних в реальному часі 
Обробка в реальному часі подібна до обробки транзакцій, оскільки 
використовується в ситуаціях, коли очікується результат у реальному часі. 
Однак вони відрізняються тим, як вони справляються з втратою даних. 
Обробка в реальному часі обчислює вхідні дані якомога швидше. Якщо 
вона стикається з помилкою у вхідних даних, то помилка  ігнорується і 
потім переходить до наступної частини даних, що надходять. Програми 
GPS-стеження є найпоширенішим прикладом обробки даних у реальному 
часі [11]. 
 
41 
Порівнюючи це з обробкою транзакцій. У разі помилки, наприклад 
збою системи, обробка транзакцій припиняє поточну обробку та повторно 
запускається. У випадках, коли достатньо приблизних відповідей, перевага 
надається обробці в реальному часі, ніж обробці транзакцій [11]. 
Найпоширенішою технологією, яка використовується в обробці в 
реальному часі, є потокова обробка, процес якої зображено на рис. 2.5. 
Аналітичні дані беруться безпосередньо з потоку, тобто з джерела. Якщо 
дані використовуються для отримання результатів без їх завантаження та 
перетворення, процес відбувається набагато швидше [12]. Наприклад, дані 
з датчиків IoT або відстеження активності споживачів у режимі реального 
часу. Google BigQuery та Snowflake є прикладами хмарних платформ 
даних, які використовують обробку в реальному часі. 
 
 
Рис. 2.5. Обробка даних у реальному часі 
 
2.7 Пакетна обробка даних 
Як випливає з назви, пакетна обробка — це коли фрагменти даних, 
що зберігаються протягом певного періоду часу, аналізуються разом або 
пакетами. Пакетна обробка використовується тоді, коли потрібно 
проаналізувати великий обсяг даних для детального аналізу. Наприклад, 
показники продажів компанії за певний проміжок часу зазвичай 
піддаються пакетній обробці. Завдяки пакетній обробці даних 
економляться обчислювальні ресурси [11]. 
Пакетна обробка — це неймовірно економічний спосіб обробки 
величезних обсягів даних за невеликий проміжок часу. Дані зазвичай 
 
42 
витягуються з баз даних наприкінці дня, зберігаються на диску, а потім 
розподіляються по пакетах для перетворення і завантажуються в сховище 
даних. 
Процес пакетної обробки даних зображено на рис. 2.6. 
 
 
Рис. 2.6. Пакетна обробка даних 
 
Пакетна обробка даних розділяється за типом виконання дії на: 
одночасну, послідовну і паралельну.  
1. Одночасна пакетна обробка відбувається, коли дані 
оброблюються одним ресурсом для всіх випадків одночасно [10].  
2. Послідовна пакетна обробка відбувається, коли дані 
оброблюються одним і тим же ресурсом для різних випадків або відразу, 
або один після одного [10]. 
3. Паралельна пакетна обробка означає, що вони виконуються 
тими самими ресурсами, але частково перекриваються в часі. Вона 
використовується в основному у фінансових програмах або в місцях, де 
потрібні додаткові рівні безпеки. При цій обробці обчислювальний час 
відносно менший [10]. 
 
43 
Пакетна обробка має перевагу над обробкою в реальному часі, коли 
точність важливіша за швидкість. Крім того, ефективність пакетної 
обробки також вимірюється пропускною здатністю. 
 
2.8 Багатопроцесорна обробка даних 
Багатопроцесорність — це метод обробки даних, коли два або більше 
процесорів працюють над одним набором даних, як показано на рис. 2.7. 
Це може звучати точно як розподілена обробка, але є різниця. У 
багатопроцесорній обробці різні процесори знаходяться в одній системі. 
Таким чином, вони присутні в одному географічному місці. Якщо є збій 
компонента, це може знизити швидкість системи [11]. 
 
 
Рис. 2.7. Багатопроцесорна обробка даних 
 
Розподілена обробка, з іншого боку, використовує сервери, які не 
залежать один від одного і можуть бути присутніми в різних географічних 
місцях. Оскільки сьогодні майже всі системи мають можливість 
паралельно обробляти дані, майже кожна система обробки даних 
використовує багатопроцесорність [11]. 
Дані розбиваються на кадри, і кожен кадр обробляється двома чи 
більше процесорами в одній комп’ютерній системі, які працюють 
паралельно. Очікується, що отриманий результат буде досягнутий за 
менший час. Додаткова перевага полягає в тому, що кожен процесор є 
 
44 
незалежним, тому збій будь-якого не вплине на роботу інших процесорів 
[12]. 
Найбільш очевидним недоліком такого виду обробки даних є 
вартість. Створення та обслуговування внутрішніх серверів дуже дороге. 
 
2.9 Обробка даних з розподілом часу 
Центральний процесор комп’ютера майже одночасно взаємодіє з 
кількома користувачами за допомогою різних програм у цьому типі 
обробки. Цей процес представлено на рис. 2.8. Можна вирішити декілька 
окремих проблем під час процесу введення/виведення, оскільки 
центральний процесор значно швидший за більшість периферійного 
обладнання (наприклад, принтери чи монітори). Центральний процесор 
вирішує проблему кожного користувача послідовно, але у віддалених 
користувачів створюється враження, що доступ до системи розподілу часу 
та отримання з неї є миттєвими, оскільки рішення стають доступними 
негайно, як тільки проблема була виявлена [10]. 
Цей вид обробки даних повністю залежить від часу. При цьому одна 
одиниця обробки даних використовується кількома користувачами. 
Кожному користувачеві призначається встановлений час, протягом якого 
він повинен працювати на одному й тому ж процесорі. 
 
 
Рис. 2.8. Обробка даних з розподілом часу 
 
 
45 
2.10 Різновид методів обробки даних в сервісі Spotify  
Аудіо-сервіс Spotify заснований на технологіях Big Data, які 
дозволяють користувачам в режимі онлайн слухати більше музичні треки, 
аудіокниги і подкасти без завантаження даних на локальний пристрій.  
Тут буде розглянуто як відбувається обробка сеансів користувачів за 
допомогою різних методів обробки великих даних. 
Пакетна обробка даних в Spotify 
Часто для аналізу сеансів користувача в пакетному режимі 
використовуються такі Big Data технології, як Apache Kafka, Hadoop, Spark 
і Oozie [13]. У цьому випадку система аналітики великих даних, яка 
зображена на рис. 2.9, працює так: 
1. Спершу виконується збір даних про поведінку користувача – 
події активності користувачів безперервно відправляються в Apache Kafka 
в режимі реального часу [13]. 
2. Для періодичного копіювання подій з Kafka в HDFS, 
наприклад, щогодини використовується пакетний інструмент, такий як 
Camus або Oozie [13]; 
3. Spark запускає пакетні завдання для групування окремих подій 
користувача в сеанси користувача. У Spotify сесія одного користувача 
може тривати багато годин, наприклад, під час прослуховування музики в 
довгих поїздках. Це ускладнює процес створення повних і правильних 
сесій, так як події одного і того ж сеансу користувача можуть 
розташовуватися в різних часових сегментах, які невідомі заздалегідь [13]. 
4. Щоб зменшити вплив цієї проблеми завдання Spark може 
запускатися щодня, наприклад, опівночі, обробляючи останні 24-годинні 
сегменти, щоб створити набір даних з сеансами користувача за певний 
день. Такий підхід гарантує повноту і коректність створених сеансів 
користувача [13]. 
 
 
46 
 
Рис. 2.9. Метод пакетної обробки подій користувача 
 
Обробка даних в Spotify майже в реальному часі: мікропакетна 
архітектура 
Щоб створити мікропакетну архітектуру потрібно використовувати 
Spark Streaming. Безперервне виконання завдання потокової передачі Spark 
дозволяє виключити Camus, Oozie та поділ даних у Hadoop HDFS. Також 
можна швидше отримувати результати, налаштувавши завдання Spark 
Streaming для обробки всіх нових подій невеликими пакетами кожні 10 
хвилин або щохвилини [13]. Такий метод обробки даних показано на рис. 
2.10. 
 
 
Рис. 2.10. Метод обробки подій користувача майже в реальному часі 
 
Однак, реалізувати підтримку сеансів користувача в Spark не так 
просто, так як ця платформа внутрішньо поділяє безперервний потік подій 
на окремі мікропакети. Оскільки один сеанс користувача може охоплювати 
 
47 
кілька мікропакетів, потрібно розробити додатковий код для логічного 
угрупування подій з різних мікропакетів в один сеанс [13]. 
Дане рішення не підходить, якщо події прибувають із запізненням 
через проблеми з підключенням до мережі. Spotify дозволяє слухати 
музику в автономному режимі, коли відтворюватимуться пісні, що 
зберігаються локально на пристрої. У цьому випадку події сесії 
користувача будуть зберігатися як кеш локально на телефоні клієнта і не 
будуть відправлені в Apache Kafka без підключення до Інтернету. Як 
тільки користувач повернеться в онлайн, всі ті події потраплять до Kafka, 
причому накопичені події включаються до того ж мікропакету, що і нові 
події, які генеруються в онлайн-режимі. Якщо логіка обробки не відрізняє 
вихідний час події, згенерованої в автономному режимі від поточного 
часу, що трапився онлайн, будуть отримані неправильні результати, тому 
що старі та нові події вважаються однаковими та групуються в один 
мікропакет [13]. 
Обробка даних в Spotify майже в реальному часі: мікропакетна 
Вирішити проблеми пакетної обробки інформації допоможе перехід 
до технологій Big Data, які підтримують дійсно потоковий режим в 
реальному часі, такі як Apache Kafka у поєднанні з Flink [13]. Такий метод 
обробки даних показано на рис. 2.11. 
 
 
Рис. 2.11. Метод потокової обробки подій користувача в реальному 
часі 
 
Замінивши Spark Streaming на Apache Flink, можна безпосередньо 
звертатися до подій Kafka, обробляючи їх у вигляді потоку, а не пакетної 
абстракції. Таким чином, озера даних перетворюються на потокову річку. 
 
48 
У цьому випадку потоковий конвеєр виглядатиме таким чином: 
1. Для читання подій з теми Kafka програма Flink надає 
споживача, який за допомогою внутрішнього механізму контрольних 
точок надає можливість виконувати одноразову обробку. Потрібно лише 
вказати прості параметри підключення: тему та адресу посередника Kafka 
[13]. 
2. Далі створюються сеанси користувача – як ключ угрупування 
вхідних подій використовується userId і призначаються вікнам сеансу. Тут 
слід лише вказати проміжок між подіями, що становлять вікно, наприклад, 
30 хвилин [13]. 
3. Можна доповнити такий приклад якоюсь функцією 
обчислення, яка буде застосовуватися для кожного вікна сеансу 
користувача. В результаті виходить конвеєр обробки, який обробляє 
невпорядковані події [13]. 
  
 
49 
 
РОЗДІЛ 3 ПРОГРАМНІ ЗАСОБИ ДЛЯ АНАЛІЗУ ВЕЛИКИХ ДАНИХ 
 
3.1 Вибір мови програмування 
Деякі мови програмування були створені для обробки великих 
масивів даних, і навколо них створилася ціла екосистема з різноманітних 
бібліотек та фреймворків. Тим не менш не існує такої мови, яка б 
підходила найкраще для цієї мети. 
Фактори для вибору мови програмування: 
Специфіка 
В міру заглиблення в область науки про дані, щоразу доведеться 
знову «винаходити велосипед». Крім того, необхідно буде досконало 
опанувати різні пакети програм і модулі для обраної мови програмування 
[14]. 
Універсальність 
Більшість повсякденної роботи у галузі науки даних спрямовано на 
пошук і обробку вихідних даних чи коригування даних. На жаль, ніякі 
пакети для машинного навчання не допоможуть для цих цілей [14]. 
Ефективність 
Завдяки швидкому розвитку галузі науки про дані її постійно 
супроводжують технічні недоробки, і тільки наполеглива практика зможе 
звести до мінімуму такі недоліки [14]. 
Продуктивність 
У деяких випадках дуже важливо оптимізувати продуктивність коду, 
тим більше під час роботи з великими обсягами особливо важливих даних. 
Однак скомпільовані мови зазвичай набагато швидше, ніж інтерпретовані. 
Аналогічно, статично типізовані мови значно більш стійкі до відмови, ніж 
динамічно типізовані. Отже, єдиним компромісом є зниження 
продуктивності [14]. 
 
 
 
50 
3.1.1. Мова програмування Python 
Це одна з найпоширеніших мов програмування. Її було написано 
Гвідо ван Россумом в 1991 році. У роботі з великими даними Python 
зарекомендував себе як один із найкращих інструментів. 
Python підтримує структурний, об'єктно-орієнтоване, функціональне, 
імперативне і аспектно-орієнтоване програмування. Основні архітектурні 
риси - динамічна типізація, автоматичне керування пам'яттю, повна 
інтроспекція, механізм обробки виключень, підтримка багатопоточних 
обчислень, високорівневі структури даних. Підтримується розбиття 
програм на модулі, які, в свою чергу, можуть об'єднуватися в пакети [14]. 
Еталонною реалізацією Python є інтерпретатор CPython, що 
підтримує більшість активно використовуваних платформ. Він 
поширюється під вільною ліцензією Python Software Foundation License, що 
дозволяє використовувати його без обмежень в будь-яких додатках, 
включаючи пропрієтарні. Є реалізація інтерпретатора для JVM з 
можливістю компіляції, CLR, LLVM, інші незалежні реалізації. Проект 
PyPy використовує JIT-компіляцію, яка значно збільшує швидкість 
виконання Python-програм. 
Мова програмування Python удосконалюється своїм же 
співтовариством. Цей процес здійснюється через PEP. PEP (англ. Python 
Enhancement Proposal) – це пропозиції по розвитку мови Python, які 
виставляють на спеціальному сайті розробники Python. Але ці пропозиції 
обговорюються усім співтовариством Python. І цю пропозицію потім або 
приймають, або відхиляють.  
Однією з особливостей є те, що в Python легко працювати з великим 
об’ємом даних. Для цього є різні типи структур даних, що відрізняє цю 
мову від інших. Це списки, кортежі та словники Python.  
• Списки Python схожі на масиви з інших мов програмування, 
але в них можуть зберігатися дані різних типів. Це впорядковані змінювані 
колекції об’єктів. 
 
51 
• Кортежі Python схожі на списки Python, але, на відміну від них, 
є незмінюваними структурами даних. 
• Словник Python – це невпорядкована змінювана структура 
даних, яка зберігає дані за принципом «ключ-значення». По унікальному 
ключу можна дістати значення зі словника. 
Наявність багатих бібліотек та можливість використання у різних 
ситуаціях робить Python по-справжньому багатофункціональним 
інструментом. 
Для роботи з даними створено кілька спеціалізованих Python-
бібліотек: NumPy для обчислень, Pandas для аналізу табличних даних, 
Matplotlib для візуалізації. Python крім обробки та візуалізації даних 
активно використовується для розробки сайтів, програм та інших 
продуктів. Також вважається, що це проста мова для новачків, оскільки 
має зрозумілий синтаксис. 
Переваги мови програмування: 
- Python – це дуже популярна мова програмування загального 
призначення, що широко використовується. Він має великий набір 
спеціально розроблених модулів та широко використовується 
розробниками. Багато онлайн-сервісів надають API для Python [14]. 
- Для роботи з даними створено кілька спеціалізованих Python-
бібліотек: NumPy для обчислень, Pandas для аналізу табличних даних, 
Matplotlib для візуалізації. Python крім обробки та візуалізації даних 
активно використовується для розробки сайтів, програм та інших 
продуктів [14].  
- Вважається, що це проста мова для новачків, оскільки має 
зрозумілий синтаксис. 
Недоліки мови програмування: 
- Типобезпека. Python – це динамічно типізована мова, а це 
означає, що ви повинні бути обережними під час роботи з ним. Помилки 
 
52 
невідповідності типів (наприклад, передача рядка (string) як аргумент 
методу, який очікує ціле число (integer)) можуть іноді траплятися [14]. 
- Наприклад, якщо є конкретні цілі статистичного аналізу та 
аналізу даних, то великий набір пакетів мови R дає йому перевагу перед 
Python. Крім того, існують більш швидкі та безпечні альтернативи Python 
серед мов програмування [14]. 
 
3.1.2. Мова програмування R 
R був створений для роботи зі статистикою. Він дозволяє збирати та 
очищати дані, працювати з таблицями, проводити статистичні тести, різні 
види аналізу та складати графічні звіти. R підійде для фахівців, знайомих з 
теорією ймовірності, статистичними методами та математичним аналізом, 
тому на перший погляд він може здатися складним через інтуїтивно 
незрозумілий синтаксис [14]. 
На практиці R використовують: 
- для наукових досліджень у різних галузях; 
- машинного навчання та нейромереж; 
- маркетингових досліджень 
Для R створено понад 10 тис. бібліотек та розширень. Наприклад, 
Ggplot2 – для візуалізації даних, Bioconductor – для роботи з генетичною 
інформацією, а Quanteda – для аналізу текстів [14]. 
Переваги: 
- Відмінний набір високоякісних предметно-орієнтованих 
пакетів із відкритим вихідним кодом. R має у своєму розпорядженні 
пакети практично для будь-якого кількісного та статистичного 
застосування, яке можна тільки собі уявити. Сюди входять нейронні 
мережі, нелінійна регресія, філогенетика, побудова складних діаграм, 
графіків та багато іншого [14]. 
 
53 
- Разом з базовою установкою на додачу надається можливість 
встановлення великих вбудованих функцій і методів. Крім того, R чудово 
обробляє дані матричної алгебри [14]. 
- Можливість візуалізації даних є важливою перевагою поряд із 
можливістю використання різних бібліотек, наприклад ggplot2 [14]. 
Недоліки: 
- Низька продуктивність. 
- Специфіка. R чудово підходить для статистичних досліджень 
та науки про дані, але він не такий зручний, коли справа доходить до 
програмування для загальних цілей [14]. 
- Інші особливості. R має кілька незвичайних особливостей, які 
можуть спантеличити програмістів, які звикли працювати з іншими 
мовами програмування: індексування починається з 1, використання 
декількох операторів присвоювання, нетрадиційні структури даних [14]. 
 
3.1.3. Мова програмування Java 
На Java пишуть сайти, розробляють ПЗ та додатки. Це 
багатофункціональна та кросплатформова мова, код якою однаково 
працює на мобільних пристроях, консолях або в системі розумного 
будинку. 
Вона позиціонується як мова номер один у світі, якою користується 
близько 9 млн розробників. На Java написано безліч Big Data інструментів 
з відкритим кодом, тому розробники можуть створювати власні продукти 
для управління даними. Універсальність – основна перевага Java у Big Data 
[14]. 
Переваги: 
- Універсальність. Багато сучасних систем та програм 
розроблено за допомогою мови Java. Величезною перевагою такої мови 
програмування є здатність інтегрувати методи науки даних безпосередньо 
в існуючу кодову базу [14]. 
 
54 
- Строга типізація. Забезпечення типобезпеки не є порожнім 
звуком для Java, і в разі розробки критично важливих додатків для роботи 
з великими даними ця особливість як ніколи важлива [14]. 
- Java – це високопродуктивна, скомпільована мова загального 
призначення. Це робить її придатною для написання ефективного 
виробничого коду ETL, а також алгоритмів машинного навчання з 
використанням обчислювальних засобів [14]. 
Недоліки: 
- "Багатослівність" мови Java робить її не найкращим варіантом 
для проведення спеціальних аналізів та розробки більш спеціалізованих 
статистичних додатків [14]. 
- Java немає великої кількості бібліотек для передових 
статистичних методів проти деяких предметно-орієнтованих мов, таких як 
R [14]. 
 
3.1.4. Мова програмування Scala 
Мова Scala не дуже популярна у програмістів. При цьому в задачах 
обробки даних вона набагато швидше, ніж популярніший Python. Scala 
здатна швидко обробляти неймовірно великі обсяги інформації, тому його 
використовують у таких гігантах як Twitter, LinkedIn [14]. 
На Scala написано фреймворк Apache Spark, важливий для 
машинного навчання та аналізу великих даних. Цей фреймворк входить у 
екосистему Hadoop і дозволяє паралельно обробляти неструктуровані дані 
у реальному часі. Він легко взаємодіє з кодом Java та бібліотеками цієї 
мови [14]. 
Переваги: 
- Використовуючи Scala та Spark, з'являється можливість 
працювати з високопродуктивними кластерними обчисленнями. Scala – 
ідеальний вибір для тих, хто працює з великими обсягами даних [14]. 
 
55 
- Мультипарадигматичний. Для програмістів, які працюють із 
Scala, доступні як об'єктно-орієнтовані, так і функціональні парадигми 
програмування [14]. 
- Scala компілюється в байт-код Java та працює на JVM. Це 
дозволяє йому взаємодіяти з мовою Java, роблячи Scala дуже сильною 
мовою загального призначення. Крім того, він також добре підходить для 
роботи в галузі науки про дані [14]. 
Недоліки: 
- Якщо програміст зібрався працювати зі Scala, то йому потрібно 
буде неабияк «поламати» голову. Краще завантажити sbt та налаштувати 
IDE, наприклад Eclipse або IntelliJ, за допомогою спеціального плагіна 
Scala [14]. 
- Синтаксис та система типів Scala є досить складними. Таким 
чином, програмістам, які звикли працювати з динамічними мовами, 
наприклад, Python, буде дуже тяжко [14]. 
 
3.1.5. Мова програмування MATLAB 
Це мова, яка більше підходить для наукової чи виробничої сфери та 
складних математичних обчислень. Університети використовують його в 
академічних курсах з прикладної математики, фізики та в інженерних 
розробках [14]. 
Вважається, що рядовому розробнику не потрібна ця мова. В 
основному його використовують там, де потрібні гранична точність та 
мінімальні похибки при роботі з даними: у системах автопілота, медицині 
чи космічних дослідженнях [14]. 
Переваги: 
- MATLAB, призначений для чисельних обчислень, добре 
підходить для використання кількісного аналізу зі складними 
математичними вимогами, такими як обробка сигналів, перетворення 
Фур'є, матрична алгебра та обробка зображень [14]. 
 
56 
- Візуалізація даних. MATLAB має низку вбудованих 
можливостей побудови графіків та діаграм [14]. 
- MATLAB часто можна зустріти в багатьох курсах бакалаврату 
з точних наук, таких як фізика, інженерія та прикладна математика. Таким 
чином він широко використовується в цих областях [14]. 
Недоліки: 
- Платна ліцензія. 
- MATLAB – це не найкраща мова програмування для 
загального призначення [14]. 
 
3.1.6. Мова програмування Julia 
Мова Julia замислювалася як більш проста та зрозуміла альтернатива 
MATLAB. Вона є однією з наймолодших та найсучасніших мов.  
За параметрами продуктивності Julia не поступається Python, R чи 
MATLAB. Її використовують для обробки запитів у backend, машинного 
навчання і навіть для створення комп'ютерних симуляцій. У майбутньому 
Julia може замінити популярний Python, але поки що ця мова розвивається, 
не має власної екосистеми інструментів та великого набору бібліотек, а 
розробники використовують для роботи з нею Python-бібліотеки [14]. 
Переваги: 
- Julia – це скомпільована мова JIT, завдяки якій вдається 
досягти хорошої продуктивності. Ця мова є досить простою, вона 
передбачає можливості динамічної типізації та сценаріїв інтерпретованої 
мови, такої як Python [14]. 
- Julia був призначений для проведення чисельного аналізу, він 
також може розглядатися як мова програмування загального призначення. 
- Читаємість. Багато програмістів, які працюють з цією мовою, 
вважають, що така особливість є її найбільшою перевагою [14]. 
Недоліки: 
 
57 
- Незрілість. Оскільки Julia є досить новою мовою, деякі 
розробники стикаються з нестабільністю під час роботи з його пакетами. 
Однак базові засоби мови вважаються стабільними [14]. 
- Ще однією ознакою незрілості мови є обмежена кількість 
пакетів програм, а також невелика кількість прихильників серед 
розробників. На відміну від усталених R і Python, мова програмування Julia 
не має у своєму розпорядженні велику кількість пакетів програм [14]. 
 
3.1.7. Мова програмування Go 
Ця мова була розроблена Google спеціально для аналізу та обробки 
великих даних. Орієнтована насамперед на отримання та аналіз інформації 
з БД, хоча також застосовується для роботи зі штучним інтелектом та веб-
розробки [14]. 
Переваги: 
- Максимальна простота. Мова дуже доброзичлива до новачків, 
має низький поріг входження і простий синтаксис. 
- Безліч стандартних бібліотек. У тому числі для аналізу даних 
та роботи з базами [14].  
- Висока продуктивність. Програми цією мовою швидко 
компілюються і так само швидко працюють [14]. 
- Новизна. Це і плюс, і мінус. У мови немає застарілих 
конструкцій, вона створена з урахуванням сучасних стандартів 
програмування. Деяких функцій в мови поки що не вистачає [14]. 
Недоліки: 
- Занадто проста. Через свою легкість Go погано підходить для 
написання масштабних та складних проектів — у неї не вистачає для цього 
можливостей. Найчастіше на ній пишуть окремі мікросервіси [14]. 
- Невелика кількість інформації. Через новизну та малу 
поширеність складно буває знайти відповіді на запитання, що виникають 
під час розробки [14]. 
 
58 
3.1.8. Мова структурованих запитів SQL 
SQL визначає, керує та робить запити до реляційної бази даних. 
Мова з'явилася в 1974 році і відтоді зазнала безліч видозмін, але основні її 
принципи залишаються незмінними.  
Переваги: 
- Дуже ефективна під час роботи із запитами, оновленнями, а 
також при обробці реляційних баз даних [14]. 
- Декларативний синтаксис робить SQL мовою, яка легко 
читається [14]. 
- SQL дуже часто використовується в різних додатках, так що 
знайомство з ним може дуже стати в нагоді. Модулі, такі як SQLAlchemy, 
полегшують інтеграцію SQL з іншими мовами [14]. 
Недоліки: 
- Існує безліч різних варіацій SQL, таких як PostgreSQL, SQLite, 
MariaDB. Всі вони досить різні, тому про жодну сумісність не може бути й 
мови [14]. 
 
3.2. Аналіз сучасних систем обробки великих даних 
Щоб завершити процес прийому даних, потрібно використовувати 
правильні інструменти для цього, і найголовніше, щоб інструменти були 
здатні підтримувати деякі фундаментальні принципи, такі як: 
- Пропускна здатність мережі. Конвеєр даних повинен мати 
можливість конкурувати з бізнес-трафіком. Іноді трафік збільшується, а 
іноді зменшується, тому масштабованість пропускної здатності мережі є 
найбільшою проблемою для конвеєра даних. 
- Гетерогенні технології та система. Інструменти для конвеєра 
прийому даних повинні мати можливість використовувати різні технології 
джерел даних і різні операційні системи. 
- Правильний формат даних. Інструменти мають забезпечувати 
формат серіалізації даних, тобто, оскільки дані надходять у змінному 
 
59 
форматі, тож конвертація їх у єдиний формат забезпечить простіший 
перегляд для розуміння даних. 
- Потокова передача даних. Залежить від потреб бізнесу, чи 
обробляти дані пакетно, потоково або в реальному часі. Іноді можуть 
знадобитися всі ці обробки. Отже, інструменти повинні бути здатні 
підтримувати їх. 
 
3.2.1. Сервіси Apache Software Foundation 
Apache Flume 
Apache Flume — це розподілений, надійний і доступний сервіс для 
ефективного збору, агрегування та переміщення великих обсягів 
журнальних даних [15]. 
Він має просту та гнучку архітектуру, засновану на потокових даних. 
Він надійний і відмовостійкий, має налаштовувані механізми надійності та 
багато механізмів відновлення після відмови. Він використовує просту, 
розширювану модель даних, яка дозволяє створювати онлайн-аналітичну 
програму [15]. 
Функції Apache Flume: 
- Потокові дані — можливість надсилати потокові дані з кількох 
джерел у Hadoop для подальшого зберігання та аналізу [15]. 
- Ізоляція системи — платформа буферного зберігання від 
тимчасових стрибків, коли швидкість надходження даних перевищує 
швидкість, з якою дані можуть бути записані до місця призначення [15] 
- Горизонтальне масштабування — для отримання нових потоків 
даних і додаткового обсягу за потреби [15]. 
Apache NiFi 
Apache NiFi надає просту у використанні, потужну та надійну 
систему для обробки та розповсюдження даних. Apache NiFi підтримує 
надійні та масштабовані спрямовані графи маршрутизації даних [15]. Його 
функції: 
 
60 
- відстежування потоку даних від початку до кінця [15]; 
- досвід в проектуванні, контролю, зворотному зв’язку і 
моніторингу [15]; 
- безпека завдяки SSL, SSH, HTTPS, зашифрованому вмісту [15]. 
Apache Kafka 
Apache Kafka – це розподілена система обміну повідомленнями з 
високою пропускною здатністю. Вона використовується для створення 
конвеєрів даних у реальному часі та потокових програм. Вона може 
обробляти потоки даних у режимі реального часу та зберігати потоки 
даних у розподіленому реплікованому кластері. Kafka працює в поєднанні 
з Apache Storm, Apache HBase та Apache Spark для аналізу в реальному часі 
та відтворення потокових даних [16]. 
Варіанти використання Apache Kafka: 
- Потокова обробка. 
- Відстеження активності веб-сайту. 
- Збір і моніторинг показників. 
Особливості Apache Kafka: 
- Однією з особливостей Apache Kafka є надійний обмін 
повідомленнями [16]. 
- Apache Kafka значною мірою покладається на файлову систему 
для зберігання та кешування повідомлень: замість того, щоб зберігати 
якомога більше в пам’яті та скидати все у файлову систему, усі дані 
негайно записуються до постійного журналу файлової системи без 
обов’язкового скидання на диск [16]. 
- Apache Kafka вирішує ситуацію, коли виробник генерує 
повідомлення швидше, ніж споживач може їх спожити [16]. 
Архітектура Apache Kafka. 
Конструкція системи Apache Kafka працює як журнал розподілених 
комітів, де вхідні дані записуються на диск послідовно. Є чотири основні 
 
61 
компоненти, задіяні в переміщенні даних у систему Apache Kafka та з неї 
[16]. 
- Теми (Topics) — тема - це визначена користувачем категорія, у 
якій публікуються повідомлення. 
- Виробники (Producers) — виробники публікують повідомлення 
в одній або кількох темах. 
- Споживачі (Consumers) — споживачі підписуються на теми та 
обробляють опубліковані повідомлення. 
- Посередники (Brokers) — посередники, які керують 
збереженням і реплікацією даних повідомлень. 
Apache Sqoop. 
Apache Sqoop – проста система пакетної обробки для офлайн 
аналітики [15]. 
Вона ефективно передає пакети даних між Apache Hadoop і 
структурованими сховищами даних, такими як реляційні бази даних. 
Apache Sqoop також можна використовувати для отримання даних із 
Hadoop та експорту їх у зовнішні сховища структурованих даних [15]. 
Apache Sqoop працює з реляційними базами даних, такими як 
Teradata, Netezza, Oracle, MySQL, Postgres і HSQLDB [15]. 
Функції Apache Sqoop [15]: 
- імпорт послідовних наборів даних із мейнфрейму; 
- імпорт даних; 
- паралельна передача даних; 
- швидке копіювання даних; 
- ефективний аналіз даних; 
- балансування навантаження. 
Apache Storm 
Apache Storm - це система обробки потокових даних у реальному 
часі [15]. 
 
62 
Кластер Apache Storm приймає рішення про критичність події та 
надсилає сповіщення в систему попереджень (інформаційну панель, 
електронну пошту, інші системи моніторингу) [15]. 
Особливості Apache Storm [15]: 
- Швидкість. Вона може обробляти мільйон повідомлень 
розміром 100 байт на секунду на вузол. 
- Масштабованість. Вона може виконувати паралельні 
обчислення, які виконуються в кластері машин. 
- Стійкість до відмов. Коли робочі частини перестають 
працювати, Storm автоматично перезапускає їх. Якщо вузол вимикається, 
робочу частину буде перезапущено на іншому вузлі. 
- Надійність. Storm гарантує, що кожна одиниця даних буде 
оброблена принаймні один або рівно один раз. 
- Простота в експлуатації. Вона складається зі стандартних 
конфігурацій, придатних для виробництва з першого дня. Розгорнувши 
один раз, зі Storm легко працювати. 
- Гібридна система обробки. Це складається з можливостей 
системи пакетної обробки та обробки в реальному часі. Для цього типу 
інструментів обробки використовуються Apache Spark і Apache Flink. 
Apache Spark. 
Apache Spark — це швидкий механізм обробки даних у пам’яті з 
вдалими API для розробки, які дозволяють робочим частинам обробки 
даних ефективно виконувати потокове передавання, машинне навчання 
або робочі навантаження SQL, які потребують швидкого ітераційного 
доступу до наборів даних. Spark використовує ідею локальності даних, 
проте виносить більшість обчислень у пам'ять замість диска [15]. 
Завдяки тому, що Spark працює на Apache Hadoop YARN, 
розробники будь-де можуть створювати додатки, щоб використовувати 
потужність Spark, отримувати статистичні дані та збагачувати свої робочі 
 
63 
навантаження в сфері науки про дані в рамках єдиного спільного набору 
даних у Hadoop [15]. 
Apache Flink. 
Apache Flink — це платформа з відкритим вихідним кодом для 
обробки розподіленого потоку, яка надає точні результати навіть у разі 
невпорядкованих або запізнілих даних. Деякі з її особливостей [15]: 
- Вона підтримує стійкість до відмов і може легко 
відновлюватися після збоїв, зберігаючи стан програми. 
- Працює у великих масштабах, працює на тисячах вузлів із 
відмінною пропускною здатністю та характеристиками затримки. 
- Це механізм виконання потоку даних, API та доменно-
спеціальні бібліотеки для пакетної обробки, потокової передачі, 
машинного навчання та обробки графів. 
Варіанти використання Apache Flink [15] 
- Оптимізація результатів пошуку електронної комерції в режимі 
реального часу. 
- Потокова обробка як послуга для команд з обробки даних 
- Моніторинг мережі або датчика та виявлення помилок 
- ETL для інфраструктури бізнес-аналітики 
Apache Hive 
Apache Hive — це СУБД, створена на основі Apache Hadoop для 
забезпечення узагальнення даних, спеціальних запитів і аналізу великих 
наборів даних [15]. 
Аналітики даних використовують Hive, щоб робити запити, 
узагальнювати, досліджувати та аналізувати ці дані, а потім перетворювати 
їх на ефективні бізнес рішення. Вона надає механізм для проектування 
структури на дані в Hadoop і робити запити до цих даних за допомогою 
SQL, використовуючи мову під назвою HiveQL [15]. 
Особливості Apache Hive [15]: 
- Запит даних за допомогою мови на основі SQL. 
 
64 
- Інтерактивний час відповіді навіть на масивні набори даних. 
Її можна масштабувати в міру того, як зростає різноманітність і обсяг 
даних, можна додавати більше стандартних машин без відповідного 
зниження продуктивності. 
 
3.2.2. Системи для зберігання великих даних 
HDFS: розподілена файлова система Hadoop 
HDFS — це файлова система на основі Java, яка забезпечує 
масштабоване та надійне зберігання даних і розроблена для охоплення 
великих кластерів стандартних серверів [17].  
Щоб представити HDFS, можна уявити звичайну файлову систему, 
тільки більше. Звичайна файлова система складається з таблиці файлових 
дескрипторів та області даних. У HDFS замість таблиці використовується 
спеціальний сервер - сервер імен (NameNode), а дані розкидані по серверах 
даних (DataNode). 
HDFS містить величезну кількість даних і забезпечує легший доступ. 
Щоб зберігати такі масивні дані, файли зберігаються на кількох машинах. 
Ці файли зберігаються з певним надлишком, щоб врятувати систему від 
можливої втрати даних у разі збою [17]. 
HDFS також робить програми доступними для паралельної обробки. 
Її створено для підтримки програм із великими наборами даних, 
включаючи окремі файли розміром у терабайти [17]. 
Вона використовує архітектуру головного/підлеглого, причому 
кожен кластер складається з одного серверу імен, який керує операціями 
файлової системи, і допоміжних серверів даних, які керують зберіганням 
даних на окремих обчислювальних вузлах [17]. 
Коли HDFS приймає дані, він розбиває інформацію на окремі 
фрагменти та розподіляє їх між різними вузлами в кластері, що забезпечує 
паралельну обробку [17]. 
 
65 
Файлова система також копіює кожну частину даних кілька разів і 
розподіляє копії на окремі вузли, розміщуючи принаймні одну копію на 
іншій серверній стійці [17]. 
Особливості HDFS [17]: 
- Вона підходить для розподіленого зберігання та обробки. 
- Hadoop надає командний інтерфейс для взаємодії з HDFS. 
- Вбудовані сервери вузла імен і вузла даних допомагають 
користувачам швидко перевіряти стан кластера. 
- Потоковий доступ до даних файлової системи. 
- HDFS забезпечує можливість дозволів на файли та 
автентифікацію. 
GlusterFS. 
Системи масштабованого зберігання на основі GlusterFS підходять 
для неструктурованих даних, таких як документи, зображення, аудіо- та 
відеофайли та файли журналів. GlusterFS — це масштабована мережева 
файлова система [13]. 
Використовуючи її, можна створювати великі розподілені рішення 
для зберігання даних для потокового передавання медіа, аналізу даних та 
інших завдань, які потребують великої кількості даних і пропускної 
здатності [13]. 
Особливості GlusterFS [13]: 
- Вона має відкритий код. 
- Можливість розгортання GlusterFS за допомогою типових 
апаратних серверів. 
- Лінійне масштабування продуктивності та ємності зберігання. 
- Збільшення розміру сховища до кількох петабайт, доступ до 
яких можуть мати тисячі серверів. 
Варіанти використання GlusterFS [13] 
- Хмарні обчислення. 
- Потокове медіа. 
 
66 
Amazon S3 
Amazon Simple Storage Service (Amazon S3) — це сховище об’єктів із 
простим інтерфейсом веб-сервісу для зберігання та отримання будь-якої 
кількості даних з будь-якого місця в Інтернеті [13]. 
Він розроблений для забезпечення довговічності і масштабування 
понад трильйонsd об’єктів по всьому світу [13]. 
Клієнти використовують S3 як основне сховище для хмарних 
програм; як пакетне сховище або озеро даних для аналітики; як ціль для 
резервного копіювання, аварійного відновлення; і з безсерверними 
обчисленнями [13]. 
За допомогою параметрів міграції хмарних даних Amazon легко 
перемістити великі обсяги даних у S3 або з нього [13]. 
 
3.2.3. Системи для запиту великих даних 
Spark SQL 
Spark SQL — це модуль Spark для обробки структурованих даних. 
Він включає оптимізатор на основі витрат, стовпчасте зберігання та 
генерацію коду для швидкого виконання запитів [13]. 
У той же час він масштабується до тисяч вузлів і багатогодинних 
запитів за допомогою механізму Spark, який забезпечує повну 
відмовостійкість у середині запиту [13]. 
Деякі з функцій, які виконує Spark SQL: 
- Інтерфейси, надані Spark SQL, надають Spark більше 
інформації про структуру як даних, так і обчислень, що виконуються. 
- Внутрішньо Spark SQL використовує цю додаткову 
інформацію для виконання додаткової оптимізації. 
- Одним із способів використання Spark SQL є виконання 
запитів SQL. 
- Spark SQL також можна використовувати для читання даних із 
наявної інсталяції Hive. 
 
67 
Amazon Redshift. 
Amazon Redshift — це повністю керована служба сховища даних у 
петабайтному масштабі в хмарі. Amazon Redshift використовується для 
завантаження даних і виконання запитів до даних [13]. 
За потреби також можна створити додаткові бази даних, виконавши 
команду SQL. Найважливіше, що є можливість масштабувати її від ста 
гігабайт даних до петабайта чи більше [13]. 
Це дає змогу використовувати дані для отримання нових рішень для 
бізнесу. Служба Amazon Redshift керує всією роботою з налаштування, 
роботи та масштабування сховища даних [13]. 
Presto 
Presto — це система розподілених SQL-запитів з відкритим кодом 
для виконання інтерактивних аналітичних запитів до джерел даних будь-
якого розміру від гігабайтів до петабайтів [13]. 
Presto був розроблений і написаний для інтерактивної аналітики та 
підходів, а також швидкості комерційних сховищ даних з одночасним 
масштабуванням до розміру організацій, таких як Facebook [13]. 
Можливості Presto [13]: 
- Presto дозволяє запитувати дані там, де вони знаходяться, 
включаючи Hive, реляційні бази даних або навіть власні сховища даних. 
- Один запит Presto може поєднувати дані з кількох джерел, що 
дозволяє проводити аналітику в усій організації. 
- Presto орієнтований на аналітиків, які очікують, що час 
відповіді коливається від півсекунд до хвилин. 
HBase 
Незважаючи на популярність SQL рішень для аналітики на базі 
Hadoop, іноді таки доводиться боротися з іншими проблемами, для яких 
краще пристосовані NoSQL бази [13].  
HBase - це розподілена нереляційна СУБД, що ефективно підтримує 
випадкове читання та запис. Таблиці в HBase тривимірні (рядковий ключ, 
 
68 
штамп часу та кваліфіковане ім'я колонки), ключі зберігаються 
відсортованими в лексиграфічному порядку [13].  
HBase дозволяє працювати з окремими записами в реальному часі. І 
це важливий додаток до інфраструктури Hadoop. Наприклад, потрібно 
зберігати інформацію про користувачів: їх профілі та журнал усіх дій. 
Журнал процесів — це класичний приклад аналітичних даних: дії, тобто. 
події записуються один раз і більше ніколи не змінюються. Дії 
аналізуються пачками та з деякою періодичністю, наприклад, раз на добу. 
А ось профілі необхідно постійно оновлювати, причому в реальному часі. 
Тому для журналу подій можна використати, наприклад, Hive, а для 
профілів – HBase [13]. 
 
3.2.4. Системи для візуалізації великих даних 
Tableau 
Tableau — найбагатший інструмент візуалізації даних, доступний на 
ринку. 
Tableau дозволяє користувачам створювати діаграми, карти, 
табличні, матричні звіти, історії та інформаційні панелі без будь-яких 
технічних знань [13]. 
Tableau допомагає будь-кому швидко аналізувати, візуалізувати та 
обмінюватися інформацією. Незалежно від того, структуровані чи 
неструктуровані, петабайти чи терабайти, мільйони чи мільярди рядків 
[13]. 
Він підключається безпосередньо до локальних і хмарних джерел 
даних або імпортує дані для швидкої роботи в пам’яті [13]. 
Looker 
Looker позиціонує себе як програмне забезпечення класу бізнес-
аналітики та платформу аналітики великих даних, яка допомагає 
досліджувати, аналізувати та ділитися аналітикою бізнесу в режимі 
 
69 
реального часу. У червні 2019 року Google оголосив про купівлю 
платформи Looker за $2.6 млрд. 
Looker - це дійсно зручний інструмент і один з небагатьох продуктів 
класу BI, який дозволяє в режимі онлайн працювати з реляційними 
таблицями, які описані в LookML-моделі [18]. 
Інженеру, який працює над Looker, потрібно описати модель даних 
мовою LookML (щось схоже на CSS і SQL), опублікувати цю модель даних 
і далі налаштувати звітність та веб-панелі. 
Сам LookML досить простий, взаємозв'язки між об'єктами даних 
задаються інженером з даних, що згодом дозволяє використовувати дані 
без знання мови SQL, адже Looker сам перетворює код, який написав 
користувач мовою LookML, на код на мові SQL [18]. 
Вибір СУБД, до яких може підключитися Looker, дуже багатий. Це і 
Amazon Redshift, і Apazhe Hive, Apache Spark, Google Cloud BigQuery, 
MariaDB, MongoDB, MySQL, PostgreSQL і багато інших [18]. 
Kibana 
Інформаційна панель Kibana відображає колекцію збережених 
візуалізацій. Вона має можливість впорядковувати та змінювати розміри 
візуалізацій за потреби, а також зберігати інформаційні панелі [13]. 
Kibana діє як платформа аналітики та візуалізації, яка базується на 
Elasticsearch, щоб дати краще розуміння ваших даних [13]. 
Моніторинг продуктивності додатків є однією з ключових областей, 
яку слід застосовувати в проектах, щоб забезпечити правильну та 
безперебійну роботу з першого дня. Рішення моніторингу продуктивності 
додатків надають групі розробників і операцій майже в режимі реального 
часу інформацію про те, як додатки та служби працюють у робочому стані, 
що дозволяє здійснювати виявлення можливих виробничих проблем [13]. 
Ядро Kibana поставляється з гістограмами, лінійними графіками, 
секторними діаграмами тощо. Вони використовують усі можливості 
агрегації Elasticsearch [13]. 
 
70 
Інтелектуальні агенти. 
Інтелектуальний агент — це програмне забезпечення, яке допомагає 
людям і діє від їх імені. Інтелектуальні агенти працюють, дозволяючи 
людям делегувати роботу, яку вони могли б виконати, програмному 
забезпеченню агента [13]. 
Агенти можуть виконувати повторювані завдання, згадувати речі, які 
користувач забув, розумно узагальнювати складні дані, вчитися у 
користувачів і навіть давати їм рекомендації [13]. 
Розумний агент може допомогти знайти та відфільтрувати 
інформацію, при перегляді корпоративних даних або при перегляді 
Інтернету і не знанні, де знаходиться потрібна інформація [13]. 
Він також може налаштувати інформацію відповідно до ваших 
уподобань, таким чином заощаджуючи час на її обробку, оскільки щодня в 
Інтернеті надходить все більше й більше нової інформації [13]. 
Агент продовжує працювати, навіть коли користувача немає, що 
означає, що агент може працювати на сервері, але в деяких випадках агент 
працює в системах користувача [13]. 
Рекомендаційні системи 
Системи рекомендацій надають персоналізовану інформацію, 
вивчаючи інтереси користувача зі слідів взаємодії з цим користувачем. 
Щоб система рекомендацій могла робити прогнози щодо інтересів 
користувача, вона має визначити модель користувача [13]. 
Модель користувача містить дані про користувача та має бути 
представлена таким чином, щоб дані можна було зіставити з елементами 
колекції [13]. 
Більшість систем рекомендацій зосереджені на завданні фільтрації 
інформації, яке має справу з доставкою елементів, вибраних із великої 
колекції, які користувач, ймовірно, вважатиме цікавими чи корисними [13]. 
Система фільтрації на основі вмісту часто використовує багато тих 
самих методів, що й система пошуку інформації (наприклад, пошукова 
 
71 
система), оскільки обидві системи вимагають опису вмісту елементів у 
своєму домені. Система рекомендацій також вимагає моделювання 
уподобань користувача протягом більш тривалого періоду, що не потрібно 
в системі пошуку інформації [13]. 
Angular.JS Framework 
AngularJS — це дуже потужний фреймворк JavaScript. Він 
використовується в проектах одно сторінкових додатків [13]. 
AngularJS є відкритим вихідним кодом, повністю безкоштовним і 
використовується тисячами розробників у всьому світі.  
React.JS. 
React — це бібліотека JavaScript, яка використовується для створення 
інтерфейсу користувача, зосереджена на інтерфейсі користувача, а не на 
фреймворку [13].  
Вона заохочує створення повторно використовуваних компонентів 
інтерфейсу користувача, які представляють дані, які змінюються з часом. 
Має односторонній потік даних. Вона використовується для обробки 
перегляду для Інтернету та мобільних програм. Наразі це одна з 
найпопулярніших бібліотек JavaScript, за якою стоїть міцна основа та 
велика спільнота [13]. 
 
3.2.5. Інтеграція Elasticsearch з Logstash 
Elastic Logstash — це конвеєр обробки даних на стороні сервера з 
відкритим вихідним кодом, який отримує дані з безлічі джерел, одночасно 
перетворює їх, а потім надсилає у сховище, тобто Elasticsearch [13]. 
Він легко отримує дані з ваших журналів, показників, веб-додатків, 
сховищ даних і різноманітних служб AWS у безперервному потоковому 
режимі. Він може приймати дані будь-якої форми, розміру та будь-яких 
джерел [13]. 
 
  
 
72 
РОЗДІЛ 4 СТРУКТУРА СИСТЕМИ АНАЛІЗУ ВЕЛИКИХ ДАНИХ 
 
4.1.  Опис ідеї проекту бізнес-аналітики 
Великі компанії потребують бізнес-рішень побудованих на аналітиці 
даних, які генеруються впродовж існування і виробництва тієї чи іншої 
компанії. Тому в даному розділі буде розглянуто ідею проекту бізнес-
аналітики для компанії, яка займається продажами. Аналітик компанії за 
допомогою даного програмного забезпечення зможе виявляти помилки в 
роботі компанії, які можуть принести їй збитки, або ж виокремлювати 
тенденції ринку та робити правильні висновки для подальшого 
забезпечення компанії прибутком. 
Проект складатиметься з трьох основних частин: джерела даних, 
платформи GCP з її службами та програми для візуалізації даних. 
Основне програмне забезпечення буде побудовано за допомогою 
платформи GCP - Google Cloud Platform.  
Структурна схема проекту зображена на рис. 4.1. 
 
 
Рис. 4.1. Структурна схема програмного забезпечення 
 
Джерело даних представлено у вигляді сервера, на якому 
зберігаються різноманітні дані, наприклад товарно-транспортні накладні 
 
73 
на кожне перевезення або доставку. З кожним новим надходженням даних 
на сервер, буде оновлюватися інформація, яку використовує аналітик.  
Платформа GCP в даному проекті використовується як конвеєр 
даних, за допомогою якого дані проходять певну обробку (очищення 
фільтрацію, трансформування), зберігаються в хмарному сховищі, 
аналізуються та надаються для візуалізації кінцевому користувачу. 
Програмою для візуалізації є Looker. Він легко інтегрується з 
платформою GCP, так як це також один з проектів компанії Google.  
 
4.2. Платформа Google Cloud Platform 
Google Cloud Platform – це набір хмарних служб, які виконуються на 
тій же самій інфраструктурі, яку Google використовує для своїх продуктів 
призначених для кінцевих споживачів, таких як Google Search та YouTube. 
Окрім інструментів для керування, також надається ряд модульних 
хмарних служб, таких як обчислення, зберігання даних, аналіз даних та 
машинне навчання [19]. 
Деякі популярні служби платформи GCP [19]: 
- App Engine — платформа як послуга для хостингу застосунків. 
- BigQuery — інфраструктура як послуга масштабована 
аналітика для баз даних. 
- Bigtable — інфраструктура як послуга масштабованої NoSQL 
бази даних. 
- Cloud AutoML — набір продуктів для машинного навчання, 
який дозволяє розробникам з обмеженим досвідом роботи в галузі 
машинного навчання використовувати технології навчання та створення 
нейронних мереж. 
- Cloud Datastore — документо-орієнтована хмарна база даних. 
- Cloud Functions — функція як послуга забезпечує безсерверні 
функції, які запускаються при певних хмарних подіях. 
 
74 
- Cloud Machine Learning Engine — кероване машинне навчання 
як послуга для тренування та виконання моделей у TensorFlow. 
- Cloud Pub/Sub — послуга для публікації та підписки на потоки 
даних та повідомлення. Застосунки можуть обмінюватись подіями через 
публікацію/підписку, без прямого обміну повідомленнями. 
- Compute Engine — інфраструктура як послуга надає віртуальні 
машини. 
- Kubernetes Engine — система автоматичного розгортання, 
масштабування та управління застосунків у контейнерах для Kubernetes. 
- Google Genomics — аналіз геномів у хмарі. 
- Cloud Storage — інфраструктура як послуга надає онлайн 
REST-доступ до файлів та вмісту сховищ даних. 
Платформа надає клієнтам вузькоспеціалізований сервіс у трьох 
основних напрямках: великі дані, машинне навчання та аналітика, з 
хорошим масштабуванням і стабільним балансуванням навантаження, а 
також низьким часом відгуку [19]. 
Google Cloud Platform має такі переваги [19]: 
- Відмінна інтеграція з іншими сервісами Google. 
- Швидкий ввід-вивід. 
- Надійна аналітика та зберігання даних. 
- Має велику спільноту і швидкий зворотній зв’язок. 
- Хороша портативність та інтеграція з відкритим кодом. 
 
4.2.1. Потокова обробка даних 
Так як дані можуть надходити в різній кількості на одиницю часу, то 
потрібно використовувати метод обробки даних в режимі реального часу, 
щоб аналітик мав змогу бачити зміни у поведінці компанії та реагувати 
певним рішенням на них. Тому використовуються такі служби GCP, як 
Cloud Pub/Sub та Cloud Data Fusion. 
Cloud Pub/Sub 
 
75 
Cloud Pub/Sub — це асинхронна та масштабована служба обміну 
повідомленнями, яка відокремлює служби, що створюють повідомлення, 
від служб, які обробляють ці повідомлення [20]. 
Cloud Pub/Sub використовується для потокової аналітики та 
конвеєрів інтеграції даних для отримання та розповсюдження даних. Вона 
однаково ефективна як проміжне програмне забезпечення, орієнтоване на 
обмін повідомленнями для інтеграції сервісів, або як черга для 
розпаралелювання завдань [20]. 
Pub/Sub дозволяє створювати системи виробників і споживачів 
подій, які називаються видавцями та підписниками. Видавці спілкуються з 
підписниками асинхронно за допомогою широкомовних подій [20]. 
Видавці надсилають події до служби Pub/Sub, незалежно від того, як 
і коли ці події мають бути оброблені. Потім Pub/Sub доставляє події всім 
службам, які на них реагують. І видавці не чекають, поки підписники 
отримають дані, вони можуть і далі надсилати події до служби Pub/Sub. 
Асинхронна інтеграція в Pub/Sub підвищує гнучкість і надійність усієї 
системи [20]. 
На рис. 4.2 показано як повідомлення (події) надходять від видавця 
до підписника. 
 
 
Рис. 4.2. Алгоритм передачі повідомлення в службі Pub/Sub 
 
 
76 
Основні поняття [20]: 
1. Topic (Тема). Іменований ресурс, на який видавці надсилають 
повідомлення. 
2. Subscription (Підписка). Іменований ресурс, що представляє 
потік повідомлень з однієї конкретної теми, який буде доставлено до 
програми, яка підписується.  
3. Message (Повідомлення). Комбінація даних, які видавець 
надсилає до теми та доставляються підписникам. 
4. Publisher (Видавець). Програма, яка створює та надсилає 
повідомлення на одну або кілька тем. 
5. Subscriber (Підписник). Програма з підпискою на одну або 
кілька тем для отримання повідомлень з неї. 
6. Ack (Підтвердження). Сигнал, надісланий підписником до 
Pub/Sub після успішного отримання повідомлення. Підтверджені 
повідомлення видаляються з черги повідомлень про підписку. 
Таким чином сервер, приймаючи нові дані, буде передавати 
повідомлення до служби Pub/Sub під конкретною темою як видавець, а  
служба Cloud Functions буде підписником на дану тему і буде приймати ці 
повідомлення. Так можна організувати метод обробки потокових даних. 
Cloud Functions 
Google Cloud Functions — це безсерверне середовище виконання для 
створення та підключення хмарних служб. За допомогою Cloud Functions  
можна писати прості, одноцільові функції, які прив’язуються до подій, що 
надходять із хмарної інфраструктури та служб. Функція запускається, коли 
запускається подія, яку вона спостерігає. Код виконується в повністю 
керованому середовищі. Немає необхідності створювати будь-яку 
інфраструктуру або турбуватися про керування серверами [21]. 
Функції можна писати за допомогою кількох підтримуваних мов 
програмування. Можна взяти свою функцію та запустити її в будь-якому 
 
77 
стандартному середовищі виконання для однієї з підтримуваних мов, що 
спрощує як переносимість, так і локальне тестування [21]. 
Події, на які відкликаються функції – це події, які відбуваються у 
вашому хмарному середовищі. Це можуть бути зміни даних у базі даних, 
додавання файлів до системи зберігання або створення нового екземпляра 
віртуальної машини [21]. 
Події відбуваються незалежно від того, чи треба на них реагувати чи 
ні. Відповідь на подію створюється за допомогою тригера. Тригер — це 
оголошення про те, що є зацікавлення у певній події або наборі подій. 
Прив’язка функції до тригера дозволяє фіксувати події та діяти на них [21].  
Прикладом застосування таких функцій може бути ідентифікація 
картинок, які мають образливий зміст, та подальше її розмивання. 
Алгоритм такого прикладу представлено на рис. 4.3. 
 
 
 
Рис. 4.3. Варіант використання Cloud Functions 
 
Таким чином в даній структурній схемі за допомогою служби Cloud 
Functions буде написано функцію, яка буде переносити дані з XLS-файлу в 
CSV-файл для подальшої їх обробки в службі Cloud Data Fusion. 
Cloud Data Fusion 
Cloud Data Fusion — це повністю керована хмарна служба інтеграції 
корпоративних даних для швидкого створення та керування конвеєрами 
даних [22]. 
 
78 
Веб-інтерфейс Cloud Data Fusion дає змогу створювати масштабовані 
рішення для інтеграції даних для очищення, підготовки, змішування, 
передачі та трансформації даних без керування інфраструктурою [22]. 
Вона допомогає користувачам ефективно створювати та керувати 
конвеєрами даних ETL/ELT. Вона має намір змістити фокус з коду на 
розумінні та діях користувача. Створена на основі проекту CDAP з 
відкритим кодом, використовує зручний інтерфейс користувача для 
створення конвеєрів даних методом перетягування [22]. 
Cloud Data Fusion спрощує переміщення даних, зосереджуючись на 
двох основних напрямках: 
1. Будує конвеєр даних без написання будь-якого коду: оскільки 
Data Fusion побудовано на основі проекту CDAP з відкритим кодом, він 
уже містить понад 100 конекторів і постійно зростає. Тому побудова 
конвеєра між джерелом і приймачем вимагає лише кількох клацань миші 
[22]. 
2. Виконує перетворення без написання будь-якого коду: Data 
Fusion постачається з набором вбудованих перетворень, які можна легко 
застосувати до своїх даних [22]. 
На рис. 4.4 показано інтерфейс із конвеєром даних. Першим кроком є 
з’єднання з базою необроблених даних на сервері. Потім наступає етап 
обробки, який виконує певну трансформацію даних в CSV файлах. На 
останньому етапі дані надсилаються до двох приймачів: BigQuery для 
цілей аналітики та Cloud Storage для резервного копіювання даних. 
 
 
79 
 
Рис. 4.4. Інтерфейс з конвеєром даних в службі Data Fusion 
 
Трансформація даних в файлі CSV може бути різномантною в 
залежності від того, що саме потрібно аналітику для проведення аналізу. 
Наприклад, йому не потрібно використовувати дані з колонки «body», тож 
її можна видалити, як показано на рис. 4.5. 
 
 
Рис. 4.5. Видалення колонки в файлі в Cloud Data Fusion 
 
Також є можливість змінювати тип даних, наприклад, перетворювати 
цілі числа в числа з плаваючою точкою і навпаки. Такий приклад показано 
на рис. 4.6. 
 
80 
 
 
Рис. 4.6. Зміна типів даних в файлі в Cloud Data Fusion 
 
Отже, потокова обробка даних в цьому проекті завершується 
завантаженням оброблених даних в сховище під назвою Cloud Storage. 
 
4.2.2. Зберігання даних 
Оброблені дані будуть зберігатися в хмарному сховищі платформи 
GCP, яке маю назву Cloud Storage.  
Cloud Storage – це служба для зберігання ваших об’єктів у Google 
Cloud. Об'єкт - це незмінна частина даних, що складається з файлу будь-
якого формату. Об’єкти зберігаються в контейнерах, які називаються 
сегментами. Усі сегменти пов’язані з проектом, і можна згрупувати свої 
проекти за організацією [23]. 
Після створення проекту можна створювати сегменти Cloud Storage, 
завантажувати об’єкти в сегменти та з сегментів. Також можна керувати 
дозволами, щоб зробити дані доступними для окремих керівників або — 
для певних варіантів використання, наприклад розміщення веб-сайту — 
доступне для всіх у загальнодоступному Інтернеті [23]. 
Структура Cloud Storage зображена на рис. 4.7. 
 
81 
 
 
Рис. 4.7. Структура Cloud Storage 
 
В даній структурі Cloud Storage можна виділити такі терміни [23]: 
- Організація (Organization). Компанія під назвою Example Inc. 
створює організацію Google Cloud під назвою exampleinc.org. 
- Проект (Project): Example Inc. створює кілька програм, і кожна 
з них пов’язана з проектом. Кожен проект має власний набір API Cloud 
Storage, а також інші ресурси. 
- Сегмент (Bucket): кожен проект може містити кілька сегментів, 
які є контейнерами для зберігання об’єктів. Наприклад, можна створити 
сегмент фотографій для всіх файлів зображень, які створює програма, і 
окремий сегмент відео. 
- Об’єкт (Object): окремий файл, наприклад зображення 
exampleFile.png. 
Сегменти — це основні контейнери, у яких зберігаються дані [23]. 
Усе, що має зберігатися в Cloud Storage, має міститися у сегменті. Можна 
використовувати сегменти, щоб упорядковувати дані та контролювати 
доступ до них. Сегменти дуже схожі на папки чи каталоги в файловій 
системі, але, на відміну від каталогів і папок, не можна вкладати сегментив 
 
82 
інші сегменти. Приклад інтерфейсу сегменту в Cloud Storage приведено на 
рис. 4.8. 
 
 
Рис. 4.8. Інтерфейс сегменту в Cloud Storage 
 
4.2.3. Аналіз даних 
Для аналізу даних використовується сховище даних під назвою 
BigQuery.  
BigQuery — це повністю кероване корпоративне сховище даних, яке 
допомагає керувати даними й аналізувати їх за допомогою вбудованих 
функцій, таких як машинне навчання, геопросторовий аналіз і бізнес-
аналітика. Безсерверна архітектура BigQuery дозволяє використовувати 
запити мовою SQL, щоб відповідати на найбільші запитання організації 
без керування інфраструктурою. Масштабований механізм розподіленого 
аналізу BigQuery дозволяє робити запити на терабайти даних за секунди, а 
на петабайти даних за хвилини [24]. 
BigQuery максимізує гнучкість, відокремлюючи обчислювальний 
механізм, який аналізує дані, від варіантів зберігання. Можна зберігати та 
аналізувати свої дані в BigQuery або використовувати BigQuery для оцінки 
даних там, де вони знаходяться. Об’єднані запити дозволяють читати дані 
із зовнішніх джерел, а потокове передавання підтримує постійне 
оновлення даних. Такі потужні інструменти, як BigQuery ML і BI Engine, 
дозволяють аналізувати та розуміти ці дані [24]. 
 
83 
Розробники та дослідники обробки даних можуть використовувати 
клієнтські бібліотеки в різних мовах програмування, зокрема Python, Java, 
JavaScript і Go [24]. 
BigQuery зберігає дані за допомогою стовпчастого формату 
зберігання, оптимізованого для аналітичних запитів. BigQuery представляє 
дані в таблицях, рядках і стовпцях і забезпечує повну підтримку семантики 
транзакцій бази даних. Для забезпечення високої доступності сховище 
BigQuery автоматично реплікується в кількох місцях [24]. 
Використання описового та приписного аналізу включає бізнес-
аналітику, спеціальний аналіз, геопросторову аналітику та машинне 
навчання. Можна запитувати дані, що зберігаються в BigQuery, або 
запускати запити до даних, де вони знаходяться, використовуючи зовнішні 
таблиці або об’єднані запити, зокрема Cloud Storage. 
Інтерфейс роботи з наборами даних в BigQuery представлено на рис. 
4.9. Тут можна дізнатися які поля має та чи інша таблиця, якого вони типу 
та інші характеристики. Також можна переглянути вибірку даних з певної 
таблиці у вкладці «Preview». 
 
 
Рис. 4.9. Інтерфейс роботи з даними в BigQuery 
 
В BigQuery є можливість створювати інтерактивні запити до наборів 
даних, щоб відбирати ті дані, які потрібно проаналізувати. Для цього в 
інтерфейсі BigQuery потрібно натиснути на вкладку «Query», написати 
 
84 
запит мовою SQL і натиснути «Run». Приклад такого інтерактивного 
запиту наведено на рис. 4.10. 
 
 
Рис. 4.10. Інтерактивний запит в BigQuery 
 
4.3. Візуалізація даних в Looker 
Looker — це корпоративна платформа для бізнес-аналітики, програм 
даних і вбудованої аналітики. Looker допомагає досліджувати, ділитися та 
візуалізувати дані компанії, щоб мати можливість приймати кращі бізнес-
рішення [18]. 
Looker дозволяє експертам з даних у кожній організації описувати 
власні дані за допомогою легкої мови моделювання під назвою LookML. 
LookML повідомляє Looker, як запитувати дані, щоб кожен в організації 
міг створювати звіти та інформаційні панелі, які легко читати. 
Платформа Looker працює з транзакційними базами даних, такими як 
Oracle і MySQL, а також аналітичними сховищами даних, такими як 
BigQuery, Snowflake, Redshift тощо. Looker дозволяє швидко й точно 
створювати узгоджені моделі даних на основі всіх даних. Looker пропонує 
єдину поверхню для доступу до всіх даних організації [18]. 
 
85 
Looker підтримує розміщення в Google Cloud. Оскільки Looker не 
залежить від платформи, він підключається до даних у BigQuery, а також 
до інших публічних хмар. 
Взагалі щоб використовувати BigQuery, не потрібен Looker. Однак 
якщо варіант використання BigQuery включає бізнес-аналітику, програми 
обробки даних або вбудовану аналітику, потрібно використовувати саме 
Looker як постачальника таких послуг. 
Використовуючи Looker, є можливість створювати інформаційні 
панелі за допомогою яких легко ділитися інформацією з кінцевими 
користувачами та зацікавленими сторонами. Наприклад, можна створити 
інформаційну панель з загальними даними про компанію та її 
інформаційну статистику, як на рис. 4.11.  
 
 
Рис. 4.11. Інформаційна панель з загальними даними про компанію в 
Looker  
 
В Looker можна представити різні види даних за допомогою різних 
видів візуалізації таких як декартові діаграми (стовпчасті та горизонтальні 
діаграми, графіки, лінії тощо), кругові діаграми, текст та навіть винести 
дані на географічну карту. Прикладом може бути представлення 
 
86 
інформації про географічне положення клієнтів даної компанії, як 
зображено на рис. 4.12. 
 
 
Рис. 4.12. Інформаційна панель з картою клієнтів в Looker  
 
 
87 
 
ВИСНОВКИ 
 
Мета роботи – дослідження різноманітності комп’ютерних систем, а 
саме їх інструментів та методів для аналізу великих даних, а також 
системи їх зберігання. 
Для досягнення поставленої мети було вирішено наступні завдання: 
- проведено аналіз об’єкта дослідження, визначено тенденції 
розвитку систем обробки великих даних; 
- проведено дослідження сучасних методів обробки великих 
даних; 
- проаналізовано програмні засоби які використовуються для 
аналізу великих даних; 
- запропоновано удосконалення структури системи аналізу 
великих даних. 
В першому розділі було розглянуто поняття «великі дані». Описано 
характеристики та типи великих даних. Розглянуто процес обробки 
великих даних та типи їх аналітики. Проілюстровано і детально пояснено 
архітектуру великих даних. 
Наведено приклади використання великих даних в різних 
організаціях і сферах життя людини, та актуальність їх використання в 
світі, так як з кожним роком людство генерує все більше і більше 
інформації, яку потрібно зберігати, обробляти та аналізувати. 
В другому розділі було описано сучасні методи обробки великих 
даних. Було дано відповідь чому важливо вибрати коректний метод для 
обробки тих чи інших даних. Наведено реальний приклад використання 
різних методів обробки великих даних в популярному сервісі Spotify. 
В третьому розділі за проведеним оглядом і порівнянням різних мов 
програмування було вирішено що для роботи з великими даними 
найбільше підходить такий інструмент, як мова програмування Python. 
Оскільки вона має популярні бібліотеки для роботи з великими даними. Ця 
 
88 
мова є лідером у даній галузі, тому що за допомогою неї можна 
створювати як графічний інтерфейс, тобто візуалізувати результати аналізу 
даних в графіках, так і обробку самих даних на серверній частині 
програми. Також вона має зручний синтаксис для розуміння та 
підтримується великим та активним співтовариством. Щоб надійно і 
швидко керувати реляційними базами даних, формувати запити до них та 
оновлювати їх вміст, використовується мова структурованих запитів – 
SQL. 
В третьому розділі також було розглянуто сучасні сервіси для роботи 
з великими даними, такі як різні сервіси для керування обробкою великих 
даних Apache Software Foundation. Наведено приклади сучасних систем 
зберігання, запиту та візуалізації великих даних. 
В четвертому розділі було створено ідею проекту бізнес-аналітики 
компанії, що займається продажами. Ідея даного проекту полягає в тому, 
щоб мати можливість зробити працівнику-аналітику компанії правильні 
висновки щодо її роботи, полегшити аналіз даних, які генеруються 
компанією, та надати корисну і в доступному вигляді інформацію 
зацікавленим сторонам і споживачам, візуалізувавши потрібні дані за 
допомогою певного програмного забезпечення.  
Розроблено структурну схему програмного забезпечення, 
використовуючи як базовий інструмент комплекс хмарних служб 
платформи Google Cloud Platform. Описано кожен етап конвеєру обробки 
великих даних в проекті з наведеними на рисунках прикладами. 
 
 
 
89 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 
 
1. Jacobs A. The Pathologies of Big Data [Text] / Jacobs A. // 
Databases. – 2009. – Vol. 7, issue 6. – Р.1-12 
2. 9 Big Data Examples & Use Cases [Електронний ресурс]. - 
Режим доступу : https://www.mongodb.com/big-data-explained/examples 
3. What is Big Data? Introduction, Types, Characteristics, Examples 
[Електронний ресурс].  - Режим доступу :  https://www.guru99.com/what-is-
big-data.html  
4. What is Big Data? [Електронний ресурс]. - Режим доступу : 
https://www.oracle.com/big-data/what-is-big-data/#three  
5. What are the 5 V's of Big Data?  [Електронний ресурс]. - Режим 
доступу :  https://www.teradata.com/Glossary/What-are-the-5-V-s-of-Big-Data  
6. What Are the Key Characteristics of Big Data? [Електронний 
ресурс]. - Режим доступу : https://www.analytixlabs.co.in/blog/characteristics-
of-big-data  
7. The Four Types of Big Data Analytics and Their Benefits 
[Електронний ресурс]. - Режим доступу : https://bau.edu/blog/big-data-
analytics-types  
8. Data Ingestion, Processing and Big Data Architecture Layers  
[Електронний ресурс]. - Режим доступу : https://medium.com/digital-
transformation-and-platform-engineering/data-ingestion-processing-and-big-
data-architecture-layers-3cb4988c07de  
9. Data Lake vs Data Warehouse [Електронний ресурс]. - Режим 
доступу :  https://www.qlik.com/us/data-lake/data-lake-vs-data-warehouse  
10. 8 Types of Data Processing – A Comprehensive Guide 
[Електронний ресурс]. - Режим доступу : 
https://www.jigsawacademy.com/blogs/data-science/types-of-data-processing  
11. The 5 Types of Data Processing [Електронний ресурс]. - Режим 
доступу : https://www.integrate.io/blog/the-5-types-of-data-processing  
 
90 
12. 5 Different Types of Data Processing [Електронний ресурс]. - 
Режим доступу : https://www.loginworks.com/blogs/5-different-types-of-data-
processing  
13. Streaming analytics better than classic batch – when and why? 
[Електронний ресурс].  - Режим доступу :  https://medium.com/getindata-
blog/streaming-analytics-better-than-classic-batch-when-and-why-
9747c3b9841e 
14. Which languages should you learn for data science? [Електронний 
ресурс].  - Режим доступу :  https://www.freecodecamp.org/news/which-
languages-should-you-learn-for-data-science-e806ba55a81f  
15. Ben Laurie, Peter Laurie Apache: The Definitive Guide (3rd 
Edition), USA, 2002, ISBN: 978-0-596-00203-9, 536 pages 
16. Neha Narkhede, Gwen Shapira & Todd Palino Kafka: The 
Definitive Guide, USA, 2017, ISBN: 978-1-491-99065-0, 322 pages. 
17. Tom White Hadoop: The definitive Guide : Storage and Analysis at 
Internet Scale 4th Edition, USA, 2015, ISBN: 978-1-491-90163-2, 754 pages. 
18. Looker [Електронний ресурс]. - Режим доступу : 
https://www.looker.com  
19. Gerardus Blokdyk Google Cloud Platform A Complete Guide – 
2021 Edition, USA, 2021, ISBN: 978-1-867-46289-7, 218 pages. 
20. What is Pub/Sub? [Електронний ресурс].  - Режим доступу :  
https://cloud.google.com/pubsub/docs/overview  
21. Cloud Functions overview [Електронний ресурс]. - Режим 
доступу : https://cloud.google.com/functions/docs/concepts/overview  
22. What is Cloud Data Fusion? [Електронний ресурс]. - Режим 
доступу : https://cloud.google.com/data-fusion/docs/concepts/overview 
23. What is Cloud Storage? [Електронний ресурс]. - Режим доступу : 
https://cloud.google.com/storage/docs/introduction?hl=en  
24. What is BigQuery? [Електронний ресурс]. - Режим доступу : 
https://cloud.google.com/bigquery/docs/introduction