Іванов Євгеній

Науковий керівник: канд. техн. наук, доцент Баранюк О.Ф.

Кіровоградський державний педагогічний університет імені Володимира Винниченка

Анотація: В статті розглядається принцип побудови серверної частини віртуального музею з в використанням Node.js та MongoDB.

Ключові слова: віртуальний музей, сервер, Node.js, MongoDB, фреймворк.

Актуальність теми. Освітня система України, як і більшості інших країн світу, в якості одного з інструментів часто використовує музеї. Відвідання реальних музеїв вимагає достатньо багато часу, і потребує узгодження з навчальним процесом. Віртуальний музей усуває дану проблему, для його відвідання достатньо лише декількох хвилин, і це можна легко зробити під час заняття. Також за допомогою віртуального музею вирішуються проблеми зберігання та безпеки експонатів. Віртуальні музеї відносяться до клієнт-серверних систем з високим навантаженням на сервер, потужним трафіком, об’ємними документами. Від таких систем очікують швидкої реакції на запити клієнта, потужної фільтрації експонатів та одночасної обробки багатьох з’єднань. Від швидкості реакції системи напряму залежить задоволення користувача та популярність музею. Пошук веб-технології, спроможної надати кращий функціонал серверної частини віртуального музею є актуальним та доцільним.

Мета роботи. Метою дослідження є розробка серверної частини віртуального музею. Для досягнення мети необхідно вирішити наступні завдання:

  • обґрунтувати вибір веб-технології для створення серверу;
  • спроектувати базу даних для віртуального музею;
  • розробити серверну частину віртуального музею.

Аналіз сучасних веб-технологій показав, що для побудови серверної частини музею підходить платформа Node.js. Node.js — це JavaScript-оточення побудоване на JavaScript-рушієві Chrome V8. Node.js використовує подієву, неблокуючу I/O модель, що робить його легким та ефективним [1].

Прийнята в Node.js модель принципово відрізняється від поширених платформ для побудови серверів, в яких масштабованість досягається за рахунок багатопотоковості. Завдяки подійно-орієнтованій архітектурі знижується споживання пам'яті, підвищується пропускна здатність [2, с.16].

У Node.js при старті створюється єдиний програмний потік. Node.js виконується в цьому потоці. Це означає, що дві або більше частини додатка одночасно не можуть виконуватися [3]. Можливість “одночасного” виконання коду надається за допомогою використання асинхронної моделі, побудованої на черзі подій (event-loop) та реалізованої за допомогою бібліотеки libuv. Перед libuv в Node.js використовувалася бібліотека libev, яка не підтримувала Microsoft IOCP (порт завершення вводу/виводу). Libuv – це написана на Сі бібліотека, яка може бути скомпільована на більшості операційних систем і навіть на Android. В першу чергу призначена для використання в Node.js, але також широко використовується іншими програмними пакетами.

У результаті використання бібліотеки libuv знижується ймовірність блокування процесу операціями вводу-виводу, оскільки пов'язані з вводом-виводом затримки не призводять до відмови сервера або до споживанню ресурсів навіть за наявності блокування. Завдяки цьому виключається необхідність у створенні серверів з надлишковою обчислювальною потужністю, необхідною для виконання ресурсоємких операцій.

Фреймворк. Фреймворк – це інструмент без якого важко обійтися при створенні веб-додатку. Це певний каркас, який надає необхідні програмні компоненти, в результаті розробнику не потрібно зосереджуватися на рутинній роботі, приділивши всю увагу унікальним для додатка речам та його функціональності. Найпопулярніші з фреймворків для програмної платформи Node.js: Express, Koa.js, Sails.js.

Виходячи із здійсненого у таблиці 1 порівняння, для розробки серверної частини віртуального музею був обраний фреймворк Express.

Таблиця 1

Порівняння популярних фреймворків для Node.js

Характеристики

Express

Sails.js

Koa.js

Коли створений

Грудень, 
2010 рік

Січень, 
2013 рік

Листопад, 
2013 рік

Кількість версій

243

121

49

Кількість завантажень за місяць

6,185,053

60,912

115,862

На якому фреймворку побудований

Sinatra

Ruby on Rails

Express

Обмеження на використання ORM

+

Підтримка модулів

Найкраща

Середня

Підтримує майже всі модулі Express

Express це мінімалістичний і гнучкий фреймворк для веб-додатків Node.js, який забезпечує широкий набір можливостей для мобільних і веб-додатків. Являє собою тонкий шар основних особливостей веб-додатків, не обмежуючи можливості Node.js [4].

База даних. Сьогодні є технології баз даних для найрізноманітніших випадків – традиційні сховища на основі SQL, документо-орієнтовані бази даних без використання SQL, прості сховища ключів і значень.

Вибір відповідного механізму зберігання даних залежить від п'яти чинників: які дані зберігаються; наскільки швидко дані потрібно зчитувати і записувати для досягнення прийнятної продуктивності; який обсяг наявних даних; як дані повинні запитуватися; які вимоги до надійності і терміну зберігання даних.

Була обрана база даних MongoDB за наступними причинами:

  • концепція розроблювальної системи передбачає роботу з неструктурованими даними;
  • не має сильної зв’язності між колекціями;
  • не потребує високої надійності збереження даних.

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

image002

Рис. 1. Діаграма розгортання серверу та бази даних

Загальна архітектура веб-сайту. В основі розроблювальної системи лежить клієнт-серверна архітектура. Клієнт робить запит до сервера на виконання певних дій або представлення деякої інформації, сервер отримує запит, виконує його та відправляє відповідь.

Серверна частина віртуального музею для обробки запитів повинна мати три основні компоненти, які будуть відповідати за: обробку запиту, перед обробку надісланих даних та обробку маршруту. У компоненті, відповідальному за обробку запиту, створюється об’єкт даного запиту та передається до компоненту відповідального за обробку надісланих даних, після чого екземпляр, створений для обробки запиту, звільняється.

Функції які відповідають проміжну обробку надісланих даних, у фреймворку ”Express”, називаються “middleware”. Вони об’єднуються в ланцюжки та після виконання всіх “middleware” певного ланцюжка, управління передається до компоненту, відповідального за обробку маршруту. Звільнення екземпляру обробки запитів та подальше передання управління до компоненту, відповідального за обробку маршруту, виконується за допомогою функції зворотного виклику.

Висновки. Побудова серверної частини віртуального музею за допомогою програмної платформи Node.js та використання документо-орієнтованої бази даних MongoDB дає можливість створювати швидкісні додатки, орієнтовані на велике число одночасних з’єднань, вимагаючи при цьому невелику кількість оперативної пам’яті.

У досліджені розглянуто принципи, за якими працює програмна платформа Node.js, здійснено аналіз основних технологій веб-розробки та принципів їх роботи, обґрунтовано набір технологій, придатних для використання разом із програмною платформою Node.js. Результатом проведеного дослідження є спроектована база даних та розроблена серверна частина віртуального музею історії техніки Кіровоградського державного педагогічного університету іменні Володимира Винниченка.

Список літератури:

  1. Node.js [Електронний ресурс] / Node.js Foundation. – Режим доступу до ресурсу: https://nodejs.org/uk.
  2. Хэррон Д. Node.js. Разработка серверных веб-приложений в JavaScript / Д.Хэррон: пер. с англ. Слинкина А.А. – Москва: ДМК Пресс, 2012. – 144с.
  3. Widman J. Overview of Blocking vs Non-Blocking [Електронний ресурс] / J. Widman. – Режим доступу до ресурсу: https://github.com/nodejs/node/blob/ master/doc/topics/blocking-vs-non-blocking.md.
  4. Express. Швидкий, гнучкий, мінімалістичний фреймворк для веб-застосунків, побудованих на Node.js [Електронний ресурс] / StrongLoop, Inc., and others. – Режим доступу до ресурсу: http://expressjs.com/ru.

Відомості про авторів:

Іванов Євгеній Ігорович – студент VI курсу фізико-математичного факультету Кіровоградського державного педагогічного університету імені Володимира Винниченка.