Items stored within an M-Files vault - aside from value lists - are considered Objects. Each document stored to M-Files is an object. Each project - if a vault is configured to store projects - is an object. Each object is of a specific object type and ../Vault-Structure/class, and has a series of property values which together make up its metadata. Some objects contain files (e.g. documents) and some objects do not.
Whenever the metadata or files of an object are altered, M-Files automatically creates a new Object Version. These versions can be seen by viewing the object`s history. In order to maintain this audit trail, M-Files uses a process whereby an object is checked out, altered, then checked in. Objects can only be checked out by one person at a time.
For changes that may take some time (e.g. editing a file), M-Files may prompt the user to check out the object. No other user can make alterations to this object until it is checked back in, the checkout is discarded, or an administrator overrides the checkout.
For smaller, atomic, changes, M-Files will often perform the check out and in transparently for the user. This can be seen by finding an object and altering its metadata: when clicking the Save button, M-Files will check out the object, persist the changes, then check it back in again.
Any operation that alters the object`s metadata or files causes a new version to be created, including moving items through workflows.
MinIO supports a complete object locking framework offering both Legal Hold and Retention (with Governance and Compliance modes). Object Locking functionality is a requirement for many regulated industries from financial services to healthcare.
MinIO now offers the complete suite of lifecycle management capabilities. This includes versioning, object locking and the various derivative components. Every use case is different and our goal is to create software and documentation that allow our community to implement these features with confidence.
Even with Amazon`s leadership, not a lot of companies have implemented this feature. We are pleased to add our name to the list. Given the other attributes of our software, we think this removes any hesitation around adopting MinIO as your private cloud object store.
Versioning allows a user to retain multiple variants of an object in the same bucket. Versioning provides a mechanism to preserve, retrieve, and restore every version of every object stored in a bucket. Versioning ensures that objects remain available across a range of failures from applications to human error.
Versioning is enabled at the bucket level. When enabled, MinIO automatically creates a unique version ID for the object. There can be multiple versions of the same object.
One of the main benefits of versioning is to protect overwriting it or deleting it unintentionally. This is performed using the concept of a delete marker. When a versioned object is deleted it is not removed permanently. Rather a delete marker is created and becomes the current version of the object. When that object is read it returns a 404 Not Found message.
Along the same lines, if a versioned object is overwritten, it creates a new version and that becomes the current version. Again, the older version can be restored as needed.
To account for these changes there are now three bucket states in MinIO. Unversioned which is the default, versioning?enabled, or versioning?suspended. Please note that once a bucket is enabled for versioning, that action cannot be undone - only suspended. Versioning is a global setting within the bucket - meaning all objects are now versioned.
Users with appropriate permissions can suspend versioning to stop accruing object versions. This is applicable only for that bucket and not for other buckets. For more information on what happens in this case refer to the documentation.
As with all of MinIO, versioning can be applied using the MinIO Client (mc), the SDK or via the command line.
Versioning is the simplest way to protect data from unintended actions. It does have the effect of adding to bucket sizes as objects are versioned and can lead to a higher number of interdependencies between the objects as well as the risk of hidden object dependencies. This can be mitigated with Lifecycle Management Choices. Still, for most organizations, this is a reasonable tradeoff for data protection.
Retention ensures that an object is WORM protected (cannot be deleted or overwritten) for some period of time. It can be expressed in seconds, days or years.
Retention is set at the object level. You can place a retention period on an object version either explicitly or through a bucket default setting. A default lock configuration set at the bucket level does not apply retroactively to versions of objects created before. It only applies to objects that are created afterwards. When you apply a retention period to an object version explicitly, you specify a Retain Until Date for the object version. The Retain Until Date setting is stored in the object version`s metadata and protects the object version until the retention period expires.
When the bucket default setting is used, a Retain Until Date is not specified. Instead, a duration is set (either days or years), for which every object version placed in the bucket should be protected. When a new object is placed in the bucket a Retain Until Date is calculated for the object version by adding the specified duration to the object version`s creation timestamp. The object version is then protected exactly as though it was explicitly locked with that retention period on the object version.
When you place a retention period on an object version, a timestamp is stored in the object version`s metadata to indicate when the retention period expires. After the retention period expires, the object version can be deleted unless a legal hold was also placed on the object version.
Explicit retention mode and period specified while creating an object version always overrides the bucket default settings.
When setting a retention period for your objects or buckets Governance mode is used when the goal is to protect objects from being deleted by standard users. Having said that, there are users that will retain the permissions required to modify the retention settings or delete the objects. Those users will need the s3:BypassGovernanceRetention permission as well as the DeleteObject permission.
Compliance mode is more restrictive - it cannot be undone within the retention period. As a result, Compliance mode should be used when you are certain that you do not want anyone, including the root user, to be able to delete the objects during its retention period.
While Retention and Legal Hold prevent objects from deletion or overwriting, they can overlap. An object version can have both retention and legal hold. Retention and legal hold apply to individual object versions. Different versions of a single object can have different retention modes and periods.
Specifically, an object can have a retention period (call it six months) and a legal hold (indefinite). Even after the expiration of the retention period, the object version cannot be deleted because it still carries the legal hold. Only once the legal hold is lifted on that version of the object, can it be deleted.
While objects may have retention or legal hold, they can still be versioned. A copy operation on a version of an object does not carry forward the retention and legal hold settings that may be present on the source to the destination.
The command listed above creates a bucket that supports object locking.
(Optional) Configure a default retention period for objects placed in the bucket.
Place the objects that you want to lock in the bucket.
Apply a retention period, a legal hold, or both, to the objects that you want to protect.
Returns metadata about all versions of the objects in a bucket. You can also use request parameters as selection criteria to return metadata about a subset of all the object versions.
Requests Amazon S3 to encode the object keys in the response and specifies the encoding method to use. An object key may contain any Unicode character; however, XML 1.0 parser cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the response.
Use this parameter to select only those keys that begin with the specified prefix. You can use prefixes to separate a bucket into different groupings of keys. (You can think of using prefix to make groups in the same way you’d use a folder in a file system.) You can use prefix with delimiter to roll up numerous objects into a single result under CommonPrefixes.
The following command retrieves version information for an object in a bucket named my-bucket:
Marks the last version of the key returned in a truncated response.
When the number of responses exceeds the value of MaxKeys , NextVersionIdMarker specifies the first object version not returned that satisfies the search criteria. Use this value for the version?id-marker request parameter in a subsequent request.
Specifies whether the object is (true) or is not (false) the latest version of an object.
Specifies whether the object is (true) or is not (false) the latest version of an object.
Selects objects that start with the value supplied by this parameter.
Encoding type used by Amazon S3 to encode object key names in the XML response.
You can use versioning to retain multiple versions of an object, which protects against accidental deletion of objects, and enables you to retrieve and restore earlier versions of an object.
The StorageGRID Webscale system implements versioning with support for most features, and with some limitations.
In StorageGRID Webscale , object versioning can be combined with Information Lifecycle Management (ILM), rather than Amazon`s Object Lifecycle Management, which is not supported. You must explicitly enable versioning for each bucket to turn on this functionality for the bucket. Each object in your bucket is assigned a version ID which is generated by the StorageGRID Webscale system.
We offer object version
object version, object, version,