írta: John Vandivier
megjegyzés: 2018. május: olvassa el a TypeORM-tól a LoopBack-ig: retrospektív egy frissített perspektívához!
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Ez a cikk áttekinti az object Relational Mapping (ORM) megoldásokat a JavaScript ökoszisztémában, és konkrét követelményeken alapuló ideális megoldást határoz meg.
mi az ORM és miért olyan fontos?
az ORM megoldások hasznosak az adatvezérelt API-fejlesztés megkönnyítésére. A felhasználóknak konkrét igényeik vannak, amelyek az alkalmazás adatmodelljét vezérlik. A régi fejlesztés során ezt az adatarchitektúrát általában adatbázis-szkriptek, például SQL szkriptek segítségével hajtják végre és vezérlik. Ezután egy külön könyvtárat használnak a szerveralkalmazáshoz, hogy végrehajtsák a CRUD műveleteket az adatbázisban.
az ORMs magas szintű API-ként működik a CRUD végrehajtására, és manapság a minőségi ORMs lehetővé teszi az adatok inicializálását kódon keresztül. A komplex adatmanipuláció, tisztítás stb. gyakran könnyebb a kódban. Bár léteznek dedikált Extract, Transform and Load (ETL) eszközök, ugyanazok az ETL feladatok könnyen megvalósíthatók az ORM-ben.
az extract, transform és load kóddal történő implementálása lehetővé teszi a rendszer számára, hogy könnyebben integrálja a nagyon különböző forrásokból származó adatokat. SQL adatbázisok több ízek, NoSQL adatok, fájlrendszer adatok, és a harmadik féltől származó adatok mind integrálható egyetlen nyelv alatt a JavaScript ORM.
végül, a kódorientált adatvezérlés lehetővé teszi a rendszer számára az adatfelhasználás végrehajtását futási időben vagy az építési folyamatban, és szükség szerint rugalmasan adaptálja a felhasználást a fejlesztési folyamat során.
az ORMs a fejlesztők termelékenységének javítása érdekében magas szintű API-t biztosít egyetlen nyelven, olyan funkcionalitással, amely hagyományosan több különböző eszközt és készséget igényel. Kevesebb készségigény, szerszámigény és szükséges óra megkönnyíti a projekt margóját. Az előre nem látható követelmények és a projekt ütemterve rugalmasan elkészíthető és futtatható adatkonfigurációval jobban előkészíthető.
előnyben részesített ORM képességek
az ORM felülvizsgálatához vezető konkrét projektkörnyezet egy élvonalbeli, CMS-szerű, univerzális JavaScript alkalmazás megvalósítását igényli.
az élvonalbeli univerzális JavaScript keretrendszerek lényegében 3 ízűek: Angular, React és Vue. Ez azt jelenti, hogy az Angular Universal, a Next és a Nuxt.
Node natívan támogatja a fájlrendszer működését, így a tartalomkezelő rendszer adatkövetelményei a széles körű adatbázis-támogatás előnyben részesítését jelentik. Összességében a következő követelményeket veszik figyelembe:
- támogatja a Mongo és a MySQL, előnyben részesítve a támogatást a További lehetőségek
- integrálni Webpack
- integrálni Express
- minimális hit a teljesítmény futási idő
- intuitív szintaxis
- Extra funkciók
- magas Github csillag kérdés Arány
- aktívan karbantartott nem épít hibák vagy elavult függőségek
A jelöltek és eredmények
minden jelölt 0 és 10 közötti pontszámot kapott minden előnyben részesített képességért. Az 5-ös pontszám elfogadható. Az oszlop átlaga több vagy kevesebb lehet, mint 5. Például egy olyan ORM, amely több NoSQL adatbázist támogat, és egyetlen SQL adatbázist sem támogat, 2 és 4 közötti pontszámot kap. A 0 a funkció teljes hiányát jelzi.
különleges kiáltás joi, pg és knex számára. Ezek a könyvtárak nem teljes ORMs, de ők nagy, amit csinálnak. Ha nincs szüksége egy teljes fújt ORMRA, nézze meg, hogy képesek-e kielégíteni az Ön igényeit.
következtetés
az összegek tükrözik az egyes megoldások általános hasznosságát. A top 5 eredmények a következők voltak:
- Loopback
- Waterline
- Mongoose
- TypeORM
- Folytatás
a projektspecifikus igények, a kihagyott tényezők és a személyes preferenciák kombinációja a legjobb 3 választáshoz vezet.
a Waterline erősen integrálva van a Sails keretrendszerbe, és a Mongoose csak a MongoDB-t támogatja.
a Sequelize és a NodeORM2 az SQL-re korlátozódik, és hiányzik belőlük az API-generáció.
a TypeScript szintaxis miatt a TypeORM szépen integrálódik egy Angular projektbe.
fejlesztőként azt javaslom, hogy egynél több top megoldást készítsen a valódi győztes azonosítására. A top 3 megoldások, amelyek mind prototípus jelöltek, a következők:
- Loopback
- TypeORM
- Caminte
elküldtem ezt az információt a projekt többi fejlesztőjének, és csapatként úgy döntöttünk, hogy először kipróbáljuk a TypeORM-ot. Nézz vissza később a retrospektív!