2013-04-01 2 views
4

У меня есть таблица хранения Windows Azure, в которой я храню более 1000k + строк (объектов). Я хочу выполнить несколько совокупных функций в таблице, например, подсчет определенного столбца для конкретного условия, average, total, min, max и group by (как в обычном SQL). Как я могу это сделать в таблицах Windows Azure Storage?Совокупные функции на окнах таблиц хранения azure windows

ответ

4

Единственный способ довольно много, чтобы снести все ваши объекты и запускать агрегаты на них в памяти.

Если вы должны держать эту информацию в актуальном состоянии я бы хранить эти агрегаты в другом месте и обновлять их каждый раз, когда добавляется новый объект. Например, среднее значение равно sum/count, поэтому вы можете иметь элемент таблицы, в котором хранятся текущая сумма и счет, а когда вы добавляете новый объект, также обновляете значения суммы и количества.

Убедитесь использовать оптимистический параллелизм, так что вы можете поймать любые гонки условия и т.д. Если таблица сущности одни и те же ключ раздела, то вы можете даже сделать операцию на одной и той же сделки.

+1

Феликс, спасибо за ответ. Но сохранение всех объектов в локальной памяти замедляет обработку, а расчеты, взимаемые при каждом обновлении значения в другом месте, будут стоить накладные расходы. Не могу позволить себе такую ​​потерю. Как нет. увеличивается количество трансов, оно напрямую увеличивает мои заряды на облаке. Ищете какое-то другое решение ... –

+1

Мои два предложения были раздельными - вы либо потянете их вниз, либо выполните агрегаты ** или ** держите отдельный магазин с большими суммами и т. Д. - как правило, не оба.Единственным другим вариантом является использование хранилища RDMS (Sql Server), который предназначен для агрегатных функций, но тогда (по иронии судьбы) стоимость, вероятно, будет больше, и она не будет такой масштабируемой. – Felix

+1

Это в основном для применения отчетов по таблицам таблиц хранения Azure. В любом случае, чтобы достичь этого? –

0

Короткий ответ (насколько мне известно, по состоянию на июнь 2015 года), что вы не можете. См.: http://feedback.azure.com/forums/263030-documentdb/suggestions/6333963-add-support-for-aggregate-functions-like-count-su

Обновление. Информация, связанная выше, относится к DocumentDB, а не к хранилищу таблиц (doh) (DocumentDB, например ATS, также является реализацией NoSQL).

Это сказал (и RE опам вопрос) в значительной степени то же самое состояние относится к таблице Storage. Это предложение: «Add TableStorage LINQ query support for Select, Count and Contains», хотя и не совпадает с тем, что будет после OP, я предполагаю, что это движение в правильном общем направлении. К сожалению, несмотря на то, что кажется, что они начали внедрять эти функции, все еще есть много ручного кодирования, которое вам нужно было бы сделать самостоятельно.

Запрос Проекция Характеристика

Проекция относится к запрашивая подмножество сущности или сущностей свойств. Это аналогично выбору подмножества столбцов/свойств определенной таблицы при запросе в LINQ. Это механизм, который позволил бы приложение, чтобы уменьшить объем данных возвращаемых запросом, указав, что только определенные свойства возвращается в ответе. Для получения дополнительной информации вы также можете обратиться к Таблица Windows Azure: объекты запросов, таблица Windows Azure: запись LINQ Запросы, службы данных WCF: прогнозы запросов и OData: выберите Опция системного запроса ($ select).

Благодаря @abatishchev за вежливое указание на мою неспособность читать.

+0

Вы запутались между Azure Table Storage (ATS) и Azure DocumentDb (ADB), существуют разные рамки, верно? – abatishchev

+0

Нет, я этого не сделал - я предлагаю вам получить ваши факты прямо. Azure Table Storage - это реализация NoSQL, а не SQL-подобная. Ближайший, который я видел к желаемому ответу OP, - это люди, которые его просят. Ergo, если вы хотите выполнять такие действия, как «средний», тогда вам нужно написать его самостоятельно, как и ответ Феликса. –

+0

Я знаю, что ATS - это NoSQL. Но, тем не менее, OP спрашивает об ATS, и ваша ссылка касается ADB. – abatishchev

Смежные вопросы