Короткая версия: Можем ли мы читать из десятков или сотен разделов таблицы многопоточным образом, чтобы повысить производительность на порядки?
Длинная версия:
Мы работаем над системой, которая хранит миллионы строк в хранилище таблиц Azure. Мы разбиваем данные на небольшие разделы, каждый из которых содержит около 500 записей, что представляет дневную стоимость данных на единицу.
Поскольку в Azure нет функции «суммирования», для извлечения данных за год необходимо либо выполнить предварительное кэширование, либо сами суммировать данные в веб-роли или рабочей роли Azure.
Предполагая следующее:
- Чтение раздела не влияет на производительность другого
- Чтение раздела имеет узкое место в зависимости от скорости сети и поиска сервера
Затем мы можем предположить, что если бы мы хотели быстро суммировать много данных на лету (1 год, 365 разделов), мы могли бы использовать массивно параллельный алгоритм, и он почти идеально масштабировался бы по количеству потоков. Например, мы могли бы использовать параллельные расширения .NET с 50+ потоками и получить ОГРОМНОЕ повышение производительности.
Мы работаем над настройкой некоторых экспериментов, но я хотел посмотреть, было ли это сделано раньше. Поскольку сторона .NET в основном простаивает в ожидании операций с высокой задержкой, это кажется идеальным для многопоточности.