Usando UUID como chave primária no MySQL

Nos últimos meses, tenho me focado mais no desenvolvimento web, dai a queda no nível de actualizações deste portal. O facto é que estudar ferramentas de desenvolvimento de aplicações para web é tão interessante que não nos sobra tempo para contar o quão interessante são as ferramentas de desenvolvimento web, principalmente as OpenSource. Nos últimos dias tenho me dedicado mais no estudo de técnicas avançadas do MySQL, PHP, CakePHP, JQuery, HTML5 e CSS3, que são as tecnologias que venho usando no meu Sistema de Gestão Académica e nos projectos de ecommerce que tenho na manga. Mas neste post venho falar exclusivamente do MySQL.Um dos detalhes particulares do Meu Sistema de Gestão Académica, é que provavelmente algumas instituiçõoes que forem usar a ferramenta num futuro muito breve, terão necessidade de usar múltiplos servidores ligados a múltiplas bases de dados, onde depois os dados terão de ser agregados numa única base de dados para questões de análises e relatórios. A instalação em múltiplos servidores isolados pode ter a ver com escalabilidade, replicação ou porque simplesmente algumas faculdades ou delegações ligadas a uma Universidade que use o OpenSGA podem não ter ligação a Internet 100% garantida.Pensando nestes problemas todos, resolvi pesquisar qual a melhor forma de preparar a base de dados do OpenSGA para que possa responder as necessidades das instituições que desejarem implementar esta solução. Nos estudos constatei que o principal problema com a integração dos dados seria a duplicação de chaves primárias, quando usasse chaves do tipo INT Auto Increment. Até poderia criar um script que resolve-se o conflito de chaves primárias durante a integração dos dados, mas uma solução surgiu no meio do caminho:UUID.

O que é UUID?

UUID vem de Identificador Universal Único, e é exactamente o que o nome sugere: um identificador universal único para os objectos da sua base de dados. O universal de UUID também é exactamente o que sugere: Não existirá um outro objecto com o mesmo identificador na sua base dados, e provavelmente nem em nenhuma base de dados do mundo!O UUID é uma chave de 128 bits, composta por 32 caracteres separados por “-“. O facto de ter 32 caracteres faz com que seja quase(quase mesmo) impossivel existirem dois objectos com a mesma chave UUID numa determinada tabela, nem que a tabela receba 10000000 de inserts durante 100 anos!Usando UUID nas tabelas do meu Sistema de Gestão Académica, resolvo o problema de conflitos de chaves primárias durante a integração de dados das diferentes bases de dados do sistema na base de dados central.

Performance do UUID

O grande problema do UUID, tem a ver com a performance da base de dados em tabelas com muitos dados, principalmente durante os selects. Com chaves primárias do tipo INT Auto Increment  as pesquisas são mais rápidas porque números inteiros são mais fáceis de ordenar e indexar. o UUID usa chaves do tipo string ou binárias, que por usarem caracteres alfanuméricos comprometem muito a velocidade das transações na base de dados.

Devo usar UUID como chaves primárias no MySQL

Depois de falar da principal vantagem e da principal desvantagem do UUID, termino dizendo que tudo depende do seu projecto. Sinceramente, eu ainda não decidi se implemento o UUID nas tabelas da minha base de dados, pois também ainda não sei se ter o sistema a funcionar com várias bases de dados é uma necessidade fundamental para o OpenSGA.Daqui a alguns dias terei a decisão final, mas o facto é que terei de decidir antes do sistema começar a ficar muito populoso em termos de dados das instituições que já estão a usar, uma vez que a transição de INT Auto Increment para UUID poderá ser uma dor de cabeça

Receba nossas actualizações por email

Ver Campanhas anteriores.

(Visited 249 times, 1 visits today)
Share