【发布时间】:2017-03-06 06:10:40
【问题描述】:
我在 Google Cloud Endpoints 上创建了一个 API,用于从 Datastore 中的单个实体获取所有数据。 NoSQL 请求(一个非常简单的请求:Select * from Entity)是使用 Objectify 执行的。
这个数据存储实体由 200 行(实体)填充,每行(实体)都有一个相同类型的子实体列表:
-
餐食:
- 字符串标题
- int准备时间
- List listOfIngredients(子实体...)
- ...
所以当我获取 API 时,会返回一个 JSON。它的大小约为 641Ko,有 17K 行。
当我查看 API 资源管理器时,它告诉我请求需要 4 秒才能执行:
我想减少那个时间,因为它真的很高……我已经:
- 将 GAE 实例增加到 F2
- 启用内存缓存
这有点帮助,但我认为这不是最有效的方法......
我应该使用 Big Query 更快地生成 JSON 文件吗?或者也许还有其他解决方案?
【问题讨论】:
-
检查(在 appstats 或真实的 GAE 请求跟踪中)数据存储区/memcache RPC 调用本身的持续时间 - 因为它们发生在 GAE 后端,在您的应用程序之外,您无能为力。对于此类大数据,JSON 数据解码/编码操作可能会很长,请检查您的应用中是否存在任何不必要的此类操作。进一步升级实例类型应该有助于解决必要的问题。
-
还要查看投影(可能还有 keys_only?)查询以减少处理的数据量 - 如果您的请求响应中实际上不需要所有这些数据。见cloud.google.com/appengine/docs/python/ndb/projectionqueries
标签: google-app-engine google-cloud-datastore google-cloud-endpoints