从Datastore获取大型JSON

时间:2016-10-24 12:48:16

标签: google-app-engine google-cloud-datastore google-cloud-endpoints

我在Google Cloud Endpoints上创建了一个API,可以从Datastore中的单个实体获取所有数据。使用Objectify执行NoSQL请求(非常简单的一个:从实体中选择*)。

此数据存储区实体填充了200行(实体),每行(实体)都有相同类型的子实体列表:

  • 膳食:
    • 字符串标题
    • int prepareTime
    • 列表与LT;成分> listOfIngredients(子实体......)
    • ...

因此,当我获取API时,会返回一个JSON。它的大小约为 641Ko ,并且 17K行

当我查看API资源管理器时,它告诉我请求需要4秒才能执行: enter image description here

我想减少时间,因为它真的很高......我已经:

  • 将GAE实例增加到F2
  • 启用Memcache

它有点帮助,但我不认为这是最有效的方式......

我应该使用Big Query更快地生成JSON文件吗?或者可能有其他解决方案?

1 个答案:

答案 0 :(得分:5)

您是否需要单个请求中的所有实体?

  • 如果不是,则可以使用光标查询批量获取实体并根据需要显示,例如:一次获取20或30个实体,具体取决于你的需要。
  • 如果是
    • 您的用餐实体经常更改
      • 如果否,您可以生成一个json文件并将其存储在GCS中,每当您的实体发生更改时,您都可以更新json文件,以便在客户端上获取更快并使用 etag 标题,可轻松提取新内容
      • 如果是,   那么我认为批量提取只是拉动那么多实体的有效方法