Кратко:
- Метаданные объекта в хранилище представляют собой сведения о его свойствах.
- Метаданные делятся на пользовательские и системные.
- Системные метаданные устанавливаются сервисом, пользовательские добавляются и изменяются пользователем.
- Метаданные используются для сортировки, анализа и поиска объектов.
- Пользовательские метаданные передаются в хранилище при загрузке объекта в HTTP-заголовках.
- Имена пользовательских метаданных могут быть указаны в разных регистрах, но после загрузки в хранилище они становятся строчными.
- Пользовательские метаданные могут быть добавлены или изменены.
Метаданные
На прошлом уроке вы узнали, что у объекта в хранилище есть метаданные — сведения о его свойствах. Метаданные представляются в виде пары «имя: значение». Например, так записывается дата и время загрузки объекта в хранилище:
Date: Fri, 5 Mar 2021 14:00:00 GMT
Метаданные бывают пользовательскими (их имена и значения вы добавляете и меняете сами) и системными (их устанавливает сервис). Например, дата создания или последнего изменения объекта, его размер, MD5-хеш — это системные метаданные.
Предположим, клиника хранит в облаке рентгеновские снимки пациентов. К каждому снимку (объекту) вы добавляете метаданные: Ф. И. О. пациента, номер медицинской карты, дату обследования, код диагноза, модель рентген аппарата, Ф. И. О. проводивших обследование специалистов.
Задав много метаданных, вы сможете легко находить, сортировать и анализировать объекты. Например, врачи быстро узнают, какие пациенты получили избыточное облучение, если выяснится, что один из рентген-аппаратов барахлит, или проследят динамику заболеваемости воспалением легких у пожилых женщин с разбивкой по месяцам.
Пользовательские метаданные передаются в облачное хранилище при загрузке объекта в HTTP-заголовках запроса. Имена заголовков с пользовательскими метаданными при этом должны начинаться с префикса
x-amz-meta-
:PUT /images/image0349.dat HTTP/1.1
Host: hospital.storage.yandexcloud.net
Content-Length: 1403256
Date: Sat, 20 Mar 2021 14:15:02 GMT
Authorization: *...*
x-amz-meta-Patient-Surname: Petrov
x-amz-meta-Patient-ID: 4536
*...*
При запросе объекта сервис возвращает метаданные в виде таких же HTTP-заголовков с префиксом x-amz-meta-
:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 23 Mar 2021 10:12:15 GMT
Content-Type: image/dat
Content-Length: 1403256
Connection: keep-alive
Keep-Alive: timeout=60
Accept-Ranges: bytes
Last-Modified: Sat, 20 Mar 2021 14:15:02 GMT
x-amz-meta-patient-surname: Petrov
x-amz-meta-patient-id: 4536
...
Важно! До загрузки вы можете указывать имена метаданных объекта и прописными, и строчными буквами (хоть ABC, хоть abc). Однако после загрузки в хранилище они станут строчными (только abc). Таким образом, хранилище посчитает метаданные с именами Patient-ID и patient-id одинаковыми.
Пользовательские метаданные загруженных объектов тоже можно добавлять или изменять. Вы научитесь делать это на ближайшем практическом уроке.