Comments 10
Ваш код не сильно сложен, но если Вас не затруднит — отформатируйте его, пожалуйста.
Ваш подход принципе имеет место быть. Главное не забывать про ограничения в работе с таблицами и блобами.
С блобами особо проблем нету если не загружать более 50Mb в секунду. Ну и максимальный размер блоба — 2Gb.
А с таблицами все интереснее — можно заливать не более 500 объектов в секунду в одну партицию (PartitionKey). Поэтому следует очень акуратно выбирать структуру таблици и тогда можно писать вплоть до нескольких тысяч объектов в секунду, главное не превышать ограничение для одной партиции.
Throttling распространяется сразу на весь аккаунт (чтение и запись всех блобов и таблиц), так что надо быть придельно аккуратным в этом вопосе.
Плюс у таблиц есть возможность писать сразу несколько объектов одним запросом (batching), на это тоже стоит обратить внимание.
С блобами особо проблем нету если не загружать более 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 размер блоба.
А вообще, спасибо за интересное и полезное замечание.
> 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 размер блоба.
А вообще, спасибо за интересное и полезное замечание.
Ну… это типа и есть идея «файловой системы» :) Таблицы — информацию о «файлах» (типа MFT) хранить в быстро-индексируемых структурах, а сами данные хранятся где-то в далеко-доступных местах.
В прицнипе все логично.
Интересно, а можно ли использовать модифицированный алгоритм B+-деревьев чтоб хранить «листья» в Blob, а само дерево в Table… хотя тут уже надо думать об эффективной организации «индекса», но зная какие именно запросы будут выполнятся можно найти наиболее подходящую структуру так, чтоб в результате запроса мы бы получили просто набор блобов из которых надо вычитать результат.
В прицнипе все логично.
Интересно, а можно ли использовать модифицированный алгоритм B+-деревьев чтоб хранить «листья» в Blob, а само дерево в Table… хотя тут уже надо думать об эффективной организации «индекса», но зная какие именно запросы будут выполнятся можно найти наиболее подходящую структуру так, чтоб в результате запроса мы бы получили просто набор блобов из которых надо вычитать результат.
Если я правильно понял, то ограничение о размере записи Table в 1 Мб, о котором вы говорили, относится к ограничению эмулятора. На боевом Azure 4 Мб на батч, т.е. значит и на максимальный размер одной записи.
Sign up to leave a comment.
Windows Azure: Blob и Table дополняют друг друга