¿Tener paginación disminuye la carga del servidor? (teoría)

11

Me preguntaba cuál es la razón detrás de la paginación. ¿Se usa porque disminuye la carga sobre los servidores ya que técnicamente limitaríamos la cantidad de filas devueltas por página?

Quería hacer algo sin paginación, pero dado que soy nuevo en esto (soy un aficionado) comencé a preguntarme si está bien técnicamente o no.

Sam Khan
fuente
¿Realmente desea esperar a que su navegador descargue y procese miles de filas de preguntas que no le interesan cuando hace clic en "Preguntas" en este sitio?
Jeremy
3
la paginación es más para humanos que DB's.
Malfist

Respuestas:

10

Hay varias razones para tener paginación, reducir la carga del servidor es solo una. Sin embargo, Stephen Orr plantea un punto válido: aún debe encontrar primero la cantidad de datos. Debe asegurarse de que esa consulta sea rápida y no cargue indebidamente su servidor.

Otras razones incluyen:

  • Reducir la cantidad de datos devueltos al cliente de una vez. Si tiene una gran cantidad de datos, esto podría llevar una cantidad considerable de tiempo y ocupar mucha memoria.
  • El usuario a menudo no está interesado en todos los datos, sino solo en los más recientes (por ejemplo). Al devolver solo un par de páginas de datos, no obtiene datos que el usuario nunca verá.

En ambos casos, no desea hacer que el usuario espere, ya sea por los datos que no van a ver o por todos los datos cuando podrían obtener uno con el procesamiento de algunos de ellos.

ChrisF
fuente
2
+1 Estaba escribiendo algo similar, pero fuiste demasiado rápido. Permítanme agregar que el contenido de paginación también se usa (ab) como una forma de mostrar más anuncios.
Yannis
También puede crear páginas sin tener que averiguar cuántas páginas hay, sabiendo que hay más datos de los que se ajustan a la página actual es lo suficientemente bueno.
Carlo Kuip
3

Varía según la implementación.

Acelerará la representación de una página, pero no necesariamente reducirá la carga en el servidor. La mayoría de los algoritmos de paginación ingenuos necesitan realizar una consulta primero para decidir cuántas páginas debe haber, luego consultar nuevamente para obtener el conjunto de resultados "paginado".

Steve Hill
fuente
La mayoría de los algoritmos de paginación ingenuos necesitan realizar una consulta primero para decidir cuántas páginas debería haber : Pero el estrés acumulado en la base de datos de la consulta de conteo y la consulta de resultado paginado es casi siempre mucho menor que una consulta de obtención de todo en un escenario común (con una base de datos relacional bien estructurada)
yannis
@YannisRizos, absolutamente. Acabo de ver el lado oscuro de esto, con una base de datos relacional increíblemente mal estructurada (muchas de nuestras consultas se unen a 7 u 8 tablas diferentes para obtener un resultado).
Steve Hill
@YannisRizos: define "estrés en la base de datos". Todavía estás empujando dos consultas a través de la línea. ¿Está paginando en la consulta (una súper selección de recuento de filas) o almacena en caché los resultados en otro nivel? Hay demasiadas variables para decir que hay demasiado estrés db. Yo diría que si se realiza correctamente en un sentido transaccional (¿permite una lectura sucia / recuento inconsistente en las páginas?) Aumenta el "estrés" / carga de db pero simplifica la programación.
Jé Queue
@Xepoch No dije demasiado estrés, solo que cualquier conteo más una selección limitada <selección completa. Y eso es solo para escenarios comunes en dbs relacionales bien estructurados.
Yannis
1

El mayor valor que obtiene de la paginación es mejorar la velocidad de su aplicación al:

1 - Limitación de datos transmitidos entre el cliente y el servidor. No tiene sentido leer 1000000 clientes si el usuario está buscando 10 de ellos.

2- Acelerar significativamente el rendimiento de la consulta al recuperar solo filas que pueden caber en la vista de un usuario. No tiene sentido leer 1000000 clientes si el usuario observará a los primeros 10 clientes.

3 - La paginación ayuda al proporcionar más datos nuevos. Si su aplicación muestra muchas filas de datos y el dominio de su aplicación requiere mucha actualización de las filas de datos en la tabla mostrada, es probable que para el momento en que vaya a la página 20 de la lista de páginas, los datos en algunas de las filas hubieran sido cambiado Piense en una aplicación que lea los precios de las acciones o las habitaciones disponibles en un hotel. No sirve de nada recuperar datos antiguos y colocarlos en el cliente.

La paginación es una estrategia que, en combinación con el filtrado y su comprensión de cómo el usuario final necesita del escenario particular (que se espera que conduzca a un buen diseño para satisfacer esta necesidad) mejorará en gran medida la aplicación, especialmente cuando varios usuarios acceden a la base de datos concurrentemente

La paginación no siempre es trivial para programar. En algunos casos es simple, pero a veces es muy complejo escribir para que la consulta SQL se ejecute sin realizar un escaneo completo de la tabla. Por supuesto, esto depende de sus índices, condición de filtro y su declaración Where.

Ninguna posibilidad
fuente
-4

La paginación, en mi opinión, es la madre de todas las optimizaciones prematuras. Está absolutamente bien escribir su sitio sin paginación.

Si después de la publicación descubre que está cargando demasiados datos en una llamada, o que sus usuarios tienen que esperar la información que desean porque está ocupado cargando datos que no desean, continúe y escriba una solución Ajax que solo carga la página a medida que las personas se desplazan hacia abajo (ver: Twitter, Tumblr, búsqueda de imágenes de Google).

Editar: El segundo párrafo anterior se escribió con la suposición de que una respuesta común sería "pero si sabe que va a paginar en algún momento, también puede hacerlo temprano, en lugar de perder el tiempo desarrollando algo que va a tirar lejos."

Además de ser la madre de todas las optimizaciones prematuras, creo que la paginación es una pesadilla UX y que hay mejores soluciones que no requerirían mucho desarrollo adicional en la parte superior de la página completa.

A pesar de la cantidad de votos negativos, dejo esta respuesta aquí porque mantengo el sentimiento, aunque puede que no haya sido mi mejor escrito.

pdr
fuente
55
Estoy totalmente en desacuerdo con esta afirmación, la paginación no es para optimizar la base de datos, se trata de proporcionar datos en trozos manejables a los humanos. ¿Serías capaz de leer Harry Potter si todo estuviera en una página? ¿Sería capaz de presentar impuestos si el Código Fiscal estuviera en una sola página?
Malfist
@Malfist: La única razón por la que no puede manejar esas cosas en una página es porque la página en sí sería demasiado grande. Esto no es un problema en las páginas web. Por lo tanto, los sitios que he citado han encontrado mejores soluciones para la paginación, mientras que Lolcats actualmente tiene casi 2000 páginas que son imposibles de paginar de manera sensata. Pero, es tu voto negativo, úsalo como quieras.
pdr
1
@Malfist: Además, dividir las cosas en trozos manejables es lo suficientemente justo si esos trozos no cambian. Si leo las páginas 1-4, entonces quiero volver la próxima vez y leer la página 5. Pero en MUCHOS casos, los sitios web paginados son listas de artículos, los más recientes primero. Entonces, cuando vuelvo a la página 5 más tarde, en realidad muestra la mitad de la página 3 y la mitad de la página 4 de la última vez que estuve allí porque hay una nueva página de 1.5 en la lista.
pdr
2
-1 Como estoy totalmente en desacuerdo con esto también. Ni siquiera estoy seguro de por dónde empezar a explicar por qué.
Craige
@Craige: Bueno, entonces está bien. Ciertamente no soy capaz de poner mucho argumento sobre eso.
pdr