АНАЛИЗ РАЗЛИЧНЫХ 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!