部品クエリのサポート
インデックスサービスの応答が非常に大きく、要求の処理および完全な応答の生成に必要な時間が特定のしきい値を超え、さまざまなタイムアウトまたはネットワークエラーが発生した場合。
非常に大きな応答量に関連する別の問題として、エラーの場合は不完全な応答を廃棄し、新しい要求を発行する必要があることがあります。 これは高価で無駄です。
最後に、応答が大きい場合、 1 つのクライアントがすべてのデータを保持できない可能性があります。 たとえば、 10 億件のレコードが約 200 GB です。 単一の JVM クライアントで OutOfMemory エラーが発生する可能性があります。
上記の問題を解決するために、インデックス レイヤー ではパーツクエリサポートを提供しています。 ユーザーは、 1 つの大きいクエリを複数のパーツに分割し、複数のパーツを並行してクエリできます。 タイムアウトやネットワークエラーを回避するために、各パーツのクエリが小さくなります。 個々のパーツにエラーがある場合は、特定のパーツの照会のみを再試行する必要があります。 Apache Spark などの分散クラスタでは、さまざまなパーツクエリを実行できます。 結合された結果は整合性が保たれ、単一の時点でスナップショットが反映されます。
部品を取得します
part
クエリを実行するに getParts
は、まずリクエストを送信する必要があります。 getParts
リクエストの形式は次のとおりです。
GET /<Base path for the index API from the API Lookup Service>/layers/<Layer ID>/parts?numRequestedParts=<Positive Integer> HTTP/1.1
応答の例 :
{
"parts": [
{
"partId": "eyJ0aW1lc3RhbXAiOjE1ODY4ODQxNDAsIm51bVJhbmdlcyI6NSwic3RhcnRVVUlEIjoiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIiwiZW5kVVVJRCI6IjNmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZiJ9"
},
{
"partId": "eyJ0aW1lc3RhbXAiOjE1ODY4ODQxNDAsIm51bVJhbmdlcyI6NSwic3RhcnRVVUlEIjoiM2ZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZmIiwiZW5kVVVJRCI6IjdmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZSJ9"
},
{
"partId": "eyJ0aW1lc3RhbXAiOjE1ODY4ODQxNDAsIm51bVJhbmdlcyI6NSwic3RhcnRVVUlEIjoiN2ZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZlIiwiZW5kVVVJRCI6ImJmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZCJ9"
},
{
"partId": "eyJ0aW1lc3RhbXAiOjE1ODY4ODQxNDAsIm51bVJhbmdlcyI6NSwic3RhcnRVVUlEIjoiYmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZkIiwiZW5kVVVJRCI6ImZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZiJ9"
}
]
}
注
-
numRequestedParts
正の整数であることが必要です。 - クエリするレイヤーに少量のデータが含まれている場合
numRequestedParts
、実際に返される partId の数がより少ない可能性があります。
部品を検索します
を取得すると partId
、次の形式で各パーツを照会できます。
GET /<Base path for the index API from the API Lookup Service>/layers/<Layer ID>?query=<RSQL>&part=<partId> HTTP/1.1
注
- クエリーは
partId
、生成されてから 2 時間以内に実行する必要があります。