Nano Hash - криптовалюты, майнинг, программирование

Какой длины может быть имя контейнера BLOB-объектов Azure?

Я читал, что имена контейнеров хранилища Azure blob должны содержать не более 63 символов (см. https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/naming-and-ссылающиесяконтейнеры-blobs-and-metadata), но перед тем, как прочитать это, я тестировал имена контейнеров длиннее, чем это, поэтому попробовал что-то гораздо более длительное:

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("YourKey");
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(@"blob.txt");

Кажется, это работает нормально (обратите внимание на прописные буквы, которые также предположительно не разрешены). Я также использовал Microsoft Azure Storage Explorer (v0.8.9) для открытия папок и файлов, созданных с помощью C #, и для создания более длинных имен папок (смешанный регистр) в моем хранилище BLOB-объектов.

В реальной жизни я думал о контейнерах длиной примерно до 100 символов (репликация файловой структуры Windows с пятью уровнями папок с именами подпапок до 20 символов. При необходимости я мог бы заставить их переводить их в нижний регистр. Большая часть того, что у меня есть read, кажется, предполагает, что хранилище BLOB-объектов лучше, чем хранилище файлов, если только оно не связано с устаревшими системами или не требует SMB. Исходя из этого рассуждения, хранилище BLOB-объектов кажется лучшим вариантом, и все, похоже, работает нормально при тестировании. Однако может ли Microsoft внезапно наложить только нижний регистр и ограничение в 63 символа? Что-то еще мне не хватает?


Ответы:


1

Таким образом, максимальная длина имени контейнера может составлять 63 символа. Причина, по которой вы не получаете ошибок в своем коде, заключается в том, что это ограничение применяется на стороне сервера. Когда вы создаете экземпляр CloudBlobContainer с помощью кода:

CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");

Это происходит на стороне клиента. Если вы попытаетесь выполнить какую-либо операцию на стороне сервера с этим container объектом (например, создать этот контейнер), вы получите сообщение об ошибке, потому что вы нарушаете это ограничение в 63 символа.

Вы можете думать о контейнере как о папке верхнего уровня внутри вашей учетной записи хранения больших двоичных объектов. По аналогии, если вы считаете C:\ на своем компьютере учетной записью хранения, то контейнером может быть windows. Теперь в каждом контейнере может быть ноль или более блобов, и чтобы создать иллюзию иерархии, вы назвали бы свои капли, например, cursors\aero_arrow.cur. При именовании больших двоичных объектов вы можете иметь больше символов, чем 63. Однако, поскольку каждый большой двоичный объект доступен через URL-адрес (https://accountname.blob.core.windows.net/containername/blobname), максимальная длина ограничена максимальным количеством символов в URL-адресе, который, как я полагаю, составляет 1024 символа.

01.03.2017
  • Спасибо @GautravMantri. После того, как я слишком много часов просидел за компьютером, играя с вещами, я неправильно понял, что это за контейнер. Я думал, что это часть хранилища, которое я настроил из панели управления Azure, а контейнер - это то, что я настраиваю на панели мониторинга Azure. Если бы я добавил строку кода container.CreateIfNotExists (); Я бы увидел ошибку 400, неверный запрос, вызванный слишком длинным именем контейнера или символами верхнего регистра. Вся моя иерархия папок и файлов (вероятно) будет существовать в одном контейнере. 01.03.2017
  • Не могли бы вы объяснить I was thinking it was a sub-unit of the storage I had setup from the Azure dashboard, where as the container IS the thing I setup in the Azure dashboard? Насколько я понимаю, контейнер - это часть хранилища. 01.03.2017
  • На панели управления при добавлении хранилища BLOB-объектов ему дается имя, это создает контейнер. Раньше я (ошибочно) думал, что контейнер находится на один уровень ниже, это часть одной единицы хранилища BLOB-объектов. Теперь я понимаю, что на самом деле это часть учетной записи. Я предполагаю, что моя путаница возникла из-за того, насколько хорошо Azure / C # справился с моей неверно названной переменной контейнера вместо того, чтобы выдавать ошибку. 01.03.2017
  • _1 _... Подскажите пожалуйста скриншот портала? Таким образом, хранилище BLOB-объектов представляет собой трехуровневую иерархию: 1) Учетная запись хранения 2) Контейнер BLOB-объектов и 3) Blob-объекты. 01.03.2017
  • Я бы не стал добавлять снимок экрана с портала, но я понимаю, о чем вы говорите. Трехуровневая иерархия имеет смысл. Чтобы использовать предполагаемые папки в контейнере больших двоичных объектов, мне просто нужно добавить капли с именами, включающими полный путь и имя файла. 01.03.2017
  • Почему-то я подумал, что вы неправильно понимаете учетную запись с контейнером, и поэтому попросил скриншот. Пока вы понимаете это, мы в порядке :). 01.03.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..