大数据集的指标数据汇总架构设计

时间:2018-09-02 08:26:06

标签: database-design nosql schema rethinkdb

在我目前正在从事的项目中,我有一些原始指标,这些指标与信号跟踪有关,如下所示:

表:指标

{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}

由于每天有数以百万计的指标表记录,因此查询和汇总记录以提取结果似乎效率低下。

我已经阅读了很多有关每天/每周/每月的数据汇总的信息,但是对于如何滚动架构仍然感到困惑。我想将数据提取为:

从10月到11月,对于ID为1的项目,总体命中范围是多少,排名前10位的类型是什么? 对于ID为1的项目A型,已经发生了多少次,最大范围是什么?

我的第一个想法是将数据滚动为:

{
  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,但我认为相同的原则也适用于通用模式设计。

0 个答案:

没有答案