Disperse metadata independently of object data
Mutable data objects are discrete sources of changeable object data and metadata stored to a storage system.
On such systems, object metadata needs to be changed independently from, and often more frequently than, content data.
These systems need a way to reliably store metadata updates without rewriting the entire object's data. When metadata changes on a separate schedule than when the object data changes, it is known as independent metadata.
With independent metadata, the metadata is either added as a prefix or appended to object data. Metadata is stored reliably as independent metadata bundle objects to an SOV. These metadata bundles need to indicate which object ID they relate to and also need revision information to help the disaster recovery process. Some slight changes in content data storage also are needed to allow content data objects to be ignored during recovery.
struct metadata_Object {
byte METADATA_MAGIC_NUMBER long database_primary_key, Long revision,
byte[] metadata content
};
struct content_Object {
byte CONTENT_MAGIC_NUMBER
byte[] content_data
};
-- ---
-- Table 'DispersedStore'
--
-- ---
DROP TABLE IF EXISTS `DispersedStore`;
CREATE TABLE `DispersedStore` (
`permanent_id` VARCHAR NOT NULL,
`Object_id` VARCHAR NOT NULL,
`metadata_id` VARCHAR NOT NULL,
`metadata_revision` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY (`permanent_id`)
Every time the metadata is updated for an object, the entire set of metadata is bundled and stored as a new object. It results in a new metadata OID to insert into the application database.