Краткая версия: Можно ли читать из десятков или сотен табличных разделов многопоточным способом для увеличения производительности на порядки?Производительность для хранения лазурных таблиц из массивно-параллельного чтения с резьбой
Длинная версия: Мы работаем над системой, которая хранит миллионы строк в хранилище таблиц Azure. Мы делим данные на небольшие разделы, каждая из которых содержит около 500 записей, что представляет собой дневную стоимость данных для единицы.
Поскольку у Azure нет функции «суммы», чтобы вытащить данные за год, мы либо должны использовать некоторое предварительное кэширование, либо суммировать данные сами в сети Azure или рабочей роли.
Предполагая следующее: - Чтение раздела не влияет на производительность другого - Чтение раздела имеет узкое место в зависимости от скорости сети и поиска сервера
Затем мы можем сделать предположение, что, если мы хотим чтобы быстро суммировать много данных «на лету» (1 год, 365 разделов), мы могли бы использовать массивный параллельный алгоритм, и он будет почти идеально масштабироваться по количеству потоков. Например, мы могли бы использовать параллельные расширения .NET с 50 + потоками и получить ОГРОМНОЕ повышение производительности.
Мы работаем над созданием некоторых экспериментов, но я хотел посмотреть, было ли это сделано раньше. Поскольку сторона .NET в основном работает без ожидания при работе с высокой задержкой, это кажется идеальным для многопоточности.
У вас есть комментарий к этому 6 лет спустя? – mayu
Да, это совершенно хорошая идея, тем более, что цели масштабируемости со временем увеличиваются. Взгляните на эту страницу, чтобы понять ограничения: https://docs.microsoft.com/en-us/azure/storage/storage-scalability-targets –