Pull to refresh

Comments 10

Ваш код не сильно сложен, но если Вас не затруднит — отформатируйте его, пожалуйста.
Да тут, в общем-то, ничего сложного и не может быть, просто подход, на который нигде не натыкался в инете. А за замечание спасибо, поправлю, хабраредактор поел пробелы похоже.
Да это Вам спасибо, буду познавать хабрамир методом проб и ошибок и их последующего исправления!
Ваш подход принципе имеет место быть. Главное не забывать про ограничения в работе с таблицами и блобами.

С блобами особо проблем нету если не загружать более 50Mb в секунду. Ну и максимальный размер блоба — 2Gb.

А с таблицами все интереснее — можно заливать не более 500 объектов в секунду в одну партицию (PartitionKey). Поэтому следует очень акуратно выбирать структуру таблици и тогда можно писать вплоть до нескольких тысяч объектов в секунду, главное не превышать ограничение для одной партиции.

Throttling распространяется сразу на весь аккаунт (чтение и запись всех блобов и таблиц), так что надо быть придельно аккуратным в этом вопосе.

Плюс у таблиц есть возможность писать сразу несколько объектов одним запросом (batching), на это тоже стоит обратить внимание.
На самом деле, в нашей задаче запись в таблицы не так важна, в основном будет чтение, только при регистрации нового пользователя ему будут записываться в его партишн дефолтные настройки, а дальше он уже будет добавлять по одному объекту. Что касается размера блоба, MSDN считает вот так:

> Each block can be a maximum of 4 MB in size. The maximum size for a block blob in version 2009-09-19 is 200 GB, or up to 50,000 blocks.

Это что касается Block Blob-ов и:

> The maximum size for a page blob is 1 TB. A page written to a page blob may be up to 1 TB in size.

Это что касается Page Blob-ов, так что, честно говоря, не совсем понимаю, откуда взяты 2 GB размер блоба.

А вообще, спасибо за интересное и полезное замечание.
Прошу прощения, писал по памяти. Действительно 200Gb, а не 2Gb (для BlockBlob).
Ну… это типа и есть идея «файловой системы» :) Таблицы — информацию о «файлах» (типа MFT) хранить в быстро-индексируемых структурах, а сами данные хранятся где-то в далеко-доступных местах.

В прицнипе все логично.

Интересно, а можно ли использовать модифицированный алгоритм B+-деревьев чтоб хранить «листья» в Blob, а само дерево в Table… хотя тут уже надо думать об эффективной организации «индекса», но зная какие именно запросы будут выполнятся можно найти наиболее подходящую структуру так, чтоб в результате запроса мы бы получили просто набор блобов из которых надо вычитать результат.
Если я правильно понял, то ограничение о размере записи Table в 1 Мб, о котором вы говорили, относится к ограничению эмулятора. На боевом Azure 4 Мб на батч, т.е. значит и на максимальный размер одной записи.
Sign up to leave a comment.

Articles