Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Praticidade de vários bancos de dados por cliente versus um banco de dados


Sim, é possível e minha empresa faz isso. Eu certamente não vou dizer que é inteligente, no entanto. Temos um sistema de automação de marketing SAAS. Os bancos de dados de alguns clientes têm mais de 1 milhão de registros. Lidamos com um segundo banco de dados "comum" que possui uma tabela de "atendimento" rastreando e-mails, cartas, telefonemas, etc. com mais de 4 milhões de registros, além de inúmeras outras tabelas compartilhadas muito grandes. Com indexação adequada, otimização, manutenção de um servidor somente de banco de dados separado e possivelmente clustering (o que ainda não precisamos fazer), você pode lidar com MUITOS dados ...... em muitos casos, aqueles que pensam que podem lidar apenas com algumas centenas de milhares de registros trabalham em um produto concorrente para ganhar a vida. Se você ainda duvida se é válido, considere que, de acordo com as métricas de cluster do MySQL, um cluster de 8 servidores pode lidar com 2,5 milhões de atualizações POR SEGUNDO. Não é nada maluco.....

O problema de usar dois bancos de dados é fazer malabarismos com várias conexões. É difícil? Não, na verdade não. Você cria objetos diferentes e faz referência às suas classes de conexão com base no banco de dados desejado. No nosso caso, atingimos a classe da empresa do banco de dados principal para deduzir o nome do banco de dados do cliente e, em seguida, construímos a segunda conexão com base nisso. Mas, ao fazer malabarismos com essas conexões, você pode encontrar erros que exigem depuração extra. Não é apenas "Minha consulta é válida?" mas "Estou realmente obtendo a conexão de banco de dados correta?" Em nosso caso, uma sessão descartada pode fazer com que todos os tipos de erros de PDO sejam acionados porque o sistema não pode mais acompanhar qual banco de dados de cliente acessar. Além disso, do ponto de vista da manutenção, é um processo assustador tentar enviar atualizações da estrutura da tabela para 100 bancos de dados ativos diferentes. Sim, pode ser automatizado. Mas um deslize e você derrubou MUITAS pessoas e fez uma tonelada de trabalho extra para si mesmo. Agora, calcule o desenvolvimento extra e os testes necessários para fazer malabarismos com as conexões e enviar atualizações... isso será sua medida para saber se vale a pena.

Minha recomendação? Encontre um host que permita colocar duas máquinas na mesma rede local. Escolhemos a Linode, mas quem você usa é irrelevante. Comece com seu servidor de banco de dados dedicado, planeje com antecedência fazer clusters quando necessário. Mantenha todo o seu conteúdo em um banco de dados, indexe e otimize religiosamente. Finalmente, encontre um cara de DB REALMENTE bom e trate-o bem. Com tantos dados, um ótimo DBA seria uma obrigação.