Какой лучший алгоритм подсчета для данных журнала Azure Table Storage? - PullRequest
1 голос
/ 12 июня 2011

Я использую Windows Azure и впервые захожу в хранилище таблиц Azure, чтобы сделать мое приложение масштабируемым для трафика с высокой плотностью загрузки. Моя цель проста - регистрировать каждый входящий запрос по набору параметров и для подсчета количества или суммирования данных из журнала. В этом я предложил 2 варианта, и я хотел бы знать, что более опытные люди считают лучшим вариантом.

Вариант 1: использовать логические значения и считать «истинные» строки

Поскольку каждая строка записывается один раз и никогда не обновляется, сохраняйте каждый параметр подсчета как логическое значение и в потоке суммирования, извлекайте строки в запросе и выполняйте подсчет для каждого набора истинных значений, чтобы получить итоговые значения для каждого параметра. Это позволило бы сэкономить место при большом количестве параметров, поскольку я представляю, что таблицы Azure хранят bool как одноразрядное значение.

Вариант 2: использовать значения Int и суммировать строки

Каждая строка записана, как указано выше, но вместо этого каждый столбец параметра добавляется в качестве значения 0 или 1. Суммирование может происходить путем запроса всех строк и использования операции Sum для каждого столбца. Это будет быстрее, потому что суммирование может произойти в одном запросе, но я теряю что-то при хранении 32-битных целых чисел для логического значения?

Я думаю, что на данный момент для скорости запросов лучше всего подходит вариант 2, но я хочу спросить вслух, чтобы узнать мнения об аспектах хранения и извлечения, потому что я не очень хорошо знаю таблицы Azure (и я надеюсь, что это помогает другим людям в будущем).

1 Ответ

3 голосов
/ 12 июня 2011

Табличное хранилище не выполняет агрегацию на стороне сервера, поэтому для обеих опций вы в конечном итоге извлекаете все строки (со всеми их свойствами) локально и считаете / суммируете Это делает их обоих одинаково ужасными для производительности. : -)

Я думаю, что вам лучше держать промежуточный итог, а не пересчитывать все каждый раз. Мы говорили о нескольких шаблонах для этого в Cloud Cover Episode 43: http://channel9.msdn.com/Shows/Cloud+Cover/Cloud-Cover-Episode-43-Scalable-Counters-with-Windows-Azure

...