Empfehlungen für die Implementierung der Swift REST API
Bei der Implementierung der Swift REST API zur Verwendung mit StorageGRID sollten Sie diese Empfehlungen beachten.
Empfehlungen für Köpfe zu nicht vorhandenen Objekten
Wenn Ihre Anwendung regelmäßig prüft, ob ein Objekt in einem Pfad existiert, in dem Sie nicht erwarten, dass das Objekt tatsächlich vorhanden ist, sollten Sie die Konsistenzkontrolle „available
“ verwenden. Sie sollten z. B. die Konsistenzkontrolle „Available
“ verwenden, wenn Ihre Anwendung EINEN HEAD-Vorgang an einem Speicherort ausführt, bevor Sie einen PUT-Vorgang an diesen Ort ausführen.
Andernfalls werden möglicherweise 500 Fehler des internen Servers angezeigt, wenn ein oder mehrere Speicherknoten nicht verfügbar sind.
Sie können die Konsistenzkontrolle „verfügbar
“ für jeden Container mithilfe der PUT Container-Konsistenzanforderung festlegen.
Empfehlungen für Objektnamen
Als die ersten vier Zeichen von Objektnamen sollten keine Zufallswerte verwendet werden. Stattdessen sollten Sie nicht-zufällige, nicht-eindeutige Präfixe verwenden, wie z. B. Bild.
Wenn Sie in Objektnamen-Präfixen zufällige und eindeutige Zeichen verwenden müssen, sollten Sie die Objektnamen mit einem Verzeichnisnamen vorschreiben. Verwenden Sie dieses Format:
mycontainer/mydir/f8e3-image3132.jpg
Anstelle dieses Formats:
mycontainer/f8e3-image3132.jpg
Empfehlungen für „Range reads
“
Wenn die Option komprimiere gespeicherte Objekte ausgewählt ist (Konfiguration > Systemeinstellungen > Grid-Optionen), sollten Swift-Client-Anwendungen vermeiden, GET-Objektoperationen durchzuführen, die einen Bereich von Bytes angeben. Diese Vorgänge „range Read
“ sind ineffizient, da StorageGRID die Objekte effektiv dekomprimieren muss, um auf die angeforderten Bytes zugreifen zu können. GET-Objektvorgänge, die einen kleinen Byte-Bereich von einem sehr großen Objekt anfordern, sind besonders ineffizient, beispielsweise ist es sehr ineffizient, einen Bereich von 10 MB von einem komprimierten 50-GB-Objekt zu lesen.
Wenn Bereiche von komprimierten Objekten gelesen werden, können Client-Anforderungen eine Zeitdauer haben.
Wenn Sie Objekte komprimieren müssen und Ihre Client-Applikation Bereichslesevorgänge verwenden muss, erhöhen Sie die Zeitüberschreitung beim Lesen der Anwendung. |