Comparison of static and dynamic large objects

While static and dynamic objects have similar behavior, this table describes their differences:

Table 1.1. Static and dynamic large objects
Static large object Dynamic large object
End-to-end integrity

Assured. The list of segments includes the MD5 checksum (ETag) of each segment. You cannot upload the manifest object if the ETag in the list differs from the uploaded segment object. If a segment is somehow lost, an attempt to download the manifest object results in an error.

Not guaranteed. The eventual consistency model means that although you have uploaded a segment object, it might not appear in the container listing until later. If you download the manifest before it appears in the container, it does not form part of the content returned in response to a GET request.

Upload order

You must upload the segment objects before you upload the manifest object.

You can upload manifest and segment objects in any order. You are recommended to upload the manifest object after the segments in case a premature download of the manifest occurs. However, this is not enforced.

Removal or addition of segment objects

You cannot add or remove segment objects from the manifest. However, you can create a completely new manifest object of the same name with a different manifest list.

You can upload new segment objects or remove existing segments. The names must simply match the {prefix} supplied in X-Object-Manifest.

Segment object size and number

Segment objects must be at least 1 MB in size (by default). The final segment object can be any size. At most, 1000 segments are supported (by default).

Segment objects can be any size.

Segment object container name

The manifest list includes the container name of each object. Segment objects can be in different containers.

All segment objects must be in the same container.

Manifest object metadata

The object has X-Static-Large-Object set to true. You do not set this metadata directly. Instead the system sets it when you PUT a static manifest object.

The X-Object-Manifest value is the {container}/{prefix}, which indicates where the segment objects are located. You supply this request header in the PUT operation.

Copying the manifest object

Include the ?multipart-manifest=get query string in the COPY request. The new object contains the same manifest as the original. The segment objects are not copied. Instead, both the original and new manifest objects share the same set of segment objects.

The COPY operation does not create a manifest object. To duplicate a manifest object, use the GET operation to read the value of X-Object-Manifest and use this value in the X-Object-Manifest request header in a PUT operation. This creates a new manifest object that shares the same set of segment objects as the original manifest object.

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page

loading table of contents...