gpt4 book ai didi

ios - 多个 RESTful Web 服务调用与 MySQL JOIN

转载 作者:行者123 更新时间:2023-11-29 13:12:26 25 4
gpt4 key购买 nike

我目前正在为我当前的一个 iPhone 应用程序使用 node.js 构建一个 RESTful 网络服务。目前,系统工作如下:

  • 客户端向 node.js 服务器发出请求,服务器进行适当的计算和 MySQL 查找,并返回数据
  • 客户端的 react 器处理响应并更新 UI

我一直在思考的一件事是对我的服务器进行多个 API 调用与在 MySQL 数据库中执行多个连接语句然后返回一个构造对象的一次调用之间的差异(在性能和最佳实践方面) .

例如:假设我正在加载要在 UI 中显示的用户配置文件。用户有个人资料图片、基本信息和新闻源项目。使用选项一,我将执行以下操作:

  • 向服务器发出 getUser 请求,服务器会像这样在数据库中进行查询:
    Select * from user join user_info on user.user_id=user_info.user_id left join user_profile_picture on user_profile_picture.user_id=user.user_id
    然后服务器将返回一个构造的用户对象,其中包含来自每个表的信息
  • 客户端等待服务器的响应并立即更新所有内容

选项 2 是:

  • 向服务器发出 3 个异步请求:
    • 获取用户
    • 获取用户信息
    • 获取用户配置文件
  • 无论何时收到任何请求,都会更新 UI

所以鉴于这 2 个选项,我想知道哪个会提供更好的可扩展性。

目前,出于以下原因,我正在考虑使用选项 2:

  1. 每个异步请求都将比选项 a 中的查询更快,因此更快地向用户显示内容
  2. 我也在集成 Memecache,我觉得这 3 个单独的调用将更容易缓存特定结果(例如,不缓存用户配置文件,而是缓存用户、user_info 和 user_profile_picture)。

有什么想法或经验吗?

最佳答案

我认为这里的关键问题是这些 API 调用是否总是一起进行。如果是,则设置单个端点并执行连接更有意义。但是,如果不是这种情况,那么您应该将其分开。

现在,您当然可以使用查询语法来指定特定端点是否应为您提供更多数据并将其与连接结合。这确实需要更多的输入卫生,但这可能是值得的,因为这样您就可以最大限度地减少请求并仍然获得一个适应性强的系统。

在服务器端,除非您一次处理数千行,否则您的两种方法中的任何一种都不太可能比另一种明显慢

关于ios - 多个 RESTful Web 服务调用与 MySQL JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com