domingo, 2 de novembro de 2014

MySQL - Diferença entre MyISAM e InnoDB

Hoje vamos falar um pouco desta diferença entre MyISAM e InnoDB.

Bom o MySQL é um banco de dados relacional bem divulgado pois ele tem uma excelente parceria da linguagem web PHP (Mysql + PHP) vem dando certo há anos (não é difícil encontrar uma empresa de hospedagem de sites que deixe de citar PHP e MySQL). Conforme voltando a ao MySQL encontramos neste banco relacional 2 performance de Engines mais utilizadas do Mysql que são  InnoDB e MyISAM.

Então vamos detalhar estas diferenças!
InnoDB funciona mais rápido que MyISAM quando há modificações constantes nos dados, uma vez que este tipo de armazenagem usa a proteção por registros (row locking) e não a proteção por tabelas (table locking) como o faz o MyISAM. Contudo, em várias situações, InnoDB é mais lento que MyISAM, devido ao fato de que InnoDB funciona com transações. A armazenagem padrão do MySQL é MyISAM. Outro ponto interessante são as restrições de chaves estrangeiras (foreign key constraints) e transações. Estes recursos estão disponíveis apenas no InnoDB.
MyISAM é apropriado para tabelas cujos dados não mudam com frequência. Um exemplo disso é uma tabela de cidades e estados. Como geralmente este tipo de tabela é usado apenas como consultas, não há a necessidade do uso de InnoDB. MyISAM tem a vantagem de ser arquivos simples se comparado com o innodb, mesmo na opção para criar dentro do contexto, o arquivo fica instavel em volumes grandes, o mito sobre configurar o mysql em innodb está errado, VOCÊ SEMPRE DEVE CONFIGURAR O MYSQL, perfomace de cache é sempre importante.
InnoDB, Quais as vantagens?

– Turbinadíssimo quando o assunto são tabelas que contém registros que sofrem mudanças o tempo todo, pois o InnoDB opera como row locking, isto quer dizer que se você tem uma tabela que contém registros que sofrem mudanças o tempo todo você será favorecido. Imagine uma coluna de tabela que mostra o valor em real da cotação do dólar? Entendeu? Ocorrem inúmeras mudanças no decorrer do dia, isto irá favorecer e muito sua vida caso use o InnoDB.
– Consistência de dados, este é um dos pontos mais fortes do InnoDB. A chance de uma tabela que usa engine InnoDB corromper é mais que mínima, é hiper remota! Se você quer garantia de dados use InnoDB. Caso tenha dúvidas de como mudar sua engine de MyIsam para InnoDB basta exportar sua base de dados (que usa Engine MyIsam) e com um editor de textos (pode ser o bloco de notas) use a opção de substituir um termo e informe a referência MyIsam e o termo substituto será InnoDB, após basta importar no seu banco de dados que já estará usando InnoDB como Engine padrão do seu BD.
– Suporte a transações e relacionamentos completos, isto é, em caso simples, você tem o recurso de chaves estrangeiras.

– Rodam sob um engine, desenvolvido pelo Innobase( www.innodb.com), que acrescenta ao MySQL o suporte a TRANSAÇÕES e a CONSTRAINTS de chave estrangeira.

– Para obter o máximo de performance com tabelas InnoDB é necessário configurar o arquivo my.conf(ou my.ini no Windows) de acordo com as características de hardware do servidor onde o MySQL está rodando. Os Detalhes dessa configuração podem ser obtidos no manual do InnoDB.
InnoDB, Qual desvantagem?
– Em caso de uso de tabelas que mal sofrem mudanças o desempenho ficará comprometido.
– Em caso de um crash (raro, porém possível de ocorrer), por exemplo, um disco que apresentou mau funcionamento e depois apresentou estabilidade, porém corrompeu o BD, a chance de restore mais simples é justamente um restore de um dump (backup anteriormente feito). 
MyIsam, Quais Vantagens?
– Desempenho muito satisfatório em tabelas que não recebem muitas alterações constantes, pois o MyIsam opera com table locking, em um exemplo mais simples, imagine uma tabela de sorteios por CPF (de maneira aleatória), raramente um CPF irá mudar (desde que tenha sido inserido errado), logo esta tabela de promoção raramente sofrerá alterações.
– Capacidade de restore muito agradável (baseado no log binário), raramente será necessário o uso de dumps para um restore crítico.

 Foi implementado a partir do código da tabela ISAM., introduzindo diversas melhorias como:

 Os arquivos de tabela são transportáveis entre diferentes sistemas operacionais;

 Campos BLOB  e TEXT  podem ser indexados;

 Os Arquivos índices e de dados podem ser armazenados em dispositivos diferentes (aumento de performance);

 Algoritmos de distribuição de dados e gerenciamento de índices melhorados;
MyIsam, Qual desvantagem?
– O ponto negativo que destacamos é justamente a estabilidade dos arquivos. Em um caso de travamento do sistema (imagine um ataque na porta 80 do apache) e o servidor precisou de um reboot emergencial, a probabilidade do banco sob engine MyIsam corromper é enorme. Por isso recomendamos fortemente o uso do InnoDB.

Esperamos que este simplíssimo artigo tenha tirado sua dúvida sobre as engines MyIsam e InnoDB para o uso do dia a dia.
Bom é isto ai espero que tenham gostado. Em breve irei postar mais acompanhem!!!

sábado, 28 de junho de 2014

Schema de Banco de Dados

Bom hoje vamos falar um pouco do conceito de um Schema de Banco de Dados.

O que é um Schema? ou Esquema?

Um Schema é representado por uma coleção de vários objetos de um ou mais usuário de banco de dados como exemplo: tabelas, sequências, índices, etc. São associados a um banco de dados na razão de vários esquemas para um BD.

Verificando mais a fundo, os Schemas de bancos de dados de um sistema de banco de dados é sua estrutura descrita em uma linguagem formal suportada pelo sistema de gerenciamento de banco de dados (SGBD) e refere-se à organização de dados como um diagrama de como um banco de dados é construído (dividido em tabelas de banco de dados no caso de bancos de dados relacionais).

Existe uma definição formal do esquema de banco de dados é um conjunto de fórmulas (sentenças) chamadas de restrições de integridade impostas no banco de dados. Estas restrições de integridade garantem a compatibilidade entre partes do esquema. Todas as restrições são expressáveis na mesma linguagem. Um banco de dados pode ser considerado uma estrutura em realização da linguagem de banco de dados. Os estados de um esquema conceitual são transformados em um mapeamento explícito, o esquema de banco de dados. Isto descreve como entidades do mundo real são modeladas em um banco de dados.

Um Schema de banco de dados especifica, com base no conhecimento do administrador de banco de dados de possíveis aplicações, os fatos que podem entrar no banco de dados, ou aqueles de interesse para os possíveis usuários finais.

 A noção de Schema de banco de dados desempenha o mesmo papel que a noção de teoria no cálculo de predicados. Um modelo desta "teoria" corresponde aproximadamente a um banco de dados, que pode ser visto em qualquer instante de tempo como um objeto matemático. Desta forma, um esquema pode conter fórmulas que representam restrições de integridade especificamente para uma aplicação e as restrições especificamente para um tipo de banco de dados, todas expressadas na mesma linguagem de banco de dados.

Em banco de dados relacional, o Schema define as tabelas, campos, relacionamentos, visões, índices, pacotes, procedimentos, funções, filas, gatilhos, tipos, sequências, visões materializadas, sinônimos, enlaces de banco de dados, diretórios, esquemas XML e outros elementos.

Esquemas geralmente são armazenados em um dicionário de dados. Apesar de um Schema ser definido em linguagem de banco de dados de texto, o termo é frequentemente utilizado para se referir a uma representação gráfica da estrutura de banco de dados. Em outras palavras, Schema é a estrutura do banco de dados que define os objetos no banco de dados.
 
Os objetos de um Schema são estruturas lógicas que se referem diretamente aos dados do banco de dados. Eles incluem estruturas, tais como tabelas, visões, sequências, procedimentos armazenados, sinônimos, índices, agrupamentos e links de banco de dados. (Não há nenhum relacionamento entre um tablespace e um Schema; os objetos do mesmo Schema podem estar em tablespaces diferentes, e um tablespace pode conter objetos de esquemas diferentes).

Em breve estarei postando mais informações sobre Schema referente a banco de dados específicos.

domingo, 30 de março de 2014

História WebScaleSQL

Bom vamos falar hoje sobre um novo banco de dados que foi lançado chamado WebScaleSQL.

Como surgiu?
 
O surgimento teve a orgiem do Facebook o qual "desenvolveu a estrutura básica" para WebScaleSQL, Google revisou e sugeriu algumas outras modificações, o LinkedIn também analisou-o e Twitter "contribuíram várias melhorias de desempenho".

O que em sí é WebScaleSQL?
WebScaleSQL é uma colaboração entre os engenheiros de várias empresas que enfrentam desafios semelhantes na execução do MySQL em escala , e buscar uma melhor performance a partir de uma tecnologia de banco de dados sob medida para suas necessidades.

O objetivo em realizar o lançamento WebScaleSQL é permitir que os membros orientada a escala da comunidade MySQL para trabalhar mais estreitamente a fim de priorizar os aspectos que são mais importantes para nós. Nosso objetivo é criar um sistema mais integrado de partilha de conhecimento para ajudar as empresas a alavancar os grandes recursos já encontrados no MySQL 5.6, enquanto a construção e adicionando mais recursos que são específicos para implementações em ambientes de larga escala. Nos últimos meses , os engenheiros de todas as quatro empresas têm contribuído com código e forneceram feedback uns aos outros para desenvolver um novo ramo, mais unificada e mais colaborativo do MySQL .
Quem está por trás WebScaleSQL?
WebScaleSQL atualmente inclui contribuições de equipes de engenharia do MySQL no Facebook, Google , LinkedIn e Twitter. Juntos , estamos trabalhando para compartilhar uma base comum de alterações de código para o ramo MySQL montante que todos nós podemos usar e que será disponibilizado via código aberto. Esta colaboração vai se expandir no trabalho existente pela comunidade MySQL, e vamos continuar a acompanhar o ramo montante que é o mais recente , pronto para produção release ( atualmente MySQL 5.6).

Segundo Greene, o WebScaleSQL consiste basicamente em mudanças no código do “braço” do MySQL (a versão 5.6) usado por todas essas empresas. As alterações foram disponibilizadas como open source GitHub, para que toda a comunidade construída em torno do RDBMS possa aproveitá-la, entendê-la ou modificá-la – já que a solução para as companhias pode não ser útil para outros usuários e administradores. Além disso, como era de se supor, quem tiver interesse pode colaborar com o desenvolvimento da ferramenta. Mudanças no código “original”, no entanto, precisarão ser avaliadas por outros engenheiros de software, em um sistema democrático. De acordo com o funcionário do Facebook, essas discussões já renderam boas novas funcionalidades, mesmo quando feitas apenas entre as quatro companhias. Os recursos estão listados no post do engenheiro, e incluem um framework automatizado que executa e publica resultados de testes no sistema integrado do MySQL, além de um “conjunto inteiro de avaliações de stress e um protótipo de um recurso para testes de performance automáticos”.
 
Bom é isso ai é um banco para gigantes, espero que tenham gostados em breve estarei postando mais sobre WebScaleSQL.

domingo, 23 de fevereiro de 2014

Espelhamentos em Banco de Dados

Bom vamos falar hoje sobre o Espelhamentos em Banco de Dados ou MirrorDB.

O que é um espelhamentos?
O espelhamento de banco de dados é uma estratégia simples que oferece muitos benefícios. Segue alguns tópicos.
  • Aumenta a disponibilidade de um banco de dados.
  • No caso de desastre, no modo de segurança alta com failover automático, o failover coloca rapidamente online a cópia do banco de dados em espera (sem perda de dados). Nos outros modos de operação, o administrador do banco de dados tem a possibilidade de forçar o serviço (com possível perda de dados) para a cópia do banco de dados em espera. 
     
  • Aumenta a proteção dos dados como o espelhamento de banco fornece completa ou quase completa redundância de dados, dependendo se o modo operacional é de alta segurança ou de alto desempenho.
     
  • Aumenta a disponibilidade do banco de dados de produção durante as atualizações.
    Para minimizar o tempo de inatividade de um banco de dados espelho, atualize de forma sequencial as instâncias que estão hospedando os parceiros de failover. Isso ocasionará o tempo de inatividade de um único failover. Essa forma de atualização é conhecida como atualização sem interrupção
Como funciona espelhamentos?
Bom o funcionamento você pode ter uma ideia verificando as vantagens e as desvantagem.

Vantagens:
  • Aumento na disponibilidade e distribuição dos dados;
  • Aumento na segurança dos dados;
  • Diminuição na possibilidade de perda de dados;
  • Facilidade no uso;
  • Possibilidade de realizar espelhamentos locais ou remotos;
  • Maior aumento do Nível de Segurança dos Dados;
  • Não requer um conhecimento avançado ou específico para este de funcionalidade; e
  • Não requer a utilização de ferramentas de terceiros ou produtos específicos.
Desvantagens:
  • Aumento no espaço ocupado em disco, devido à duplicidade de dados;
  • Aumento na necessidade de gerenciamento e controle dos dados;
  • Aumento no tempo de execução e encerramento do procedimento de Backup;
  • Força o uso da opção Format em conjunto com a opção Mirror para realização do Backup;
  • Funcionalidade presente somente nas edições Enterprise do Microsoft SQL Server 2005, 2008 ou R2; e
  • Possibilidade de Espelhamento de Backup em fita removida em versões futuras.
A grande funcionalidade do espelhamento, nada mais é que seu banco Mirror seja de contingência atualizado momentâneo.

Bom é isso ai, vou postar mais tópicos referente a backups de espelhamentos e clones de bancos.
 Copyright © 2008-2010 All Right Reserved - Todos os Direitos Reservados Elder Stroparo