Хранение лазурного стола - рассчитать или сохранять итоги
-
28-09-2019 - |
Вопрос
Я смотрю в использование хранилища стола для хранения некоторых транзакционных данных, однако мне необходимо поддержать некоторые отчеты о нем очень высокого уровня, в основном итогов в день / месяц.
Пара опций у меня есть хотя из:
Используйте структуру ключа разбиения / строки и динамически выполнять сумму
например, 20101101_ITEMID_XXXXXXXXX (X = GUID или TIME, чтобы сделать уникальным), то я бы запросил данные на месяцы, используя часть ключа строки (itemId_201011), и в общей сложности на свойстве «Стоимость» в типе.Как удалось управлять пределом запроса 1000 записей? (т.е. если в течение дня на день более 1000 транзакций на общую сумму было бы трудно)
Используйте другую запись для хранения всего на день, и обновите это, поскольку добавлены новые записи
Например, ключ строки «20101101_ITEMID_TOTAL», затем запрашивать его на дни итоги, или месяцы или годы итоговы.
Какой лучший способ сделать это? Есть ли «лучшая практика» для этого типа требований, используя хранение таблицы?
Решение
Я не уверен, что такое лучшая практика, но я могу прокомментировать, что у нас есть подобная ситуация с AzureWatch. и определенно используют предварительно агрегированные значения в таблицах.
В основном по причинам эффективности - хранение таблицы не мгновенно, даже если вы запрашиваете один раздел-ключ и диапазон в строке. Время, необходимое для загрузки записей, несколько значительно, и в зависимости от записей могут появиться CPU UP, потому что он должен сделать сериализовать данные на объекты. Если вы отправитесь на хранение таблицы несколько раз из-за 1000 лимита записи, вы также будете также платить.
Некоторые другие мысли рассмотреть:
Ваши агрегированные итоги когда-либо менялись? Если нет, то это другое подтолкнуть к предварительной агрегации
Вам нужно будет продолжать агрегированные значения после того, как необработанные данные исчезнут или вам когда-нибудь нужно будет очистить необработанные данные? Если да, то еще один подталкивает к предварительной агрегации