Saltar al contenido

¿Paginación en CouchDB?

Te recomendamos que pruebes esta solución en un ambiente controlado antes de pasarlo a producción, un saludo.

Solución:

La Guía de CouchDB tiene una buena discusión sobre la paginación, que incluye muchos códigos de muestra, aquí: http://guide.couchdb.org/draft/recipes.html#pagination Aquí está su algoritmo:

  • Petición rows_per_page + 1 filas de la vista
  • Mostrar rows_per_page filas, almacene la última fila como next_startkey
  • Como información de la página, mantenga startkey y next_startkey
  • Utilizar el next_* valores para crear el siguiente enlace, y usar los otros para crear el enlace anterior

NB: La forma correcta de obtener páginas en CouchDB es especificando un inicio key, no es un índice inicial como podrías pensar. Pero como sabes que key para empezar la segunda página? La solución inteligente: “En lugar de solicitar 10 filas para una página, solicita 11 filas, pero muestra solo 10 y usa los valores en la fila 11 como clave de inicio para la página siguiente”.

Si espera que se emitan varios documentos idénticos keystendrás que usar startdocid además de startkey para paginar correctamente. La razón es que startkey solo ya no será suficiente para identificar de forma única una fila. Esos parámetros son inútiles si no proporciona un startkey. De hecho, CouchDB primero mirará el startkey parámetro, entonces utilizará el startdocid parámetro para redefinir aún más el comienzo del rango si múltiples filas iniciales potenciales tienen el mismo key pero ID de documentos diferentes. Lo mismo para el enddocid.

La API de vista HTTP de CouchDB brinda un amplio margen para realizar la paginación de manera eficiente.

El método más simple usaría startkey y count. Count es el número máximo de entradas que CouchDB devolverá para esa solicitud de vista, algo que depende de su diseño, y startkey es donde desea que CouchDB comience. Cuando solicite la vista, también le dirá cuántas entradas hay, lo que le permitirá calcular cuántas páginas habrá si desea mostrárselo a los usuarios.

Entonces, la primera solicitud no especificaría una clave de inicio, solo el recuento de la cantidad de entradas que desea mostrar. A continuación, puede anotar la key de la última entrada devuelta y usar eso como el inicio key para la página siguiente. En este formulario simple, obtendrá una superposición, donde la última entrada de una página es la primera de la siguiente. Si esto no es deseable, es trivial simplemente no mostrar la última entrada de la página.

Un método más simple para hacer esto es usar el parámetro skip para calcular el documento de inicio de la página; sin embargo, este método debe usarse con precaución. El parámetro skip simplemente hace que el motor interno no devuelva las entradas sobre las que está iterando. Si bien esto proporciona el comportamiento deseado, es mucho más lento que encontrar el primer documento de la página key. Cuantos más documentos se omitan, más lenta será la solicitud.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *