Usando "Cursores" para paginação no PostgreSQL [duplicado]

Duplicata Possível:
Como fornecer um cliente de API com 1.000.000 de resultados de banco de dados?

Perguntando-se sobre o uso deCursores é uma boa maneira de implementar "paging" usando o PostgreSQL.

O caso de uso é que temos mais de 100.000 linhas que gostaríamos de disponibilizar para nossos clientes da API. Achamos que uma boa maneira de fazer isso acontecer seria permitir que o cliente solicitasse as informações em lotes (páginas). O cliente poderia solicitar 100 linhas por vez. Devíamos retornar as 100 linhas, assim como o cursor, e quando o cliente estivesse pronto, eles poderiam solicitar as próximas 100 linhas usando o cursor que enviamos para elas.

No entanto, estou um pouco confuso sobre como os cursores funcionam e exatamente como e quando os cursores devem ser usados:

Os cursores exigem que uma conexão de banco de dados seja deixada em aberto?Os cursores são executados dentro de uma transação, bloqueando recursos até que sejam "fechados"?Existem outras "dicas" que eu não conheço?Existe outra maneira melhor de lidar com essa situação?

Muito obrigado!

questionAnswers(2)

yourAnswerToTheQuestion