Який JavaScript ORM вам слід використовувати в 2018 році?

ПРИМІТКА: Травень 2018: Читання з TypeORM до LoopBack: Ретроспективадля оновленої перспективи!

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

У цій статті розглядаються рішення об’єктного реляційного картографування (ORM) в екосистемі JavaScript та визначається ідеальне рішення на основі конкретних вимог.

Що таке ORM і чому це так важливо?

Рішення ORM корисні для полегшення розробки API на основі даних. Користувачі мають конкретні потреби, які керують моделлю даних програми. У застарілій розробці ця архітектура даних зазвичай реалізується і контролюється версіями за допомогою сценаріїв баз даних, таких як сценарії SQL. Потім окрема бібліотека використовується для серверної програми для виконання дій CRUD над базою даних.

ORM працюють як API високого рівня для виконання CRUD, і в наші дні якісні ORM також дозволяють нам ініціалізувати дані за допомогою коду. Складні маніпуляції з даними, їх очищення і так далі часто простіші в коді. Поки існують спеціальні засоби вилучення, перетворення та завантаження (ETL), однакові завдання ETL можна легко реалізувати в ORM.

Реалізація вилучення, перетворення та завантаження коду дозволяє системі легше інтегрувати дані з самих різних джерел. Бази даних SQL із різними варіантами, дані NoSQL, дані файлової системи та сторонні дані можуть бути інтегровані однією мовою за допомогою ORM JavaScript.

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

Для переробки ORM покращують продуктивність розробників, надаючи API високого рівня однією мовою з функціоналом, який традиційно вимагає декількох різних інструментів та наборів навичок. Менше потреб у навичках, інструментах та необхідних годинах сприяє прибутковості проекту. Непередбачені вимоги та часові рамки проекту краще підготувати за допомогою гнучкої конфігурації даних про час побудови та виконання.

Бажані можливості ORM

Конкретний контекст проекту, що приводить до цього огляду ORM, вимагає впровадження передового універсального додатку JavaScript, схожого на CMS.

Універсальні фреймворки JavaScript мають, по суті, 3 варіанти: Angular, React та Vue. Тобто Angular Universal, Next і Nuxt.

Node спочатку підтримує операції з файловою системою, тому вимоги до системи управління вмістом мають перевагу для широкої підтримки баз даних. Загалом враховуються такі вимоги:

  1. Підтримка Mongo та MySQL, з перевагою підтримки додаткових опцій
  2. Інтегруйте з Webpack
  3. Інтегруйте з Express
  4. Мінімальний показник продуктивності під час роботи
  5. Інтуїтивний синтаксис
  6. Додаткові функції
  7. Високий коефіцієнт зірки Github до емісії
  8. Активно підтримується без помилок збірки та застарілих залежностей

Кандидати та результати

Кожен кандидат отримав оцінку від 0 до 10 за кожну бажану здатність. Оцінка 5 означає прийнятний. Середнє значення для стовпця може бути більше або менше 5. Наприклад, ORM з підтримкою декількох баз даних NoSQL і відсутністю підтримки для будь-якої бази даних SQL отримає оцінку від 2 до 4. 0 означає повну відсутність функції.

Спеціальний вигук для joi, pg та knex. Ці бібліотеки не є повними ORM, але вони чудово справляються з тим, що роблять. Якщо вам не потрібен повномасштабний ORM, подивіться і подивіться, чи зможуть вони задовольнити ваші потреби.

Висновок

Підсумки відображають загальну корисність кожного рішення. Топ-5 результатів:

  1. Петля
  2. Ватерлінія
  3. Мангуст
  4. ТипORM
  5. Секвелізувати

Комбінація конкретних потреб проекту, пропущених факторів та особистих переваг призводить до 3 найкращих варіантів.

Ватерлінія сильно інтегрована у фреймворк Sails, і Mongoose підтримує лише MongoDB.

Sequelize та NodeORM2 обмежені SQL, і їм не вистачає генерації API.

Завдяки синтаксису TypeScript, TypeORM чудово інтегрується з проектом Angular.

Як розробник, я рекомендую прототипувати більше одного найкращого рішення, щоб визначити справжнього переможця. До 3 найкращих рішень, котрі всі є кандидатами на прототипування, належать:

  1. Петля
  2. ТипORM
  3. Камінте

Я передав цю інформацію іншим розробникам проекту, і ми як команда вирішили спробувати спершу TypeORM. Перевірте пізніше на ретроспективу!

Що ви думаєте про цей результат? Залиште коментар або внесіть свої думки до цього порівняння Slant.