АНАЛИЗ РАЗЛИЧНЫХ ORM ДЛЯ NODE.JS В РАМКАХ СОЗДАНИЯ СЕРВИСА УЧЁТА ДОСТИЖЕНИЙ СТУДЕНТОВ



Объект исследования: опулярные ORM-библиотеки для платформы Node.js.

Результаты, полученные лично автором: предложена методика выбора ORM для платформы Node.js.

 

ORM (Object-relational mapping) – это технология, позволяющая отображать сущности информационной системы как из базы данных, так и в обратном направлении. Эта технология существенно облегчает работу с базами данных, избавляя программиста от необходимости вручную писать все требуемые запросы к базе.

В реализацию моего дипломного проекта входит сервис учёта достижений студентов, работающий в среде кафедральной информационной системы на базе связующего программного обеспечения. Для реализации была выбрана платформа Node.js. Соответственно, под рассмотрение попали самые популярные ORM-библиотеки для Node.js: Sequelize.js, Bookshelf.js, ORM2.

Сравнение производится по нескольким критериям, а именно: читаемость кода, безопасность, скорость исполнения операций, размер сообщества, то есть, популярность. В качестве оценок использована система баллов, при которой лучшая из ORM получает 3 балла по критерию, средняя – 2, наименее соответствующая критерию – 1 балл. Считается, что все критерии являются в равной степени значимыми. По сумме баллов определяется конечный выбор.

Читаемость кода. Для примера сравнения кода использованы операции создания подключения к СУБД и стандартные CRUD-операции (Create, Read, Update, Delete) с сущностью, в данном случае, конференции.

В Sequelize.js подключение к СУБД осуществляется одной строкой кода с указанием строки подключения. Создание сущности происходит путём вызова метода define, в который передаётся JavaScript-объект, с парами «имя свойства – тип данных». Операции создания, чтения, модификации и удаления исполняются при помощи механизма promise’ов: вначале вызывается метод синхронизации с БД или поиска нужного набор данных, а при успешном его завершении запускается promise, в котором, в свою очередь, вызывается соответствующий CRUD-метод.

В Bookshelf.js для инициализации подключения необходимо отдельно передать объект с полями адреса хоста, имен базы данных, пользователя и пароля. Согласно синтаксису, для CRUD-операций необходимо каждый раз создавать новый объект и к нему применять соответствующий метод. Это может ввести в заблуждение при чтении кода.

ORM2 поддерживает подключение с помощью одной строки. Создание сущности происходит аналогично таковому в Sequelize.js, а CRUD-операции происходят через вызов метода у ранее определённого экземпляра сущности. Таким образом, по критерию читаемости кода распределение баллов можно распределить так: Sequelize.js – 3 балла, ORM2 – 2 балла, Bookshelf.js – 1 балл.

Безопасность. Для ORM безопасность является также важным свойством, так как синхронизация с СУБД – это тонкое место в процессе взаимодействия приложения с базой данных.

Sequelize.js позиционируется как основанная на promise’ах ORM. Это значит, что для всех операций обращения к СУБД будет произведён контроль их успешного или, наоборот, неуспешного завершения. Bookshelf,js применяет механизм promise’ов не во всех случаях, в ORM2 же этот механизм отсутствует вовсе, все действия выполняются посредством простой передачи анонимной функции в метод соответствующей операции. То есть, Sequelize.js получает 3 балла, Bookshelf.js – 2 и ORM2 – 1 балл.

Скорость работы. Для определения результатов по этому критерию несколько 500 раз были произведены CRUD-операции различных сущностей и синхронизация с СУБД MySQL. Время засекалось с помощью методов console для работы со временем. Позднее было посчитано среднее значение для каждой из ORM. Результаты приведены в табл. 1.

Таблица 3

Результаты испытания на скорость работы

ORM Время выполнения (мс)
Sequelize.js 18
Bookshelf.js 21
ORM2 16

 

Таким образом, ORM2 – 3 балл, Sequelize.js – 2 балла, Bookshelf.js – 1 балл.

Популярность. Популярность библиотеки определяется количеством установок через менеджер пакетов NPM и количеством успоминаний на GitHub. По данным npmjs.org, Sequelize.js имеет более 320 тысяч установок за прошедший месяц и более 800 упоминаний. Bookshelf.js: более 80 тысяч установок и 412 упоминаний, ORM2 – более 5 тысяч установок и 203 упоминания. Таком образом, 3 балла за популярность у Sequelize.js, 2 – у Bookshelf.js и 1 у ORM2.

Сложив баллы, получим, что выгоднее всего использовать Sequelize.js (11 баллов). На втором месте – ORM2 (7 баллов), на третьем – Bookshelf.js (6 баллов).

Материал поступил в редколлегию 28.04.2017

 

УДК 331.56

Г.В. Праскура

Научный руководитель: доцент кафедры «Информатика и программное обеспечение», к.т.н., Д.В. Титарёв

gregorypraskura@hotmail.com

 


Дата добавления: 2018-10-27; просмотров: 195; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!