mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
faf013ec84
Existing: ```go type xlMetaV2 struct { Versions []xlMetaV2Version `json:"Versions" msg:"Versions"` } ``` Serialized as regular MessagePack. ```go //msgp:tuple xlMetaV2VersionHeader type xlMetaV2VersionHeader struct { VersionID [16]byte ModTime int64 Type VersionType Flags xlFlags } ``` Serialize as streaming MessagePack, format: ``` int(headerVersion) int(xlmetaVersion) int(nVersions) for each version { binary blob, xlMetaV2VersionHeader, serialized binary blob, xlMetaV2Version, serialized. } ``` xlMetaV2VersionHeader is <= 30 bytes serialized. Deserialized struct can easily be reused and does not contain pointers, so efficient as a slice (single allocation) This allows quickly parsing everything as slices of bytes (no copy). Versions are always *saved* sorted by modTime, newest *first*. No more need to sort on load. * Allows checking if a version exists. * Allows reading single version without unmarshal all. * Allows reading latest version of type without unmarshal all. * Allows reading latest version without unmarshal of all. * Allows checking if the latest is deleteMarker by reading first entry. * Allows adding/updating/deleting a version with only header deserialization. * Reduces allocations on conversion to FileInfo(s). |
||
---|---|---|
.. | ||
bigdata | ||
bucket | ||
chroot | ||
compression | ||
config | ||
debugging | ||
deployment/kernel-tuning | ||
disk-caching | ||
distributed | ||
docker | ||
erasure | ||
extensions/s3zip | ||
federation/lookup | ||
gateway | ||
integrations/veeam | ||
kms | ||
logging | ||
metrics | ||
multi-tenancy | ||
multi-user | ||
orchestration | ||
screenshots | ||
security | ||
select | ||
shared-backend | ||
site-replication | ||
sts | ||
throttle | ||
tls | ||
LICENSE | ||
minio-limits.md |