読み取り要求はどのように実行されるか

コーディネーター・ノードは、3つの種類の読み取り要求をレプリカに送信できます。

coordinator nodeがレプリカに送信できる読み取り要求には3つの種類があります。

  • 直接読み取り要求
  • ダイジェスト要求
  • バックグラウンド読み取りリペア要求

直接読み取り要求では、コーディネーター・ノードが1つのレプリカ・ノードにアクセスします。ダイジェスト要求の場合、コーディネーター・ノードは整合性レベルに指定されている数のレプリカにまずアクセスします。コーディネーター・ノードは、最も速く応答しているレプリカに要求を送信します。アクセスされたノードは、要求されたデータのダイジェストで応答します。複数のノードがアクセスされると、各レプリカからの行は、メモリー内で整合性が比較されます。

いずれかのレプリカ・ノードに古いデータがある場合、コーディネーター・ノードはバックグラウンド読み取りリペアを送信し、最新のデータ(タイムスタンプに基づく)のレプリカから結果をクライアントに転送します。読み取りリペア要求は、読み取りクエリーに関与するすべてのレプリカの間で、要求された行の整合が取れていることを確認します。

読み取り要求の例を図示したものは、「読み取り整合性レベルの例」を参照してください。

speculative_retryを使用した高速読み取り保護

最初に選択したレプリカ・ノードがダウンしているか、応答に時間がかかりすぎる場合、高速読み取り保護により、DataStax Enterprise(DSE)は引き続き読み取り要求を配信できます。speculative_retryプロパティを使用してテーブルが構成されている場合、読み取り要求のコーディネーター・ノードは、当初のレプリカ・ノードが構成可能なタイムアウト値を超えると、読み取り要求を完了させるために、別のレプリカ・ノードを対象に要求をリトライします。

1. 高速読み取り保護による、レプリカ・ノード障害からの復旧

コーディネーター・ノード

選択されたノード