私は新しいアプリを作成し、その構造を設計しています。mongooseを使用する理由と使用しない理由について、以下に考えます。
- マングースは遅くなります(大きなアプリの場合)
- より複雑なクエリでは、マングースはより難しくなります
- より高速にしたい状況で、マングースなしで実行することを選択すると、マングースでクエリが半分になり、半分がw / oになります。それはクレイジーな状況でした。
- Mongooseは、シンプルなDB構造を持つシンプルなアプリでコードを高速化します
- Mongooseを使用すると、mongodbドキュメントとmongooseドキュメントを読むことができます
- mongooseを使用すると、スタックに依存するものが1つ増え、クラッシュして灰に焼かれる可能性が1つ増えます。
mongodbドライバーはrawドライバーで、mongodbと直接通信します。マングースは抽象化レイヤーです。db構造が十分にシンプルである一方で、dbへのI / Oが容易になります。
抽象化はそれの要件をもたらし、あなたはそれらに従う必要があります。アプリは遅くなり、より多くのRAMを消費し、より複雑になりますが、それを使用する方法を知っている場合は、単純なオブジェクトをより速く記述し、それらをデータベースに保存できます。
mongooseを使用しない場合、mongodbに直接接続して、より高速なアプリケーションを使用できます。自分でモデルを作成してデータをdbに保存することはできないと言う人は誰もいません。あなたはできる。そして私はそれが簡単だと思います。あなたはあなたが使うコードを書いて、あなたはあなたが何が必要かを知っています。あなたの抽象化層はマングースのものよりもずっと小さくなります。
私はPHPの世界から来ています。そこには、mysql_関数が廃止された生のSQLがあり、SQLと通信するためのオブジェクト指向の抽象化レイヤーであるPDOがありました。あるいは、Doctrineのような重いORMを選択して、mongoDB上のmongooseに似たものを持つことができます。setter / getters / saveメソッドなどを持つオブジェクト。それは問題ありませんが、抽象化を追加することで、ファイル、ロジック、ドキュメント、依存関係を追加できます。私はものをシンプルに保ち、スタック内の依存関係を減らしたいと思っています。ところで、そもそもPHPからサーバークライアントのJavascriptに移行したのはそのためです。
mongooseでは、sqlに似た単純なdb構造を持ついくつかの単純なアプリを書くのは素晴らしいと思います。サブドキュメントを作成し始めて、それらすべてのクレイジーなクエリを作成したいとき、マングースでは本当に難しいと思いました。mongodb docsを見て、次にmongoose docsを見て、必要なクエリを作成する方法を見つける必要があります。mongodbのXの未来がマングースではないことが時々あります。そのため、生のmongodbドライバーに行き、生のmongodbクエリをどこかで書きます。mongooseがなければ、mongodb docsを見てクエリを実行します。