Поток произвольного доступа Azure Block Storage - PullRequest
1 голос
/ 25 апреля 2019

Существует ли способ создания объекта потока непосредственно в BLOB-объект Azure или BLOB-объект хранилища блоков Azure.

IE

var s = new AzureStream(blockObject)
ms.CopyTo(s);
s.position = 200;
ms.CopyTo(s);
s.Read...

Это позволило бы использовать некоторые удивительные взаимодействия, такие как хранение индексов базы данных в лазурном блобе и не нужно тянуть их локально.

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Не уверен, что это ответит на ваш вопрос, но вы можете прочитать диапазон байтов из большого двоичного объекта.При непосредственном использовании REST API вы можете указать байты, которые вы хотите прочитать, в заголовке Range или x-ms-range.

При использовании C # SDK вы можете использовать DownloadRangeToStream метод, что-то вроде:

        using (var ms = new MemoryStream())
        {
            long offset = 200;
            long bytesToRead = 1024;
            blob.DownloadRangeToStream(ms, offset, bytesToRead);
        }
0 голосов
/ 25 апреля 2019

Если ваш вопрос «могу ли я использовать потоки с BLOB-объектами Azure», чтобы избежать необходимости хранить весь размер большого двоичного объекта в памяти в любой момент времени, тогда ответ будет абсолютно положительным.

Например, при чтении блочных блобов, согласно этому ответу здесь , к блобам можно обращаться как к дескриптору потока с помощью таких методов, как CloudBlob.OpenReadAsync.Размер буфера по умолчанию составляет 4 МБ, но его можно настроить с помощью таких свойств, как StreamMinimumReadSizeInBytes .Здесь мы копируем поток BLOB-объектов в другой открытый поток вывода:

using (var stream = await myBlockBlob.OpenReadAsync(cancellationToken))
{
    await stream.CopyToAsync(outputStream);
}

Аналогично, вы можете записать поток непосредственно в хранилище BLOB-объектов:

 await blockBlob.UploadFromStreamAsync(streamToSave, cancellationToken);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...