Los chunks son muy importantes cuando trabajas con cantidades de datos enormes y necesitas traer demasiados datos,sin duda creo que es una de las mejores implementaciones de Laravel.
Introducción: comprende el concepto de ORM y el papel de Eloquent en Laravel
Qué aprenderás sobre eloquent ORM
¿Qué es un ORM y para qué sirve Eloquent?
Diseña la base de datos de tu proyecto con Laravel y Eloquent
Diseña un banco de proyectos y su base de datos
Crea un proyecto Laravel y configura una base de datos MySQL
Generar el modelo para la tabla de proyectos
Diferencias entre Modelo y Migración
Convenciones para los modelos
Atributos por defecto en un modelo
Realiza consultas de datos con Eloquent
Estructura de modelos, rutas y controladores para consultar datos
Chunk: fragmentando múltiples registros
Métodos de búsqueda y Not Found Exceptions
Construye un CRUD en Laravel con Eloquent
Cómo insertar nuevos registros
Actualizando registros de la base de datos
Consideraciones y buenas prácticas para eliminar datos
Consultas avanzadas con Eloquent
Query Scopes
Query Builder
Conclusiones
Cierre del curso
Lectura
En la clase anterior aprendimos a usar el modelo Project para traer datos de la tabla projects de una manera bastante simple, ahora imagina que esta tabla creció en registros y ahora se tarda mucho tiempo trayendo, por ejemplo, 900 registros, el rendimiento de la aplicación baja, se puede morir el servidor y ya no logramos tener todos los datos.
Para evitar este problema tenemos un comando que nos va a traer los registros por secciones, este es chunk, al cual le pediremos un bloque menor de registros y fragmentará la cantidad de valores hasta tenerlos todos.
Esto lo logramos implementando un Closure que procesará los datos en los bloques que van llegando.
Project::chunk(200, function ($projects) {
foreach ($projects as $project) {
//Aquí escribimos lo que haremos con los datos (operar, modificar, etc)
}
});
Esto lo podemos leer de la siguiente manera:
Traer del modelo Project (que traduce a la tabla projects) bloques de 200 registros y guardarlos temporalmente en la variable $projects como un array, luego recorre este array con los 200 registros y por cada uno ejecuta lo que está dentro del foreach, repite esta acción hasta que lleguen todos los registros de Project.
En la siguiente imagen puedes ver cómo tenemos un gran lote de datos y van cayendo microlotes más pequeños que se procesan y finalmente llegan a su destino final, todo este proceso se ejecuta de manera cíclica hasta que se procesan todos los datos.
De esta manera, estamos salvando el rendimiento y la memoria de nuestra aplicación cuando necesitemos operar con grandes cantidades de información desde la base de datos.
Aportes 28
Preguntas 2
Los chunks son muy importantes cuando trabajas con cantidades de datos enormes y necesitas traer demasiados datos,sin duda creo que es una de las mejores implementaciones de Laravel.
Chunk es posible gracias a los generadores de PHP y yield
por si gustan adentrarse un poco más en el cómo funciona
https://www.php.net/manual/en/language.generators.overview.php
Genial curso, el mejor hasta entonces, falta actualizarlo con la version nueva de laravel, sin embargo opto mas por estos cursos por escrito es diferente y muy facil de volver a él y seguir las indicciones.
Por fin me quedo claro el concepto de laravel y su funcionamiento.
Esto es algo nuevo que no tenía conocimiento de ello. Muchas Gracias por el aporte!!
Otra opción es usar limit
Project::select('*')
->limit(200)
])->get();
La forma de explicarlo es tan sencillo que lo hace entendible, sin importar las versiones futuras de laravel que salgan, ese es el detalle del curso. (Apréndete la definición y lo básico… lo demás es puro …)
Chunk no permite limitar la cantidad de resgistro en nuestra aplicacion
Chunk es una gran alternativa para procesar grandes volúmenes de información, sin tener que saturar el procesamiento del servidor y de la base de datos.
conocimiento nuevo adquirido
Muy interesante, siempre tuve la duda de como hacer cuando tenemos muchos registro y queremos alterar sin comprometer los recursos de nuestro server.
$projects = Project::all();
return collect($projects)->chunk(200);
woow que bien que se den ejemplos con los que nos podemos enfrentar adelante como traer 900 registros o más, no sabía el uso de chunk junto con su closure ahora nunca lo olviadaré :3
esto si no lo conocia 😃 lo que se aprende dia a dia
Además del Chunk, ¿Existe otra forma?
Un tema muy imporante para ternerlo desde el inicio en las tablas que van a ir creciendo, pero me causo mucha gracia el siguiente texto “se puede morir el servidor”,
Chunk es muy útil cuando trabajas con grandes cantidades de registros. Optimiza muchísimo el rendimiento.
Los chunks los empleamos mucho más que todo para reportes e informes que necesitemos desarrollar es una excelente práctica para este tipo de cosas.
Mi duda es donde aplicamos el chunk, en el controlador? o en la vista?
Que clase tan interesante
Chunk es una herramienta magnifica que se utiliza para la generación de reportes con gran cantidad de datos, en importaciones con miles de registros. Y muy útil cuando se combina con el acceso a campos de relaciones del modelo.
Excelete detalle, para optimizar la recuperación de datos de forma seccionada.
Gracias, Interesante dato de ahora en adelante lo implementare.
https://laravel.com/docs/5.0/eloquent#basic-usage
que buenas clases!!! ahora a ponerlo en practica
Excelente
Muy interesante este tema de los chunks, siempre me preguntaba como recuperar de una forma mas optima todos los datos de una tabla. 👏👏
Muy bien. Gracias.
Entendido.
Muy buenas clases, muy prácticas!!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.