从数据存储中获取大型 JSON
Fetch large JSON from Datastore
我在 Google Cloud Endpoints 上创建了一个 API,它从 Datastore 中的单个实体获取所有数据。 NoSQL 请求(一个非常简单的请求:Select * 来自实体)是使用 Objectify 执行的。
此数据存储区实体填充了 200 行(实体),每行(实体)都有一个 children 同类实体的列表:
- 餐点:
- 字符串标题
- int 准备时间
- List< Ingredient > listOfIngredients(child 个实体...)
- ...
所以当我获取 API 时,返回 JSON。它的大小约为 641Ko 并且有 17K 行.
当我查看 API 资源管理器时,它告诉我请求需要 4 秒才能执行:
我想减少那个时间,因为它真的很高......我已经:
- 将GAE实例增加到F2
- 启用内存缓存
有点帮助,但我认为这不是最有效的方法...
我是否应该使用 Big Query 更快地生成 JSON 文件?或者也许还有其他解决方案?
您是否需要在单个请求中包含所有实体?
- 如果不是,那么您可以使用 Cursor Queries 批量获取实体并根据需要显示,例如:fetch 20或一次 30 个实体,具体取决于您的需要。
- 如果是,
- 你的膳食实体是否经常变化
- 如果否,您可以生成一个json文件并将其存储在GCS中,每当您的实体发生变化时,您都可以更新json文件,这样在客户端抓取就会快很多,并且使用 etag header,可以轻松提取新内容
- 如果是,
然后我认为批量获取是拉取那么多实体的唯一有效方法
我在 Google Cloud Endpoints 上创建了一个 API,它从 Datastore 中的单个实体获取所有数据。 NoSQL 请求(一个非常简单的请求:Select * 来自实体)是使用 Objectify 执行的。
此数据存储区实体填充了 200 行(实体),每行(实体)都有一个 children 同类实体的列表:
- 餐点:
- 字符串标题
- int 准备时间
- List< Ingredient > listOfIngredients(child 个实体...)
- ...
所以当我获取 API 时,返回 JSON。它的大小约为 641Ko 并且有 17K 行.
当我查看 API 资源管理器时,它告诉我请求需要 4 秒才能执行:
我想减少那个时间,因为它真的很高......我已经:
- 将GAE实例增加到F2
- 启用内存缓存
有点帮助,但我认为这不是最有效的方法...
我是否应该使用 Big Query 更快地生成 JSON 文件?或者也许还有其他解决方案?
您是否需要在单个请求中包含所有实体?
- 如果不是,那么您可以使用 Cursor Queries 批量获取实体并根据需要显示,例如:fetch 20或一次 30 个实体,具体取决于您的需要。
- 如果是,
- 你的膳食实体是否经常变化
- 如果否,您可以生成一个json文件并将其存储在GCS中,每当您的实体发生变化时,您都可以更新json文件,这样在客户端抓取就会快很多,并且使用 etag header,可以轻松提取新内容
- 如果是, 然后我认为批量获取是拉取那么多实体的唯一有效方法
- 你的膳食实体是否经常变化