Swift REST API を実装する際の推奨事項
StorageGRID で使用するために Swift REST API を実装する場合は、次の推奨事項を考慮してください。
存在しないオブジェクトに対する HEAD の推奨事項
オブジェクトが実際に存在するとは思わないパスにオブジェクトが存在するかどうかをアプリケーションが定期的にチェックする場合は、「available」整合性を使用する必要があります。たとえば、アプリケーションがある場所へのPUT処理の前にある場所へのHEAD処理を実行する場合は、「available」整合性を使用する必要があります。
そうしないと、使用できないストレージノードがある場合に HEAD 処理でオブジェクトが見つからないと、「 500 Internal Server Error 」が大量に返される可能性があります。
コンテナごとに「available」整合性を設定するには、 "PUT コンテナセイコウセイヨウキユウ"。コンテナごとに「available」整合性を設定するには、 "GET(コンテナ整合性)要求"。
オブジェクト名の推奨事項
StorageGRID 11.4 以降で作成されたコンテナの場合、オブジェクト名がパフォーマンスのベストプラクティスに適合するように制限する必要はなくなりました。たとえば、オブジェクト名の最初の 4 文字にランダムな値を使用できるようになりました。
StorageGRID 11.4 よりも前のリリースで作成されたコンテナの場合は、オブジェクト名に関する次の推奨事項に進みます。
-
オブジェクト名の最初の 4 文字に、ランダムな値を使用しないでください。これは、 AWS が以前に推奨していた名前プレフィックスの推奨とは異なります。代わりに、などの一意ではないランダムなプレフィックスを使用してください
image
。 -
名前のプレフィックスにランダムな一意の文字を使用するように AWS の以前の推奨事項に従っている場合は、オブジェクト名の前にディレクトリ名を指定する必要があります。つまり、次の形式を使用します。
mycontainer/mydir/f8e3-image3132.jpg
次の形式は使用しないでください。
mycontainer/f8e3-image3132.jpg
「範囲読み取り」に関する推奨事項
状況に応じて "格納オブジェクトを圧縮するグローバルオプション" が有効になっている場合は、Swiftクライアントアプリケーションで、返されるバイト数の範囲を指定するGET Object処理を実行しないでください。これらの「範囲読み取り」処理は効率的ではありません。StorageGRIDでは、要求されたバイトにアクセスするためにオブジェクトの圧縮を実質的に解除する必要があるためです。非常に大きなオブジェクトから小さい範囲のバイト数を要求する GET Object 処理は特に効率が悪く、たとえば、 50GB の圧縮オブジェクトから 10MB の範囲を読み取る処理は非常に非効率的です。
圧縮オブジェクトから範囲を読み取ると、クライアント要求がタイムアウトする可能性があります。
オブジェクトを圧縮する必要があり、クライアントアプリケーションが範囲読み取りを使用する必要がある場合は、アプリケーションの読み取りタイムアウトを増やしてください。 |