Java 微服务环境下Postgres大数据动态查询响应分页

Java 微服务环境下Postgres大数据动态查询响应分页,java,spring,postgresql,spring-boot,spring-data,Java,Spring,Postgresql,Spring Boot,Spring Data,我们正在重新设计一个遗留应用程序,它使用游标查询大型数据,并在经过一些处理后将每个批量大小的数据写入文件系统。 现在,我们将此查询和处理拆分为两个基于Docker/kubernetes/Spring Boot的微服务,并使用Postgres作为数据源 我们的挑战是对大型查询响应进行分页。出于性能原因,我们考虑使用标准选项,如Skip()、Limit()。此外,我们的请求查询对于每个请求都是动态的,响应键计数可以从1到1500列。用户可以为请求的列键传递不同的排序顺序(A列asc、B列Desc、C

我们正在重新设计一个遗留应用程序,它使用游标查询大型数据,并在经过一些处理后将每个批量大小的数据写入文件系统。 现在,我们将此查询和处理拆分为两个基于Docker/kubernetes/Spring Boot的微服务,并使用Postgres作为数据源

我们的挑战是对大型查询响应进行分页。出于性能原因,我们考虑使用标准选项,如Skip()、Limit()。此外,我们的请求查询对于每个请求都是动态的,响应键计数可以从1到1500列。用户可以为请求的列键传递不同的排序顺序(A列asc、B列Desc、C列Desc等)所以其他建议的方法,如键集分页可能不起作用


我们正在寻找一些建议,如响应流,以便在收到示例100记录的响应后,我们的数据服务将响应传递给processor microservice,该服务可以写入文件系统。

您可以使用游标,保持数据库事务打开,并批量获取结果,而不是运行多个查询。这就是游标的用途。我们可以使用游标,但挑战是在我们的请求查询中,我们要求对不同的请求列进行不同的排序,这是动态查询。因此,我们不确定使用哪一个键作为游标。我们希望按照下面的松弛团队方法在游标响应之上开发API响应。您不需要键创建游标。只需为动态查询声明游标,包括
orderby
子句,然后批量获取结果。