Хранилище S3 не обладает иерархической файловой системой, как в Unix. Файловая система в «бакете» (bucket) S3 плоская. Кроме того, в хранилище S3 нет такого понятия как файл или каталог, здесь есть «объекты». Все объекты располагаются друг за другом и им присвоены названия в алфавитном порядке.
Но создать в bucket S3 некоторое подобие файловой системы всё-таки можно: используя префиксы для организации данных хранящихся в бакетах. Поясним подробнее:
Каждому объекту можно назначить имя ключа. Имя ключа имеет префикс. Префикс — это строка символов в начале имени ключа объекта. Префикс может быть любой длины в зависимости от максимальной длины имени ключа объекта. Можно сказать, что префикс выступает как некий способ организации данных, подобных каталогам. Однако префиксы не являются каталогами. Также есть разделитель, аналог разделителя в файловой системе UNIX: ( \ ).
Поиск объектов по префиксу приведёт вас к объектам, имя ключей которых начинается с этого префикса. Если будете искать объекты по разделителю, то увидите объекты, сгруппированные по общему префиксу (Common Prefixes) в имени ключа этих объектов. Назначение префикса и разделителя поможет вам упорядочить, а затем иерархически просматривать ключи.
Для начала выберите разделитель сегмента, который не будет встречаться ни в одном имени ключей объектов, создаваемых вами. Использовать можно любой разделитель. Например “ \ ” (это не является уникальным разделителем, просто распространённый) . Создайте имена ключей объектов по иерархическому принципу, соединив все содержащиеся уровни иерархии, разделив каждый уровень разделителем. Например, если вы храните информацию о городах, то можете естественным образом упорядочить их по континентам, затем по странам, затем по провинциям или штатам. Так как в имени городов обычно нет символа «\» , то можно использовать его в качестве разделителя. Например:
Russia\Yaroslavskaya_obl\Yaroslavl
Russia\Moskowskaya_obl\Mosсow
Чтобы перечислить в бакете только объекты корневого уровня, вы отправляете запрос GET в bucket с символом-разделителем косой черты ( / ) .
- 0 Пользователи нашли это полезным