gpt4 book ai didi

sql - REST API 关系,模块化(多个请求)与 SQL 连接的聚合(单个请求)获取的优缺点

转载 作者:行者123 更新时间:2023-11-29 11:42:37 24 4
gpt4 key购买 nike

据我所知,REST API 通常以模块化方式实现。例如,假设我们在包含 RSS 提要的数据库上构建 API,然后获取提要和项目将需要执行以下操作:

+-----------+--------------------+
| REST | SQL |
+-----------+--------------------+
| GET /feed | SELECT * FROM feed |
+-----------+--------------------+

后跟类似的东西

+-------------------------+-----------------------------------------------+
| REST | SQL |
+-------------------------+-----------------------------------------------+
| GET /feed/1/item | SELECT * FROM item WHERE feed_id = 1 |
| GET /item?feed_id=1,2,3 | SELECT * FROM item WHERE feed_id IN (1, 2, 3) |
+-------------------------+-----------------------------------------------+

如果你想一次做一个,或者分别做一次。


我想知道的是,减少这种模块化并使用 JOIN 和聚合来处理它是否有任何优势,例如,如果您事先知道您需要一个聚合,您会改为使用

+--------------+---------------------------------+
| REST | SQL |
+--------------+---------------------------------+
| GET /feedagg | SELECT |
| | f.*, |
| | json_agg(i.*) as items |
| | FROM feed f |
| | JOIN item i USING (feed_url) |
| | GROUP BY f.feed_url |
| | ORDER BY f.title ASC |
+--------------+---------------------------------+

它是更多的 SQL,但另一方面,它只是一个 SQL 查询和一个 API 请求。


我知道这两种方法可以共存,因为我将它们放在不同的路线下,但我不清楚第二种方法是否真的比第一种更好。由于请求/查询计数较少,它似乎更好,但我找不到详细说明这方面的任何资源。

关于第一种模块化方法的示例数不胜数,但相比之下,人们在网上严重缺乏人们使用 JOIN + 聚合的示例。我没有经验,而且我知道很多因素,包括我可能没有想到的因素,都在起作用。

可能性能差异可以忽略不计,但无论如何,我想对这两种方法进行优缺点分析。有人可以为我澄清一下吗?

最佳答案

一般 1 个 API 查询会比 2 个快,因为准备 2 个单独的查询会产生开销,但您是否会受益取决于 API 的使用方式。

如果您的用户不打算通过 GET/feedagg 方法使用 API,那么性能上不会有明显的好处。

您所说的模块化是 REST 的关键原则,它将您的 API 划分为逻辑资源。务实地说,坚持使用模块化方法,除非您的 API 总是以第二种方式使用,在这种情况下,这样做可以实现它提供的性能优势。

这是关于实用的 RESTful API 开发的重要资源:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#ssl

关于sql - REST API 关系,模块化(多个请求)与 SQL 连接的聚合(单个请求)获取的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43729695/

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