Un distribuidor de ferretería o repuestos de autos rara vez tiene menos de 20.000 SKUs activos. Si además suma piezas de recambio históricas, fácilmente supera los 100.000. Si un cliente escribe "Rulemán NSK 6204", espera el resultado antes de terminar de tipear. Si la web se queda pensando 4 segundos, perdiste la venta.

El colapso de la base de datos relacional

En WooCommerce o plataformas monolíticas básicas, cuando el usuario busca, el sistema ejecuta un SELECT * FROM wp_posts WHERE post_title LIKE "%Ruleman%". Esto es un "Full Table Scan". La base de datos tiene que leer fila por fila cada uno de los 100.000 productos.

Si a eso le sumás filtros (Facetas): "... y que la marca sea NSK, y que haya stock en el depósito Norte, y que el precio (que depende de la lista del cliente logueado) esté entre $5.000 y $10.000". El servidor colapsa por CPU o por memoria RAM. Es matemático.

La arquitectura de lectura segregada (CQRS)

Las plataformas Enterprise B2B y SaaS nativos como CommerceUp separan la base de datos de "escritura" de la base de datos de "lectura".

1. Elasticsearch para Búsqueda y Filtros

El catálogo se "aplana" en un documento JSON y se envía a Elasticsearch. Cuando el usuario teclea, se consulta a este motor especializado que soporta:

2. Redis para Pricing e Inventario

El buscador encuentra los IDs de los productos (ej: ID 582). Inmediatamente, la plataforma va a Redis (memoria RAM) para preguntar: "¿Cuál es el precio de la Lista 4 para el ID 582? ¿Y el stock del Depósito A?".

Esta doble lectura (Elasticsearch -> Redis) no toca la base de datos SQL en absoluto. El resultado en pantalla ocurre en ~45 milisegundos.

Sincronización del índice

El desafío técnico no es la lectura, sino mantener Elasticsearch actualizado cuando el ERP cambia algo. Se usan "Workers" asíncronos que escuchan eventos (ej: `ProductUpdated`) y re-indexan ese único documento en background, sin afectar a los usuarios navegando.

Preguntas frecuentes

¿Por qué mi web es lenta si tiene solo 10.000 productos?
Probablemente estés usando la base de datos SQL (MySQL/PostgreSQL) para realizar búsquedas textuales y filtros de facetas. SQL no fue diseñado para eso, y cada query traba el servidor.
¿Qué es Elasticsearch?
Es un motor de búsqueda y analítica distribuido (basado en Lucene). Almacena los datos de forma plana e invertida, permitiendo búsquedas full-text sobre 1 millón de SKUs en menos de 50 milisegundos.