Mongodb 为带有图表的仪表板构建RESTAPI

Mongodb 为带有图表的仪表板构建RESTAPI,mongodb,rest,google-bigquery,Mongodb,Rest,Google Bigquery,我今天来寻求您的帮助,因为我正在从事一个项目,该项目需要实现一个RESTAPI,该API可以查询MongoDB集合中大约8000万个指标(文档)。每个指标都遵循这个“模式”: 实际上,有一个JAVA内置的API,但它消耗了大量CPU和内存,有时会出现超时或响应需要花费大量时间,这就是需要重新制作它的原因。所以我的问题是: 像这样保存指标有多糟糕?是否存在保存此类数据的模式 您可以推荐哪种编程语言来开发这种端点 我们认为我们的问题很大程度上与数据库有关,因此我们正在考虑转向Google BigQu

我今天来寻求您的帮助,因为我正在从事一个项目,该项目需要实现一个RESTAPI,该API可以查询MongoDB集合中大约8000万个指标(文档)。每个指标都遵循这个“模式”:

实际上,有一个JAVA内置的API,但它消耗了大量CPU和内存,有时会出现超时或响应需要花费大量时间,这就是需要重新制作它的原因。所以我的问题是:

  • 像这样保存指标有多糟糕?是否存在保存此类数据的模式
  • 您可以推荐哪种编程语言来开发这种端点
  • 我们认为我们的问题很大程度上与数据库有关,因此我们正在考虑转向Google BigQuery。BigQuery能帮助获得更快的响应吗
  • 如果BigQuery不是一个很好的答案,那么您可以向这个用例推荐哪些其他工具
  • 我们正在努力实现的是这样的回应

    {
      "totalConversions": {
         "visitorPedestrianAverageConversion":5.847142857142858,
         "ticketVisitorAverageConversion":0
      },
      "series":[
        {
          "data":[126,124,100,111,74,99,141],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "data": [1925,2377,1873,1769,1067,2460,2139],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "yAxis":1,
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"column"
        },
        {
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "yAxis":2,
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"scatter"
        },
        {
          "yAxis":2,
          "data":[6.55,5.22,5.34,6.27,6.94,4.02,6.59],
          "id":"indicator_type",
          "type":"scatter"
        },
        {
          "yAxis":2,
          "data":[100,100,100,100,100,100,100],
          "id":"indicator_type",
          "type":"spline"
        }
      ],
      "categories":["Lun 02/03/2020","Mar 03/03/2020","Mié 04/03/2020","Jue 05/03/2020","Vie 06/03/2020","Sáb 07/03/2020","Dom 08/03/2020"]
    }
    

    Hi Sergio,Mongo为了获取正确的文档而扫描整个表,这是CPU负载吗?你试过为一些列编制索引吗?BigQuery当然可以是一个更快的查询引擎(您不需要管理),而且您基本上可以围绕自己的API构建一个包装器,以简化您的用例。@Sergio Fonseca,关于前两个问题,我认为这取决于您作为开发人员的经验。至于问题3和4,BigQuery是一个非常好的选择,因为它是一个大规模的非ops数据wharehouse产品,主要针对您的数据运行SQL查询。您可以查看BigQuery价格。还有它的加载方法?向其中传输数据。你还有其他问题吗?@FKrauss我想CPU负载是因为JAVA,我的数据库在另一台服务器上。我为一些专栏编入了索引,但我只获得了一些文章。@Alexandre Moraes是的,我还有一个问题。使用BigQuery开发RESTAPI是一种好的实践吗?我的意思是,我想要快速的回复,我不知道每天会有多少个请求,但性能和价格是我需要关心和平衡的。。。如果您知道任何像这样使用BigQuery的用例,那就太好了。谢谢你们的回答!对于仪表板和BigQuery,最好的答案是“BI引擎”——它只适用于DataStudio(目前)
    {
      "totalConversions": {
         "visitorPedestrianAverageConversion":5.847142857142858,
         "ticketVisitorAverageConversion":0
      },
      "series":[
        {
          "data":[126,124,100,111,74,99,141],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "data": [1925,2377,1873,1769,1067,2460,2139],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "yAxis":1,
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"column"
        },
        {
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"spline"
        },
        {
          "yAxis":2,
          "data":[0,0,0,0,0,0,0],
          "id":"indicator_type",
          "type":"scatter"
        },
        {
          "yAxis":2,
          "data":[6.55,5.22,5.34,6.27,6.94,4.02,6.59],
          "id":"indicator_type",
          "type":"scatter"
        },
        {
          "yAxis":2,
          "data":[100,100,100,100,100,100,100],
          "id":"indicator_type",
          "type":"spline"
        }
      ],
      "categories":["Lun 02/03/2020","Mar 03/03/2020","Mié 04/03/2020","Jue 05/03/2020","Vie 06/03/2020","Sáb 07/03/2020","Dom 08/03/2020"]
    }