Per @klauspost we need to add info to the docs about MinIO's recommendation to limit prefixes to no more than 10k objects. This updates the glossary entry, object management doc, and admin concepts to add that recommendation. Closes #666
4.8 KiB
Object Management
minio
Table of Contents
An object <objects>
is binary data, sometimes
referred to as a Binary Large OBject (BLOB). Blobs can be images, audio
files, spreadsheets, or even binary executable code. Object Storage
platforms like MinIO provide dedicated tools and capabilities for
storing, retrieving, and searching for blobs.
MinIO Object Storage uses buckets <buckets>
to organize objects. A bucket
is similar to a folder or directory in a filesystem, where each bucket
can hold an arbitrary number of objects. MinIO buckets provide the same
functionality as AWS S3 buckets.
For example, consider an application that hosts a web blog. The application needs to store a variety of blobs, including rich multimedia like videos and images. The structure of objects on the MinIO server might look similar to the following:
/ #root
/images/
2020-01-02-MinIO-Diagram.png
2020-01-03-MinIO-Advanced-Deployment.png
MinIO-Logo.png
/videos/
2020-01-04-MinIO-Interview.mp4
/articles/
/john.doe/
2020-01-02-MinIO-Object-Storage.md
2020-01-02-MinIO-Object-Storage-comments.json
/jane.doe/
2020-01-03-MinIO-Advanced-Deployment.png
2020-01-02-MinIO-Advanced-Deployment-comments.json
2020-01-04-MinIO-Interview.md
MinIO supports multiple levels of nested directories and objects
using a prefix
structure to support even the most dynamic object storage workloads.
MinIO itself does not limit the number of objects that any specific prefix can contain. However, hardware and network conditions may show performance impacts with large prefixes.
- Deployments with modest or budget-focused hardware should architect their workloads to target 10,000 objects per prefix as a baseline. Increase this target based on benchmarking and monitoring of real world workloads up to what the hardware can meaningfully handle.
- Deployments with high-performance or enterprise-grade
hardware <deploy-minio-distributed-recommendations>
can typically handle prefixes with millions of objects or more.
Enterprise accounts can utilize yearly architecture reviews as part of the deployment and maintenance strategy to ensure long-term performance and success of your MinIO-dependent projects.
For a deeper discussion on the benefits of limiting prefix contents,
see the article on optimizing S3 performance <optimizing-performance.html>
.
Object Versioning
MinIO supports keeping multiple "versions" of an object in a single bucket. Write operations which would normally overwrite an existing object instead result in the creation of a new versioned object.
MinIO versioning protects from unintended overwrites and deletions while providing support for "undoing" a write operation.
See minio-bucket-versioning
for more complete
documentation.
Object Retention
MinIO Object Locking ("Object Retention") enforces Write-Once
Read-Many (WORM) immutability to protect versioned objects <minio-bucket-versioning>
from
deletion. MinIO supports both duration based object retention <minio-object-locking-retention-modes>
and indefinite Legal Hold retention <minio-object-locking-legalhold>
.
See minio-object-locking
for more complete
documentation.
MinIO Object Locking provides key data retention compliance and meets SEC17a-4(f), FINRA 4511(C), and CFTC 1.31(c)-(d) requirements as per Cohasset Associates.
Object Lifecycle Management
MinIO Object Lifecycle Management allows creating rules for time or date based automatic transition or expiry of objects. For object transition, MinIO automatically moves the object to a configured remote storage tier. For object expiry, MinIO automatically deletes the object.
MinIO lifecycle management is built for behavior and syntax
compatibility with AWS S3 Lifecycle Management <object-lifecycle-mgmt.html>
.
For example, you can export S3 lifecycle management rules and import
them into MinIO or vice-versa. MinIO uses JSON to describe lifecycle
management rules, and conversion to or from XML may be required.
See minio-lifecycle-management
for more complete
documentation.
/administration/object-management/object-versioning /administration/object-management/object-retention /administration/object-management/object-lifecycle-management