sql >> Base de Datos >  >> RDS >> Mysql

Practicidad de múltiples bases de datos por cliente vs una base de datos

Sí, es posible y mi empresa lo hace. Sin embargo, ciertamente no voy a decir que es inteligente. Contamos con un sistema de automatización de marketing SAAS. Las bases de datos de algunos clientes tienen más de 1 millón de registros. Nos ocupamos de una segunda base de datos "común" que tiene una tabla de "cumplimiento" que rastrea correos electrónicos, cartas, llamadas telefónicas, etc. con más de 4 millones de registros, además de muchas otras tablas compartidas muy grandes. Con la indexación adecuada, la optimización, el mantenimiento de un servidor solo de base de datos separado y posiblemente la agrupación en clústeres (que aún no tenemos que hacer), puede manejar MUCHOS datos ... en muchos casos, aquellos que piensan que puede manejar unos pocos cientos de miles de registros trabajar en un producto de la competencia para ganarse la vida. Si aún tiene dudas sobre si es válido, considere que, según las métricas de agrupación en clúster de MySQL, un clúster de 8 servidores puede manejar 2,5 millones de actualizaciones POR SEGUNDO. No está nada mal...

El problema de usar dos bases de datos es hacer malabarismos con varias conexiones. ¿Es duro? No en realidad no. Usted crea diferentes objetos y hace referencia a sus clases de conexión según la base de datos que desee. En nuestro caso, llegamos a la clase de empresa de la base de datos principal para deducir el nombre de la base de datos del cliente y luego construimos la segunda conexión basada en eso. Pero, cuando haces malabares con esas conexiones de un lado a otro, puedes encontrarte con errores que requieren una depuración adicional. No es solo "¿Es válida mi consulta?" pero "¿Estoy realmente obteniendo la conexión de base de datos correcta?" En nuestro caso, una sesión interrumpida puede provocar que se activen todo tipo de errores de PDO porque el sistema ya no puede realizar un seguimiento de a qué base de datos de cliente acceder. Además, desde el punto de vista de la capacidad de mantenimiento, es un proceso aterrador intentar enviar actualizaciones de la estructura de la tabla a 100 bases de datos en vivo diferentes. Sí, se puede automatizar. Pero un desliz y has derribado a MUCHAS personas y has hecho un montón de trabajo extra para ti. Ahora, calcule el desarrollo adicional y las pruebas necesarias para hacer malabarismos con las conexiones y enviar actualizaciones... esa será su medida de si vale la pena.

¿Mi recomendación? Encuentre un host que le permita poner dos máquinas en la misma red local. Elegimos Linode, pero a quién usas es irrelevante. Comience con su servidor de base de datos dedicado, planee con anticipación para hacer clústeres cuando sea necesario. Mantenga todo su contenido en una base de datos, indexe y optimice religiosamente. Finalmente, encuentre un chico DB REALMENTE bueno y trátelo bien. Con tantos datos, un gran DBA sería imprescindible.