sql >> データベース >  >> NoSQL >> MongoDB

SQLサーバーからMongoDBに移行する理由と反対の理由

    私の意見では、ストレージバックエンドを選択する際には、データの形式が主な関心事になるはずです。本質的にリレーショナルなデータがありますか?もしそうなら、それは可能であり、ドキュメント内のデータをモデル化することは良い考えですか?データモデリングは、リレーショナルデータベースと同様にドキュメントデータベースでも重要ですが、それは異なる方法で行われます。何種類のオブジェクトがあり、それらはどのように関連していますか? MongodbのDBrefはそのトリックを実行できますか、それとも外部キーを見逃してしまうので苦痛になりますか?データへのアクセスパターンは何ですか?フィールド値でフィルタリングされた1つのタイプのデータをフェッチするだけですか、それとも複雑なフェッチモードがありますか?

    ACIDトランザクションの整合性が必要ですか?ドメインはデータに多くの制約を課していますか?ドキュメントデータベースのスケーラビリティ係数が必要ですか、それとも単に「クール」なものですか?

    一貫性とデータ整合性の要件は何ですか?一部のNoSQLソリューションと特にMongoDBは、パフォーマンスを得るために書き込みの一貫性がかなり緩いです。 NoSQLは、統一されたランドスケープやその他の製品ではありません。 CouchDBには、この部門に他の特徴があります。一部は調整可能です。

    これらはすべて、ストレージの選択に入る必要がある質問です。

    いくつかの経験

    • MongoDBまたは任意のドキュメントデータベースを使用している場合、保存されているデータについて詳細なレポートを作成するのは難しい場合があり、その目的でRDBMSとdocument-dbを組み合わせているユースケースもあります。
    • (非常に)異なるクエリモデル。 MongoDBは、他のドキュメントDBとも異なります。
    • 開発中にデータ形式/スキーマを柔軟に変更できます
    • 不明な地域
    • ドライバーとフレームワークの成熟度はさまざまです
    • 高速
    • (多くのRDBMS製品と比較して)よりシンプルな(多くの点で)製品および管理ツール
    • インピーダンスの不一致はもうありません。ストレージはデータに適合しますが、その逆ではありません。
    • 摩擦が少なく、データに直接アクセスできます。
    • ドメインは永続性により密接に関連しています(NoRMのORM「レベル」、バックエンドをどれだけ抽象化するかによって異なります。私はNoRMを使用していないため、それに答えることができません。)


    1. 特定のタイプの限られた数のレコードを返しますが、他のレコードの数は無制限ですか?

    2. MongodbPHP-小数の整数

    3. MongoDB findAndModify()

    4. 複数のフィールドでの並べ替えmongoDB