Docs Menu
Docs Home
/
MongoDBマニュアル
/

データの整合性

項目一覧

  • ユースケース
  • タスク
  • 詳細
  • データの古さ
  • 参照整合性
  • 詳細

MongoDB は、アプリケーションを最適化するためにデータを正規化または複製する柔軟性を提供します。 スキーマ内でデータを重複させる場合、複数のコレクション間で重複したデータの整合性を保つ方法を決定する必要があります。 一部のアプリケーションでは重複したデータをすぐに整合性を持たせる必要がありますが、他のアプリケーションは古いデータの読み取りを許容できます。

アプリケーションでデータの整合性を強制するには、複数の方法があります。

方式
説明
パフォーマンスへの影響
ユースケース

トランザクション

複数のコレクションの更新は 1 つのアトミック操作で行われます。

読み取り競合による可能性が高い

アプリケーションは常に最新のデータを返す必要があり、読み取りが集中している期間中にパフォーマンスに悪影響が及ぶ可能性があります。

アプリケーション スキーマを変更して、関連データを 1 つのコレクションに埋め込みます。

ドキュメントのサイズとインデックスに応じて低から中程度

Atlas データベーストリガー

1 つのコレクションで更新が発生すると、trigger は別のコレクションを自動的に更新します。

低から中程度で、trigger イベントの処理が遅れる可能性があります

アプリケーションは、少し古いデータの読み取りを許容できます。 更新の直後に、trigger が 2 番目のコレクションの更新を完了する前にクエリを実行すると、ユーザーには古いデータが表示される可能性があります。

データの整合性を強制する最良の方法は、アプリケーションによって異なります。 各アプローチのメリットと実装の詳細については、対応するドキュメント ページを参照してください。

アプリケーションでデータの整合性を強制するには、次のページを参照してください。

次の要因は、データ整合性を強制する方法に影響する可能性があります。

アプリケーションが最新のデータを返すことがどれだけ重要であるかを検討してください。 一部のアプリケーションでは、ユーザーに影響を与えない 分または 時間古いデータを返す場合があります。

たとえば、eコマース アプリケーションでは、ユーザーは商品が利用可能かどうかをすぐに把握する必要があります。 この情報は、頻繁に更新を必要とする場合でも、可能な限り一貫性を保つことが理想的です。

対照的に、分析クエリは通常、わずかに古いデータを読み取ることが予想されます。 分析データの一貫性を完全に保つことは重要ではありません。

アプリケーションの古いデータに対する許容度は、データの一貫性を保つ方法に影響します。 複数のコレクションのデータを頻繁に更新することで、ユーザーが古いデータを読み取られるリスクを軽減できます。 ただし、頻繁に更新を行うと、アプリケーションのパフォーマンスに悪影響が及ぶ可能性があります。 データの整合性を強制すると、ユーザーのニーズとパフォーマンスへの影響のバランスがとれます。

参照整合性により、オブジェクトが削除されると、そのオブジェクトへのすべての参照も削除されます。

たとえば、アプリケーションにproductsコレクションと、 productsコレクションへの参照を含むwarehouseコレクションがあるとします。 productsコレクションから製品が削除されると、 warehouseコレクション内の対応する参照も削除する必要があります。

スキーマで参照の整合性が必要な場合は、参照の一貫性を保つためにロジックをアプリケーションに組み込みます。 少なくとも、アプリケーション ロジックは、存在しない参照をクエリしようとしたときにエラーを防ぐ必要があります。

戻る

重複データの処理