Хранение лазурного стола - рассчитать или сохранять итоги

StackOverflow https://stackoverflow.com/questions/4272725

  •  28-09-2019
  •  | 
  •  

Вопрос

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

Пара опций у меня есть хотя из:

  • Используйте структуру ключа разбиения / строки и динамически выполнять сумму
    например, 20101101_ITEMID_XXXXXXXXX (X = GUID или TIME, чтобы сделать уникальным), то я бы запросил данные на месяцы, используя часть ключа строки (itemId_201011), и в общей сложности на свойстве «Стоимость» в типе.

    Как удалось управлять пределом запроса 1000 записей? (т.е. если в течение дня на день более 1000 транзакций на общую сумму было бы трудно)

  • Используйте другую запись для хранения всего на день, и обновите это, поскольку добавлены новые записи
    Например, ключ строки «20101101_ITEMID_TOTAL», затем запрашивать его на дни итоги, или месяцы или годы итоговы.

Какой лучший способ сделать это? Есть ли «лучшая практика» для этого типа требований, используя хранение таблицы?

Это было полезно?

Решение

Я не уверен, что такое лучшая практика, но я могу прокомментировать, что у нас есть подобная ситуация с AzureWatch. и определенно используют предварительно агрегированные значения в таблицах.

В основном по причинам эффективности - хранение таблицы не мгновенно, даже если вы запрашиваете один раздел-ключ и диапазон в строке. Время, необходимое для загрузки записей, несколько значительно, и в зависимости от записей могут появиться CPU UP, потому что он должен сделать сериализовать данные на объекты. Если вы отправитесь на хранение таблицы несколько раз из-за 1000 лимита записи, вы также будете также платить.

Некоторые другие мысли рассмотреть:

Ваши агрегированные итоги когда-либо менялись? Если нет, то это другое подтолкнуть к предварительной агрегации

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top