2017-03-07 43 views
2

在此基础上讨论:https://www.youtube.com/watch?v=srfaKA2wJ0sGraphQL时间序列

我想实现在GraphQL的分析/时间序列查询像

query { 
    sales(date: { start: ‘2017-01-01’, end: ‘2018-01-01’ }) { 
     revenue(stat: mean) 
     daily: interval(by: day) { 
      date 
      revenue 
     } 
    } 
} 

收入(统计:平均值)是基于一个汇聚统计(在这种情况下的平均值) 每日是按小时/天/月的数据点列表

如何以高性能的方式使用mongodb或postgresql/mysql数据库来实现此目的?

回答

2

已经给这多一点的想法...

我不得不sales(date: { start: ‘2017-01-01’, end: ‘2018-01-01’ })决心的对象,看起来像这样:

{ 
    __type: 'SalesDateSelection', 
    start: ‘2017-01-01’, 
    end: '2018-01-01', 
} 

这是免费的,因为它只是一个愚蠢的对象持有它创建的参数,没有昂贵的数据访问在这里进行。

然后可以使用它们的参数和该父对象上的数据的组合来解析每个子字段(revenue(stat: mean)interval(by: day))。这可能是2个数据库查询?

+0

返回数据点列表的间隔部分怎么样?解析器应该在'interval'的每个子字段的'interval'上? –

+0

我期望将昂贵的数据加载到'interval'上,并且它返回一个包含'{date,revenue}'对象的数组。 –

+0

我当前的实现使得interval返回一个由date和arg组成的对象数组。并且每个子字段都有针对每个数据点的解析器,我将转到实例化视图以使其更快,帮助解决方法 –