これは大きな問題であり、はいかいいえの答えではありませんが、Webアプリを開発しており、永続化ソリューションにMongoDBを使用することを検討しています。オブジェクトストレージのためにMongoDBとNoRMを組み合わせる。
SQLからmongoへの切り替えで経験した落とし穴は何ですか? mongoが単に適切なソリューションではなく、mongodbの利点が開発をSQLから移行するのに十分なのはいつですか?
私の意見では、データのフォーマットは、ストレージバックエンドを選択する際の主要な関心事であるはずです。本質的にリレーショナルなデータはありますか?もしそうなら、それは可能ですか?ドキュメントのデータをモデル化することは良い考えですか?データモデリングは、リレーショナルデータベースと同様にドキュメントデータベースでも重要です。オブジェクトのタイプはいくつありますか、またそれらはどのように関連していますか? MongodbのDBrefsがそのトリックを実行できますか、それとも痛みを伴うほどに外部キーを逃しますか?データへのアクセスパターンは何ですか?フィールド値でフィルタリングされた1つのタイプのデータをフェッチするだけですか、それとも複雑なフェッチモードがありますか?
ACIDトランザクションの整合性が必要ですか?ドメインはデータに多くの制約を課していますか?ドキュメントデータベースのスケーラビリティファクターが必要ですか、それとも単なる "クール"なものでしょうか。
整合性とデータ整合性の要件は何ですか?一部のNoSQLソリューション、特にMongoDBでは、パフォーマンスを得るために、書き込みの一貫性がかなり緩くなっています。 NoSQLは、画一的なランドスケープやその他の製品ではありません。 CouchDBにはこの部門の他の特徴があります。調整可能なものもあります。
これらはすべて、ストレージの選択に関する質問です。
いくつかの経験
短所
長所
私は数日それをいじり続けています。これは私がそれについて言えることです:
ために:
に対して:
チュートリアルから欠落していることに気付いた1つのこと:オブジェクト内でリストを初期化します。そうしないと、.save(yourobj)を試行中にエラーがスローされます。最も安全な方法は、クラス内にコンストラクターを記述して、オブジェクト内にNULLオブジェクトがないことを確認することです。これにより、何かを忘れてもエラーになりません。
マイレージは異なる場合がありますが、これは、複数の「テーブル行」(MongoDBの非階層フラットドキュメント)の更新速度を比較するためにまとめた簡単なグラフです。私たちのアプリケーション。
この Getting Started with NoSQL には、NoSQLデータベース(MongoDBを含む)を使用する場合の長所と短所がいくつかあります。簡単な要約は次のようになります:異なるデータモデル(オブジェクトモデルから「この新しいモデル」へのマッピングが必要かどうかを考え、うまく機能します)、異なるクエリモデル(MongoDBクエリは他のものと比較するとかなり可能です) 、トランザクションなし(ただし、いくつかのアトミック操作があります)。
とにかく、私の観点から最も重要な変更は、データモデルと、この新しいアプローチでアプリを設計する方法です。
AWSのAtlasクラウドで実行されているMongoDBを何ヶ月も使用してきましたが、2つの大きなメリットが際立っています。