Комментарии 5
Было бы неплохо рассмотреть предложенные кейсы в формате сравнения с решением аналогичной задачи посредствам обычного файлового хранилища, чтобы были более очевидны плюсы и минусы использования той или иной технологии.
Стоит, наверное, ещё отметить что при создании префикса в ключе объекта, в ряде систем, эти префиксы, отображаются как вложенные в бакет папки (каталоги). Если предполагается использовать бакеты с большим количеством файлов, то без таких префиксов, просто невозможно работать через инструменты с GUI.
В MinIO SDK, чтобы положить объект в бакет, нужно знать его размер
а вот что нам говорит документация на сайте minio
// Upload unknown sized input stream.
minioClient.putObject(
PutObjectArgs.builder().bucket("my-bucketname").object("my-objectname").stream(
inputStream, -1, 10485760)
.contentType("video/mp4")
.build());
кому верить то?
Прежде всего пример выше на Java, а речь в статье про Go SDK (как и все примеры на Go). И там особенность какая, у метода PutObject есть параметр objectSize int64, и его так же можно поставить в -1, но явно говорят:
objectSize
int64
Size of the object being uploaded. Pass -1 if stream size is unknown (Warning: passing -1 will allocate a large amount of memory)
Потому так и написано, что нужно знать размер (иначе может быть больно) :)
S3: возможности протокола и паттерны использования