Jakiego JavaScript ORM powinieneś używać w 2018 roku?

autor: John Vandivier

Uwaga: maj 2018: Czytaj od TypeORM do LoopBack: Retrospektywa dla zaktualizowanej perspektywy!

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

w tym artykule omówiono rozwiązania mapowania Obiektowego (ORM) w ekosystemie JavaScript i zidentyfikowano idealne rozwiązanie w oparciu o określone wymagania.

co to jest ORM i dlaczego jest tak ważny?

rozwiązania ORM są przydatne do ułatwienia tworzenia API opartych na danych. Użytkownicy mają konkretne potrzeby, które napędzają model danych aplikacji. W starszych wersjach Architektura danych jest zwykle implementowana i kontrolowana za pomocą skryptów bazodanowych, takich jak skrypty SQL. Oddzielna Biblioteka jest następnie używana dla aplikacji serwerowej do wykonywania akcji CRUD na bazie danych.

ORMs działa jako API wysokiego poziomu do wykonywania CRUD, a w dzisiejszych czasach jakość ORMs pozwala nam również inicjalizować dane za pomocą kodu. Skomplikowana manipulacja danymi, czyszczenie itp. jest często łatwiejsza w kodzie. Chociaż istnieją dedykowane narzędzia do wyodrębniania, przekształcania i ładowania (ETL), te same zadania ETL można łatwo zaimplementować w ORM.

implementacja wyodrębniania, przekształcania i ładowania za pomocą kodu pozwala systemowi na łatwiejszą integrację danych z bardzo różnych źródeł. Bazy danych SQL o wielu smakach, dane NoSQL, dane systemu plików i dane stron trzecich mogą być zintegrowane w jednym języku za pomocą JavaScript ORM.

wreszcie, zorientowana na kod kontrola danych pozwala również systemowi zaimplementować wykorzystanie danych w czasie uruchamiania lub w procesie kompilacji i elastycznie dostosować użycie podczas procesu programowania w razie potrzeby.

w celu przywrócenia, ORMs zwiększa produktywność programistów, zapewniając interfejs API wysokiego poziomu, w jednym języku, z funkcjonalnością, która tradycyjnie wymagałaby kilku różnych narzędzi i zestawów umiejętności. Mniej potrzeb umiejętności, potrzeb narzędziowych i wymaganych godzin ułatwia marżę projektu. Nieprzewidziane wymagania i harmonogram projektu są lepiej przygotowane dzięki elastycznej konfiguracji danych w czasie kompilacji i uruchamiania.

preferowane możliwości ORM

konkretny kontekst projektu prowadzący do tego przeglądu ORM wymaga implementacji najnowocześniejszej, podobnej do CMS, uniwersalnej aplikacji JavaScript.

najnowocześniejsze uniwersalne frameworki JavaScript występują zasadniczo w 3 smakach: Angular, React i Vue. Czyli Angular Universal, Next i Nuxt.

Node natywnie obsługuje operacje na systemie plików, więc wymagania dotyczące Danych Systemu Zarządzania Treścią są preferowane dla szerokiego zakresu obsługi baz danych. W sumie rozważane są następujące wymagania:

  1. wsparcie dla Mongo i MySQL, z preferencją do obsługi dodatkowych opcji
  2. integracja z Webpack
  3. integracja z Express
  4. Minimalne uderzenie w wydajność w czasie działania
  5. intuicyjna składnia
  6. dodatkowe funkcje
  7. wysoki stosunek gwiazdek Github do emisji
  8. aktywnie utrzymywany bez awarii kompilacji lub przestarzałych zależności

kandydaci i wyniki

każdy kandydat otrzymał wynik od 0 do 10 za każdą preferowaną zdolność. Wynik 5 oznacza akceptowalny. Średnia dla kolumny może być większa lub mniejsza niż 5. Na przykład ORM z obsługą wielu baz danych NoSQL i bez obsługi żadnej bazy danych SQL otrzyma wynik między 2 a 4. 0 oznacza całkowity brak funkcji.

zobacz ten post lub ten arkusz Google, aby kliknąć hiperłącza lub skopiować dane jako tabelę.

specjalny okrzyk dla joi, pg i knex. Te biblioteki nie są pełne ORMs, ale są świetne w tym, co robią. Jeśli nie potrzebujesz pełnowymiarowego ORM, spójrz i zobacz, czy mogą zaspokoić Twoje potrzeby.

wnioski

sumy odzwierciedlają ogólną użyteczność każdego rozwiązania. 5 pierwszych wyników:

  1. Loopback
  2. Waterline
  3. Mongoose
  4. TypeORM
  5. Sequelize

połączenie specyficznych potrzeb projektu, pominiętych czynników i osobistych preferencji prowadzi do pierwszych 3 typów.

linia wodna jest mocno zintegrowana z ramą żagla, a Mangusta obsługuje tylko MongoDB.

Sequelize i NodeORM2 są ograniczone do SQL i nie generują API.

ze względu na składnię maszynopisu, TypeORM dobrze integruje się z projektem Angular.

jako programista polecam prototypowanie więcej niż jednego najlepszego rozwiązania, aby zidentyfikować prawdziwego zwycięzcę. 3 najlepsze rozwiązania, które są kandydatami do prototypowania, to:

  1. Loopback
  2. TypeORM
  3. Caminte

przekazałem te informacje innym programistom w projekcie i jako zespół zdecydowaliśmy się najpierw wypróbować TypeORM. Sprawdź później retrospektywę!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.