🐨

AI Searchのレプリカとパーティションの違いをおさらい

2024/11/05に公開

レプリカ(レプリケーション)パーティション はAI Search Serviceに限らず、検索エンジンとかデータベース系では登場してくる概念です。
それぞれの役割と特徴、目的に応じてどちらを上げるべきか度々忘れるので記事にしました。

レプリカ(Replica)

以下AI Searchに記載されている内容

レプリカは、サービス全体にワークロードを分散します。Microsoft では、2 つのレプリカを使用する読み取り操作と、3 つ以上のレプリカによる読み取りおよび書き込み操作に対して、99.9% の可用性を保証しています

クエリを分散して処理することができて、大量 or 重たい検索に耐えれるようにしたい時に増やすと効果的です。
リクエストを分散して処理してくれるのでサーバー側の負荷軽減と処理速度の向上もできます。
複数のサーバーが使われるので、どこかのサーバーがシステム障害になってダウンしてもサービスが停止しないという利点もあります。

つまり「読み取り処理」の負荷を下げたい、処理速度を上げたいときにレプリカを増やします。

パーティション(Partition)

以下AI Searchに記載されている内容

パーティションでは、複数のユニットにまたがってインデックスを割り当てることで、ドキュメント数のスケーリングやデータ インジェストの高速化が可能になります。

レプリカに対してパーティションはデータ自体を分割して複数サーバーに分散する方法です。
各パーティションが異なるデータを保持します。
データを複数サーバーに分散することで、実行するクエリを特定のパーティションに対して実行できるため、処理性能をスケールアウトできます。

つまり「書き込み処理」の負荷を下げたい、処理速度を上げたいときにパーティションを増やします。

とはいえ

「対してデータ量は多くないがリクエスト数が多い」とか「大量にデータがあるもののリクエスト数はあまりない」とかだったらどちらかを増やすでも問題ないですが、システムで運用する場合はレプリカとパーティションを組み合わせてシステム全体のスケーラビリティと負荷分散を実現することが最適です。

ヘッドウォータース

Discussion