Dell DX6004S DX Object Storage Application Guide - Page 12

About Immutable Objects, 9.3. About Anchor Streams

Page 12 highlights

doesn't help to describe it or name it, because these can be ambiguous. No one else can retrieve your coat, unless they have the coat check. A DX Storage UUID is a 128-bit, 16-octet, case-insensitive, opaque sequence of bits. In text-based languages and protocols, notably the Simple Content Storage Protocol discussed in Chapter 4, Introduction to the Simple Content Storage Protocol (SCSP), a UUID is represented as a sequence of 32 hexadecimal digits. It has no internal structure and cannot be parsed in any way to yield meaningful information about where or when the associated object was stored. An object's UUID is not derived from the contents of the object. UUIDs are always assigned by a DX Storage node at the time an object is first stored. DX Storage can produce copies or replicas of an object to facilitate fault-tolerance, integrity, and/or speed of access, but every replica of a given object has exactly the same UUID as the original object. In fact, there is no external way to distinguish an original from a replica. For all practical purposes, each replica of an object is identical to every other replica of that object. Note If there is one replica of an object in a cluster, then there is only one instance of that object in the cluster. Replica, instance, and object are all synonymous in this usage. It would also be correct to say that there is one instance of the object in the cluster. 1.9.2. About Immutable Objects By default, after an unnamed object is stored in DX Storage, it can be changed in only one way, and that is to delete it. There is no way to open an existing object for updates or to extend an object by adding more data to the end of it. At the time an object is first stored, the application must provide a size, in bytes, for the object. DX Storage will allocate exactly enough space to store the given number of bytes. Subsequently, every replica of the object, if any, has precisely the same byte size. There can be no chance that some replica will be updated or changed in some way while others are not changed. If an application must update an object with a new version of the content, it is the responsibility of the application developer to store a new DX Storage object containing the updated data, or delete it if necessary, and to modify any references to the old UUID to point to the new one. Likewise, DX Storage maintains no association between the old object and the new revision because it is the responsibility of the application to make this association if necessary. In some of these use cases it might be appropriate to use anchor streams as discussed in Section 1.9.3, "About Anchor Streams". 1.9.3. About Anchor Streams Anchor streams are a special kind of unnamed object in DX Storage whose content can be replaced, but whose UUID remains constant or "anchored." An anchor stream is created in much the same way as a regular object, but using an alias=yes query argument on the WRITE request. Unlike an immutable object whose contents can never change, the contents of an anchor stream can be replaced using a COPY, APPEND, or UPDATE request. When reading an anchor stream, DX Storage always returns the most recent data associated with the anchor stream's UUID. Anchor streams serve a very specific and useful purpose for applications using DX Storage to store fixed content data. Many such applications must associate a symbolic name of some kind (for example, a URI or a file path name) to an object UUID as returned from DX Storage. Copyright © 2010 Caringo, Inc. All rights reserved 7 Version 5.0 December 2010

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

Copyright © 2010 Caringo, Inc.
All rights reserved
7
Version 5.0
December 2010
doesn’t help to describe it or name it, because these can be ambiguous. No one else can retrieve
your coat, unless they have the coat check.
A DX Storage UUID is a 128-bit, 16-octet, case-insensitive, opaque sequence of bits. In text-based
languages and protocols, notably the Simple Content Storage Protocol discussed in
Chapter 4,
Introduction to the Simple Content Storage Protocol (SCSP)
, a UUID is represented as a sequence
of 32 hexadecimal digits.
It has no internal structure and cannot be parsed in any way to yield meaningful information about
where or when the associated object was stored. An object’s UUID is not derived from the contents
of the object.
UUIDs are always assigned by a DX Storage node at the time an object is first stored. DX Storage
can produce copies or
replicas
of an object to facilitate fault-tolerance, integrity, and/or speed of
access, but every replica of a given object has exactly the same UUID as the original object. In fact,
there is no external way to distinguish an original from a replica. For all practical purposes, each
replica of an object is identical to every other replica of that object.
Note
If there is one replica of an object in a cluster, then there is only one instance of that
object in the cluster. Replica, instance, and object are all synonymous in this usage. It
would also be correct to say that there is one instance of the object in the cluster.
1.9.2. About Immutable Objects
By default, after an unnamed object is stored in DX Storage, it can be changed in only one way, and
that is to delete it. There is no way to open an existing object for updates or to extend an object by
adding more data to the end of it. At the time an object is first stored, the application must provide
a size, in bytes, for the object. DX Storage will allocate exactly enough space to store the given
number of bytes.
Subsequently, every replica of the object, if any, has precisely the same byte size. There can be no
chance that some replica will be updated or changed in some way while others are not changed. If
an application must update an object with a new version of the content, it is the responsibility of the
application developer to store a new DX Storage object containing the updated data, or delete it if
necessary, and to modify any references to the old UUID to point to the new one.
Likewise, DX Storage maintains no association between the old object and the new revision
because it is the responsibility of the application to make this association if necessary. In some of
these use cases it might be appropriate to use
anchor streams
as discussed in
Section 1.9.3, “About
Anchor Streams”
.
1.9.3. About Anchor Streams
Anchor streams are a special kind of unnamed object in DX Storage whose content can be
replaced, but whose UUID remains constant or "anchored." An anchor stream is created in much
the same way as a regular object, but using an
alias=yes
query argument on the WRITE request.
Unlike an immutable object whose contents can never change, the contents of an anchor stream
can be replaced using a COPY, APPEND, or UPDATE request. When reading an anchor stream,
DX Storage always returns the most recent data associated with the anchor stream's UUID.
Anchor streams serve a very specific and useful purpose for applications using DX Storage to
store fixed content data. Many such applications must associate a symbolic name of some kind (for
example, a URI or a file path name) to an object UUID as returned from DX Storage.