Разработка схемы свертки данных метрик для большого набора данных - PullRequest
0 голосов
/ 02 сентября 2018

В проекте, над которым я сейчас работаю, у меня есть коллекция необработанных метрик, эти метрики о отслеживании сигналов:

Таблица: показатели

{timestamp: 1535875518111, project_id: 1, type: 'A', strength: 100}, 
{timestamp: 1535875528111, project_id: 2, type: 'B', strength: 80}, 
{timestamp: 1535875528101, project_id: 1, type: 'B', strength: 50}

Поскольку в таблице метрик в день буквально миллионы записей, кажется неэффективным запрашивать и объединять записи для извлечения результатов.

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

С октября по ноябрь и для проекта с идентификатором 1, каков общий диапазон попаданий и 10 лучших типов? Для типа А проекта с идентификатором 1, сколько было выполнено вхождений и какой максимальный диапазон?

Моя первая мысль сводила данные как:

{
  day: 21,
  month: 10,
  year: 2018,
  project_id: 1,
  types: {
    'A': {
      hits: 100,
      strengths: {
        '100': 1,
        '200': 2
      }
    },
    'B': {
      hits: 20,
      strengths: {
        '2': 1,
        '5': 3
      }
    }
  }
}

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

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

...