Aquí está el problema que estoy tratando de resolver:¿Cómo implementa la clasificación y paginación en datos distribuidos?
Necesito ser capaz de mostrar una tabla paginada, clasificada de datos que se almacena en varios fragmentos de la base de datos.
La localización y la clasificación son problemas bien conocidos que la mayoría de nosotros puede resolver de muchas maneras cuando los datos provienen de una sola fuente. Pero si divide los datos en fragmentos o usa una base de datos de documentos distribuidos o DHT o cualquier otro que prefiera de NoSQL, las cosas se complican.
Aquí tenemos una imagen simple de un muy pequeño conjunto de datos:
Fragmento | Datos
1 | A
1 | D
1 | G
2 | B
2 | E
2 | H
3 | C
3 | F
3 | Me
Ordenado en páginas (tamaño de página = 3):
página | Datos
1 | A
1 | B
1 | C
2 | D
2 | E
2 | F
3 | G
3 | H
3 | Me
Y si hemos querido mostrar la página de usuario 2, nos gustaría volver:
D
E
F
Si el tamaño de la tabla en cuestión es algo así como 10 millones de filas , o 100 millones, no puede simplemente desplegar todos los datos en un servidor web/de aplicaciones para ordenarlos y devolver la página correcta. Y obviamente no puede dejar que cada fragmento individual clasifique y page su propia porción de los datos porque los fragmentos no se conocen entre sí.
Para complicar las cosas, los datos que necesito presentar no pueden estar muy desactualizados, por lo que no es práctico calcular previamente un conjunto de tipos útiles y almacenar los resultados para su posterior recuperación.
1 y 3 no son factibles para mí, pero 2 son interesantes. Voy a jugar con esa idea hoy y ver qué puedo hacer. –
Tengo un prototipo de 2 trabajando y parece una buena solución. Clasificar en campos con baja cardinalidad agrega algunas complicaciones, y es un poco lento debido a las consultas de recuento repetido, pero utiliza muy pocos recursos del sistema. –
¡Encantador de escuchar! Para mí, esto fue solo un ejercicio teórico, me alegro de que funcionó cuando se implementó. –