By John Vandivier
注:2018年5月:TypeORMからLoopBackへの読み取り:更新された視点のための回顧!
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
この記事では、JavaScriptエコシステムのオブジェクトリレーショナルマッピング(ORM)ソリューションをレビューし、特定の要件に基づいて理想的なソリORMとは何ですか、なぜそれが重要なのですか?
ORMソリューションは、データ駆動型API開発を容易にするのに便利です。 ユーザーは、アプリケーションのデータモデルを駆動する具体的なニーズを持っています。 従来の開発では、このデータアーキテクチャは通常、SQLスクリプトなどのデータベーススクリプトを使用して実装され、バージョン管理されます。 その後、サーバーアプリケーションがデータベース上でCRUDアクションを実行するために別のライブラOrmはCRUDを実行するための高レベルのAPIとして機能し、最近では品質のOrmを使用してコードを介してデータを初期化することもできます。 複雑なデータ操作、クリーニングなどは、多くの場合、コードで簡単です。 専用の抽出、変換、およびロード(ETL)ツールが存在しますが、同じETLタスクをORMで簡単に実装できます。
コードを使用して抽出、変換、およびロードを実装すると、システムは非常に異なるソースからのデータをより簡単に統合できます。 複数のフレーバーのSQLデータベース、NoSQLデータ、ファイルシステムデータ、およびサードパーティのデータはすべて、JavaScript ORMを使用して単一の言語で統合できます。
最後に、コード指向のデータ制御により、システムは実行時またはビルドプロセスでデータ使用を実装し、必要に応じて開発プロセス中に使用を柔軟に
言い換えると、Ormは、伝統的にいくつかの異なるツールやスキルセットを必要とする機能を備えた、単一の言語で高レベルのAPIを提供することによ 必要な技術の必要性、用具の必要性および時間はプロジェクトの差益を促進する。 予期せぬ要件とプロジェクトタイムラインは、柔軟なビルドと実行時のデータ構成により、より適切に準備されます。
優先ORM機能
このORMレビューにつながる特定のプロジェクトコンテキストには、最先端のCMSのような普遍的なJavaScriptアプリケーションの実装が必
最先端の汎用JavaScriptフレームワークには、Angular、React、Vueの3つのフレーバーがあります。 つまり、Angular Universal、Next、およびNuxtです。
ノードはファイルシステム操作をネイティブにサポートしているため、コンテンツ管理システムのデータ要件は、幅広いデータベースサポート 合計で、以下の要件が考慮されます:
- MongoとMySQLのサポート、追加オプションのサポートを優先して
- Webpackとの統合
- Expressとの統合
- 実行時のパフォーマンスへの最小限のヒット
- 直感的な構文
- 余分な機能
- 高いGithubスター対発行率
- 積極的にビルド失敗や非推奨の依存関係なしで維持
候補と結果
各候補者は、優先能力ごとに0から10の間のスコアを受け取りました。 5のスコアは許容可能なことを意味します。 列の平均は、5以上または5未満である可能性があります。 たとえば、複数のNoSQLデータベースをサポートし、SQLデータベースをサポートしていないORMは、2から4のスコアを受け取ります。 0は、機能の完全な欠如を示します。この投稿またはこのGoogleシートを表示してハイパーリンクをクリックするか、データをテーブルとしてコピーします。joi、pg、knexへの特別なシャウトアウト。 これらのライブラリは完全なOrmではありませんが、彼らは彼らが何をすべきかに優れています。 あなたが本格的なORMを必要としない場合は、見て、彼らはあなたの必要性に対処することができるかどうかを確認してください。
結論
合計は、各ソリューションの全体的な有用性を反映しています。 トップ5の結果は次のとおりです。
- Loopback
- Waterline
- Mongoose
- TypeORM
- Sequelize
プロジェクト固有のニーズ、省略された要因、および個人的な好みの組み合わせがトップ3
Waterlineはsailsフレームワークに大きく統合されており、MongooseはMongoDBのみをサポートしています。SequelizeとNodeorm2はSQLに制限されており、API生成がありません。TypeScript構文のため、TypeORMはAngularプロジェクトとうまく統合されています。
開発者として、真の勝者を特定するために、複数のトップソリューションをプロトタイピングすることをお勧めします。 私はこの情報をプロジェクトの他の開発者に提出し、チームとしてTypeORMを最初に試してみることにしました。 レトロスペクティブのために後で戻ってチェック!