Aceleración de Búsquedas en Rails con Caching
Clase 28 de 33 • Curso de Creación de APIs con Ruby on Rails
Contenido del curso
- 3

Creación de APIs con Rails: Proyecto Blog API paso a paso
04:37 - 4

Configuración de Gemas para Pruebas en Proyectos Rails
06:26 - 5

Configuración de Gemas en Proyectos Rails: Arspec, Factory Bot y Database Cleaner
07:25 - 6

Implementación de un Health Check Endpoint en API con RSpec
12:28 - 7

Diseño de Casos de Uso y Diagramas de Entidad para Aplicaciones
03:16 - 8

Diagrama de Entidad Relación para Modelos de Aplicación
01:41 - 9

Modelado de Aplicaciones con TDD en Rails
05:59 - 10

Validaciones y Pruebas TDD en Rails: Modelos USR y Post
07:07 - 11

Implementación de Endpoints para Listar y Mostrar Posts con TDD
15:12 - 12

Implementación de Pruebas y Controladores en Rails
10:34 - 13

Creación y Actualización de Posts con Pruebas TDD
10:12 - 14

Implementación de Métodos y Manejo de Excepciones en Rails API
10:23 - 15

Serialización de Modelos en Rails con ActiveModelSerializer
06:03 - 16

Búsqueda y Filtrado de Posts por Título con TDD
05:57 - 17

Implementación de Búsqueda de Posts con Servicios en Rails
06:06 - 18

Problema N+1 en Rails: Detección y Solución Eficaz
04:40 - 19

Identificación y solución del problema N+1 en Rails
06:20 - 20

Flujo de Autenticación en APIs con Tokens y Proveedores
05:29 - 21

Pruebas de Autenticación en API con Test Driven Development
12:17 - 22

Autenticación con Tokens: Implementación en Rails API
05:54 - 23

Autenticación de Usuarios en Controladores Rails
09:20 - 24

Autenticación y Seguridad en CRUD de Posts en Rails
09:17 - 25

Pruebas de Creación y Actualización con Autenticación en Rails
14:21 - 26

Pruebas de API con Postman: Ejecución y Verificación de Respuestas
10:43 - 27

Caching en Aplicaciones Web: Funciones y Niveles
07:15 - 28

Aceleración de Búsquedas en Rails con Caching
08:23 - 29

Background Jobs en Rails: Conceptos y Funcionalidades
05:45 - 30

Procesamiento en Background y Envío de Correos con Rails
09:45 - 31

Envío de Correos en Rails con ActionMailer y Background Jobs
11:06 - 32
Autenticación y Autorización con JWT y Auth0 en Aplicaciones Web
03:48
¿Cómo optimizar la búsqueda de posts con caching?
En el mundo del desarrollo de software, la eficiencia es crucial, especialmente cuando se ve enfrentado a una base de datos con miles o millones de registros. El uso del caching puede ser la solución perfecta para mejorar notablemente los tiempos de búsqueda en aplicaciones mediante la estrategia adecuada. Aquí, exploraremos cómo Rails nos ofrece herramientas para eficientizar la búsqueda de posts utilizando caching.
¿Por qué las búsquedas sin optimizar pueden ser lentas?
Las bases de datos SQL, aunque poderosas, no están optimizadas para búsquedas textuales sólidas. Imagínate buscando una frase específica entre millones de artículos. ¡Un simple LIKE en SQL podría tardar una eternidad! Esto se debe a que este tipo de consultas no hacen uso de índices directamente, lo que las hace ineficientes.
¿Cómo implementamos caching en un servicio de búsqueda?
El secreto del éxito reside en la función rails.cache.fetch. Este método permite almacenar los resultados de una búsqueda para que futuras consultas sobre el mismo término sean increíblemente rápidas.
Rails.cache.fetch("post_search_#{query}", expires_in: 1.hour) do
# Código para realizar la búsqueda
end
- Función
fetch: Acá se verifica si un resultado previo ya está en la caché. Si existe, se devuelve inmediatamente; si no, se calcula, almacena y retorna. - Parámetro
expires_in: Define el tiempo de expiración de la caché, en este caso, una hora, para asegurar que la información esté actualizada.
¿Qué debemos considerar al usar caching?
Existen sacrificios al optar por caching. Prestamos menos atención a la correctitud momentánea en pos de un mejor desempeño. Esto significa que durante una hora, los nuevos posts no aparecerán en resultados hasta que expire la caché.
Además, es crítico ser consciente del almacenamiento limitado de la caché. En lugar de guardar toda la información, se recomienda almacenar identificadores de posts (IDs) y dejar que el acceso a la base de datos busque los detalles.
post_ids = Rails.cache.fetch("post_search_#{query}", expires_in: 1.hour) do
# Obtener y almacenar solo los IDs de posts
end
¿Qué tipos de caché recomiendan en producción?
La caché debe configurarse basándose en el entorno de trabajo.
- Memory Store: Almacena en memoria local, ideal para desarrollo.
- Memcache o Redis: Proveen un sistema distribuido que funciona perfectamente para producción. La elección dependerá de la infraestructura de tu aplicación.
Las configuraciones para cada entorno, como development o production, se pueden ajustar en los archivos de configuración de Rails, asegurando que la aplicación funcione de forma óptima en cada etapa:
config.cache_store = :memory_store, { size: 64.megabytes }
¿Cómo garantizamos que la implementación funciona?
Probar es esencial. Al correr nuevamente las búsquedas:
- La primera búsqueda ejecutará el
LIKEy almacenará el resultado. - Las búsquedas subsecuentes deberán ejecutar solo las queries de los IDs, confirmando que el caching es efectivo.
Con el uso de caching, optimizamos tiempos de respuesta, siendo una técnica valiosa en la creación de aplicaciones eficientes y robustas. No dejes de explorar otras opciones y documentaciones para profundizar más en la riqueza que ofrece Rails en cuanto a caching y sigue aprendiendo para mejorar tus habilidades de desarrollo.