プロバイダと製品の関係に最適な Firestore データ構造の選択
問題:
Firestore で効率的なデータ構造を考案する製品に基づいてプロバイダーを検索できるようにする
最適なアプローチ:
以下に概要を示す、提案されたデータ構造は、意図された使用例によく適しています:
プロバイダー 1 (ドキュメント)</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> Name
City
Categories
ログイン後にコピー
プロバイダ 2
製品 (コレクション)
製品 1 (ドキュメント)
Name
Description
Category
Provider ID
ログイン後にコピー
ログイン後にコピー
製品2
Name
Description
Category
Provider ID
ログイン後にコピー
ログイン後にコピー
正当性:
-
データの重複: プロバイダー情報の保存製品ドキュメント内 (プロバイダー ID 経由) は効果的な非正規化手法であり、読み取り時間の短縮につながります。必要に応じて両方のコレクションにアクセスすることも可能です。
-
データの一貫性: 非正規化により複数ドキュメントの読み取りが不要になりますが、データの一貫性を維持することは依然として重要です。プロバイダー情報の更新は、関連するすべての製品ドキュメントに反映する必要があります。
-
パフォーマンスとコスト: プロバイダー データを複製するとストレージの使用量が増加する可能性がありますが、このトレードオフはクエリの高速化によって正当化されます。 Firestore は、読み取り操作よりも API 呼び出しと書き込みに対して料金を多く請求します。
-
セキュリティ: 製品関連のクエリを許可しながらプロバイダー情報を保護する適切なセキュリティ ルールを作成することが重要です。
代替案構造:
-
参照のみの保存: 製品ドキュメント内でプロバイダー参照のみを保持すると、記述は簡素化されますが、読み取りは複雑になります (複数の API 呼び出しが必要)。
-
完全なプロバイダーの複製: プロバイダー オブジェクト全体を製品ドキュメントにコピーすると、余分な呼び出しが排除されますが、
最適なアプローチの選択:
最適なデータ構造は、最終的にはアプリケーションの特定のニーズと要件によって異なります。考慮すべき要素には、データ サイズ、更新頻度、読み取りパフォーマンスの制約、コストへの影響などが含まれます。
関連ディスカッション:
- [Firestore コレクション、マップ、配列の説明](関連投稿へのリンク)
以上が効率的なプロバイダー製品検索のために最適な Firestore データ構造を設計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。