Cómo dividir la base de datos en Magento 2.2

Aguas divididas

Como ya sabemos, Magento Commerce (antes conocido como Enterprise), posee características que la diferencian de nuestra muy querida edición Open Source (Community Edition para los amigos).

En Magento 2 (Commerce) tenemos la posibilidad de dividir nuestra base de datos en 3, y la tienda seguirá funcionando.

Claramente, está pensado para grandes volúmenes de datos, ya que divide el catálogo y los customers de los quotes, y a su vez, de las tables sales_*.

Veamos cómo configurarlo y probarlo.

El punto de partida será una tienda ya instalada. Una vez hecho, vamos a crear dos nuevas bases de datos en blanco.

En mi caso, tengo una base de datos llamada magento2_ee_22 (si, a mi toc le molesta también el nombre).

Ahora bien, nos conectamos a nuestra base de datos y creamos las dos bases:

create database magento2_ee_22_quote;
create database magento2_ee_22_sales;

Si usaran diferentes usuarios, deberán también hacer el grant de permisos y demás detalles de configuración específicos de la base de datos.

Una vez que sabemos que tenemos las bases de datos, volvemos a la consola y ejecutamos los siguientes comandos:

magento setup:db-schema:split-quote --host="localhost" --dbname="magento2_ee_22_quote" --username="USUARIO_DB" --password="PASSWORD_DB"
magento setup:db-schema:split-sales --host="localhost" --dbname="magento2_ee_22_sales" --username="USUARIO_DB" --password="PASSWORD_DB"

En ambos casos veremos el siguiente mensaje cuando haya terminado la ejecución:

Migration has been finished successfully!

¿Cómo sabes si funcionó?.

Nos conectamos a nuestra base de datos y si todo salió bien, veremos que:

  • La base de datos magento2_ee_22 quedó como 369 tablas.
  • La base de datos magento2_ee_22_quote tiene 11 tablas.
  • La base de datos magento2_ee_22_sales tiene 55 tablas.

Lo siguiente, es ver si funciona realmente.

Visualización del Carrito en Magento 2.2

Agrego un primer producto al Cart (hasta aquí se usó la base de datos principal para leer el producto y la base de datos del quote para almacenarlo y crear mi carrito).

Avanzamos hacia el checkout para finalizar nuestra compra.

Checkout en Magento 2.2

Confirmación de compra en Magento 2.2

Todo parece haber funcionado correctamente. Vayamos ahora a la base de datos.

Bases de datos para Magento 2.2

Como vimos al comienzo, tenemos nuestras 3 bases de datos. La base de datos de quotes con sus 11 tablas.

Bases de datos de Quotes para Magento 2.2

Y si reviso qué información hay en la tabla quote, veo que:

Tablas de Quotes para Magento 2.2

Tablas de Quotes para Magento 2.2

Efectivamente, mis datos aparecieron.

Veamos ahora la base de datos de sales.

Bases de datos de Sales para Magento 2.2

Aquí estarán nuestras 55 tablas. Si reviso la tabla sales_order, veré:

Tablas de Sales Order para Magento 2.2

Mi primera orden se guardó correctamente, pero como soy muy desconfiado, reviso también el backend.

Gestión de Pedidos en Magento 2.2

Gestión de Pedidos en Magento 2.2

Efectivamente, todo está donde debe.

Dividir la base de datos no es para cualquier tienda, así como implementar replicación (sólo por performance) tampoco lo es. En muchos casos puede ser el equivalente a estar matando moscas con cañones.

Hay que tener en cuenta que si vamos a necesitar y hacer uso de la división de base de datos, posiblemente terminemos con replicación. Para esto, aparte de los conocimientos específicos de base de datos, es recomendable pasar por este link.

 

Tweet about this on TwitterShare on Google+Email this to someoneShare on FacebookShare on LinkedIn