Documente Academic
Documente Profesional
Documente Cultură
PR-REITORIA ACADMICA
PROGRAMA DE PS-GRADUAO EM MBA EM BUSINESS INTELLIGENCE
Sorocaba/SP
2016
LISTA DE FIGURAS
Figura 1: Armazenamento dos bancos de dados no diretrio principal ....................................... 5
Figura 2: Banco de dados sshop .................................................................................................... 5
Figura 3: Tabela MyISAM - diretrio ............................................................................................. 6
Figura 4: Tabela InnoDB - Diretrio............................................................................................... 8
Figura 5 - Resultado do Select na tabela projetos Maio/2016 ................................................. 10
Figura 6 - Resultado do Select na tabela projetos selecionando campos especficos
Maio/2016 ................................................................................................................................... 11
Figura 7 - Resultado do Select na tabela projetos com WHERE Maio/2016 ............................ 11
Figura 8 - Resultado do Select na tabela projetos com Where e Like Maio/2016 ................... 12
Figura 9 - Resultado do comando mysqlshow Maio/2016 ...................................................... 14
Figura 10 - Replicao em trs fases Maio/2016 ..................................................................... 21
Figura 11 - Replicao em trs fases Maio/2016 ..................................................................... 27
Figura 12 - Replicao em trs fases Maio/2016 ..................................................................... 28
Sumrio
INTRODUO ............................................................................................................................ 4
OBJETIVO ................................................................................................................................... 4
BANCO DE DADOS MYSQL.................................................................................................... 4
Definio: ................................................................................................................................. 4
Gravao e Fragmentao do Dado: .................................................................................. 4
A ENGINE MyISAM ................................................................................................................... 6
Principais Caractersticas da Engine MyISAM................................................................... 6
A ENGINE INNODB ................................................................................................................... 7
Principais Caractersticas da Engine InnoDB .................................................................... 8
Consideraes sobre as ferramentas: ................................................................................ 8
FRAGMENTAO DO MYSQL ............................................................................................... 9
CONSULTA DE DADOS E NDICES .................................................................................... 10
METADADOS E DICIONRIOS DE DADOS ...................................................................... 13
REDUNDNCIA CONTROLADA ........................................................................................... 14
CONTROLE DE CONCORRNCIA ...................................................................................... 15
SEGURANA ........................................................................................................................... 16
RESTRIES DE INTEGRIDADE ........................................................................................ 17
ACESSO CONTROLADO ....................................................................................................... 17
REPLICAO (Total e Parcial) .............................................................................................. 20
Viso geral da replicao .................................................................................................... 20
Como funciona a replicao ............................................................................................... 21
CLUSTER .................................................................................................................................. 22
NDB ........................................................................................................................................ 22
Arquitetura ............................................................................................................................. 24
Replicao ............................................................................................................................. 24
Particionamento de dados horizontal ................................................................................ 24
Hybrid Storage ...................................................................................................................... 25
APIs SQL e NoSQL .............................................................................................................. 26
Implementao ..................................................................................................................... 26
CONSIDERAES FINAIS .................................................................................................... 28
REFERNCIAS .................................................................................................................... 29
INTRODUO
Devido a disciplina de sistemas de gerenciamento de banco de dados
(SGBD), e as inmeras ferramentas de armazenamento de dados disponveis
no mercado, escolhemos o MySQL. Uma ferramenta Open Source atualmente
da Oracle sua concorrente paga. Estaremos estudando seu funcionamento e
as suas caractersticas internas que a cercam.
OBJETIVO
O objetivo do trabalho fazer uma pesquisa mais a fundo sobre o SGBD
do MYSQL, entendendo como trabalha, como se comporta internamente, quais
suas necessidades e possibilidades de uso. Buscamos entender o porque ela
to usada no mercado diante de um mercado to amplo.
Fonte: Os autores.
Fonte: Os autores.
5
A ENGINE MyISAM
O MyISAM oferece um bom acordo entre desempenho e caractersticas
teis, como indexao de texto completo, compactao e funes espaciais
(GIS).
No disco, o MySQL representa cada tabela MyISAM usando trs arquivos:
um arquivo de formato que armazena a definio da estrutura da tabela, um
aquivo de dados que armazena o contedo das tuplas da tabela e um arquivo
de index que armazena cada ndice da tabela. A saber, o formato, os dados e
os arquivos de ndices para uma tabela chamda tabelaexemplo, so gerados
os arquivos tabelaexemplo.frm, tabelaexemplo.MYD e tabelaexemplo.MYI.
Figura 3: Tabela MyISAM - diretrio
Fonte: Os autores.
Voc pode criar ndices nos primeiros 500 caracteres das colunas
BLOB e TEXT nas tabelas MyISAM.
A ENGINE INNODB
InnoDB
foi
desenvolvido
para
processamento
de
transao,
atomicidade,
consistncia,
nvel
de
isolamento
FRAGMENTAO DO MYSQL
No MySQL, quando voc excluir registros de um espao de tabela no
remapeado automaticamente. O problema com isto que se uma tabela de
executar muitas operaes DELETE, o espao fsico da mesa ser cada vez
mais fragmentado e reduzido desempenho.
Para a correo deste problema tambm usamos as ferramentas MyISAM
ou InnoDB, ambas ao executar o comando OPTIMIZE TABLE, fazem
uma desfragmentao automtica da tabela corrigindo este problema.
altamente
recomendvel
usar
este
comando
periodicamente,
mostra tambm as tabelas InnoDB, onde o 'datafree' pode ter um valor maior e
fixo, isto no indica fragmentao.
Para verificar as engines das tabelas e tambm poder visualizar o
'DATA_FREE' voc pode rodar o seguinte comando:
SHOW TABLE STATUS;
10
Logo essa consulta mostrar apenas duas colunas com seu dados, o
id_projeto e o nome_projeto. Utilizando a Clusula condicional (WHERE) nas
consultas, obtemos um resultados mais objetivo ainda como veremos abaixo:
SELECT id_projeto, nome_projeto FROM projetos WHERE nome_projeto =
Aylmer;
Figura 7 - Resultado do Select na tabela projetos com WHERE Maio/2016
nome_projeto FROM
projetos WHERE
nome_projeto LIKE
'Mo%';
11
MySQL
os
metadados
tratados esto
disponveis
na
Privilgios.
show create table: Exibe o esqueleto da tabela, a forma da qual ela foi
criada.
Existe tambm o cliente mysqlshow, que pode ser utilizada no shell para
retornar a lista das bases de dados disponveis. Exemplo:
Figura 9 - Resultado do comando mysqlshow Maio/2016
Fonte:
SQL
PARA
TODOS
de
agosto/2015.
Disponvel
em:
REDUNDNCIA CONTROLADA
O MySQL desenvolveu uma soluo conhecida como MySQL Cluster,
que consiste em prover capacidade de fail-over automtico com o intuito de
prover alta disponibilidade para o banco de dados. Vale destacar que o
termo fail-over significa que havendo problema em um dos componentes
do cluster, outro elemento o substituir imediatamente, mantendo todo o
sistema em operao como se nada tivesse ocorrido.
14
CONTROLE DE CONCORRNCIA
No Mysql o controle de concorrncia feito em dois nveis: no nvel do
servidor e no nvel da ferramenta de armazenamento. Como vimos
anteriormente as ferramentas de armazenamento transacionais do MySQL,
como InnoDB, Falcon e PBXT, no usa um simples mecanismo de bloqueio de
linha. Em seu lugar, elas usam um bloqueio em nvel de linha em conjunto com
uma tcnica para aumentar concorrncia conhecida como controle de
concorrncia de verso mltipla (MVCC).
MVCC funciona mantendo um snapshot dos dados como eles existiam
em algum ponto no tempo. Isso significa que transaes podem enxergar uma
visualizao consistente dos dados, no importa quanto
tempo elas executem. Tambm significa que diferentes transaes podem ver
dados diferentes nas mesmas tabelas ao mesmo tempo.
Cada ferramenta de armazenamento implementa MVCC de maneira diferente.
Temos o exemplo de uso do MVCC explicando o comportamento do InnoDB.
InnoDB implementa MVCC armazenando em cada linha dois valores
adicionais, escondidos, que registram quando a linha foi criada e quando ela
expirou (ou foi deletada). Em vez de armazenar os horrios reais que estes
eventos ocorreram, a linha armazena o nmero da verso do sistema na hora
em que o evento ocorreu. Este um nmero que incrementa toda vez que uma
transao comea. Cada transao mantm seu prprio registro da verso do
sistema atual, na data em que ele iniciou. Toda consulta tem de checar os
nmeros de verso de cada linha em relao verso da transao.
SELECT
InnoDB deve examinar cada linha para garantir que ela se adapte a dois
critrios:
InnoDB deve encontrar uma verso da linha que no mnimo to velha
quanto a transao (por exemplo, sua verso deve ser menor ou igual verso
da transao). Isso garante que a linha existia antes da transao comear, ou
que a transao criou ou alterou a linha.
A verso de apagamento da linha deve ser indefinida ou maior do que a
verso da transao. Isso garante que a linha no foi deletada antes da
transao iniciar.
15
Linhas que passam nos dois testes podem ser retornadas como o resultado da
consulta.
INSERT
InnoDB registra o nmero da verso do sistema atual com a nova linha.
DELETE
InnoDB registra o nmero da verso do sistema atual como o ID de
apagamento da linha.
UPDATE
InnoDB escreve uma nova cpia da linha, usando o nmero da verso do
sistema para a verso da nova linha. Ele tambm escreve o nmero da verso
do sistema com a verso de apagamento da velha linha.
SEGURANA
O MySQL implementa um sistema de autenticao bastante robusto que
realizado em dois estgios. O primeiro verifica se o usurio pode conectar ao
banco de dados e o segundo verifica se o usurio tem privilgios para realizar
operaes no banco de dados. O segundo estgio, portanto, verificado a
cada operao realizada pelo usurio.
Este sistema de privilgios armazenado usando a prpria estrutura do
sistema em um banco de dados especial chamado mysql e deve ter o acesso
permitido apenas para o usurio root.
Para aceitar a conexo de um usurio, o MySQL no considera apenas o
prprio usurio, mas tambm a mquina de onde o usurio est conectando.
Dessa forma, voc pode permitir o acesso de um determinado usurio somente
de algumas mquinas especficas, bloqueando seu acesso de outros hosts que
podem no ser confiveis.
Existem duas maneiras de conceder privilgios aos usurios: usando os
comandos GRANT e REVOKE, ou alterando diretamente as tabelas do banco
de dados mysql. A melhor escolha usar os comandos GRANT/REVOKE, pois
o MySQL j altera as tabelas automaticamente, no sendo necessrio entender
em detalhes o significado de cada tabela e suas respectivas colunas. Se voc
16
RESTRIES DE INTEGRIDADE
O
InnoDB
implementa
as
restries
de
ACESSO CONTROLADO
O MySQL possui um mecanismo que permite limitar o acesso de um
usurio a apenas um banco, tabela ou coluna, alm de poder controlar o
acesso de acordo com o host a partir de onde est sendo feita a conexo com
o servidor. Pode-se ainda, conceder privilgios diferentes para cada host de
onde o usurio possa estabelecer a conexo.
O MySQL armazena as informaes dos seus usurios em 4 tabelas que
esto
localizadas
no
banco
de
dados mysql.
tabela
Estas
user
tabelas
so
armazena
as
17
Descrio
ALL [PRIVILEGES]
ALTER
CREATE
CREATE TEMPORARY
TABLES
DELETE
DROP
EXECUTE
FILE
INDEX
Permite
executar
CREATE
INDEX
DROP
INDEX
INSERT
LOCK TABLES
PROCESS
REFERENCES
RELOAD
REPLICATION CLIENT
Master ou Slave
REPLICATION SLAVE
SELECT
SHOW DATABASES
SHUTDOWN
SUPER
Permite
executar
CHANGE
MASTER,
KILL,
USAGE
GRANT OPTION
Privilgio Global
Db.*
Db.tb
19
Fonte:
SQL
PARA
TODOS
de
agosto/2015.
Disponvel
em:
O master registra alteraes aos seus dados no seu log binrio (estes
registros so chamados de evento de log binrio): antes de cada transao que
21
CLUSTER
Foi projetado para proporcionar alta disponibilidade e alto rendimento
com baixa latncia, permitindo simultaneamente uma escalabilidade quase
linear. MySQL Cluster implementado atravs do mecanismo de
armazenamento NDB ou NDBCLUSTER para MySQL ("NDB" Network
Database).
NDB
NDB Cluster o sistema de banco de dados distribudo subjacente
MySQL Cluster. Ele pode ser usado de forma independente de um servidor
MySQL com os usurios acessando o Cluster atravs da API NDB (C ++).
"NDB" significa banco de dados de rede.
Do ponto de vista do servidor MySQL Cluster NDB um mecanismo de
armazenamento para armazenar tabelas de linhas.
Do ponto de vista Cluster NDB, uma instncia MySQL Server um
processo de API conectado ao cluster. NDB Cluster pode suportar
simultaneamente o acesso de outros tipos de processos de API, incluindo
Memcached, JavaScript / Node.js, Java, JPA e HTTP / REST. Todos os
processos de API podem operar com as mesmas tabelas e os dados
armazenados no Cluster NDB.
22
Autenticao e autorizao.
23
Arquitetura
MySQL Cluster projetado em torno de uma arquitetura multi-mestre
distribudo, compatvel com ACID. MySQL Cluster usa particionamento
automtico para dimensionar operaes de leitura e escrita e pode ser
acessada via SQL e no-SQL (NoSQL).
Replicao
Internamente o MySQL Cluster usa replicao sncrona atravs de um
mecanismo de confirmao de duas fases, a fim de garantir que os dados
sero gravados em vrios ns ao "commitar" os dados. (em contraste com o
que usualmente referido como "replicao MySQL", que assncrona.) Duas
cpias (rplicas) conhecidas como as de dados so necessrias para garantir a
disponibilidade. MySQL Cluster cria automaticamente "grupos de ns" a partir
do nmero de rplicas e ns de dados especificados pelo usurio. As
atualizaes so sincronicamente replicado entre os membros do grupo de ns
para proteger contra perda de dados e rpido suporte entre falhas nos ns.
Tambm possvel replicar de forma assncrona entre agregados; esta
muitas vezes referida como "Replicao MySQL Cluster" ou "replicao
geogrfica". Isso normalmente usado para replicar grupos entre os centros de
dados para recuperao de desastres ou para reduzir os efeitos da latncia da
rede, localizando os dados fisicos mais perto de um conjunto de usurios. Ao
contrrio de replicao do MySQL padro, a replicao geogrfica do MySQL
Cluster usa controle de concorrncia otimista(1).
(1) No controle de simultaneidade otimista, os usurios no bloqueiam os
dados quando os lem. Quando um usurio atualiza os dados, o sistema
verifica se outro usurio alterou os dados depois de lidos. Se outro usurio tiver
atualizado os dados, um erro ativado
A partir do MySQL Cluster 7.2, suporte para a replicao sncrona entre os
centros de dados foi suportado com o recurso multi-site Clustering.
24
Hybrid Storage
MySQL Cluster mantm todas as colunas indexadas em memria distribuda.
colunas no indexadas tambm pode ser mantido na memria distribuda ou
pode ser mantido no disco com um cache de pgina na memria. Armazenar
colunas no indexadas no disco permite MySQL Cluster armazenar conjuntos
de dados maiores do que a memria total de mquinas em cluster.
MySQL Cluster escreve redo logs em disco para todas as alteraes de dados,
bem como dados de verificao apontando para o disco regularmente. Isso
permite o cluster recuperar os dados de forma consistente a partir do disco
aps uma queda completa de cluster. medida que os redo logs so escritos
de forma assncrona em relao transao de confirmao, um pequeno
nmero de transaes podem ser perdidos se o cluster falhar por completo, no
entanto, isso pode ser atenuado pelo uso de replicao geogrfica ou cluster
multi-site discutido acima. Geralmente o atraso de gravao assncrona padro
2 segundos, e configurvel.
Quando uma tabela MySQL Cluster mantida na memria, o cluster s ir
acessar armazenamento em disco para escrever registros de Redo e
checkpoints. Como essas gravaes so sequenciais e acesso aleatrio
limitados esto
envolvidos,
MySQL
Cluster
pode
alcanar taxas de
25
Implementao
MySQL Cluster usa trs tipos diferentes de ns (processos):
N de dados (Data Node) (ndbd / processo ndbmtd): Esses ns armazenar
os dados. As tabelas so automaticamente compartilhadas entre os ns de
dados que tambm tratam de forma transparente o balanceamento de carga,
replicao, failover e auto-cura(SELF-HEALT).
n de gerenciamento (Management Node) (processo ndb_mgmd): Utilizado
para configurao e monitoramento do cluster. Eles so necessrios apenas
para iniciar ou reiniciar um n de cluster. Eles tambm podem ser configurados
como rbitros, mas isto no obrigatrio (Servidores MySQL pode ser
configurado como rbitros em vez disso).
26
Fonte:
SQL
PARA
TODOS
de
agosto/2015.
Disponvel
em:
27
Fonte:
SQL
PARA
TODOS
de
agosto/2015.
Disponvel
em:
CONSIDERAES FINAIS
Com o desenvolvimento deste trabalho conhecemos mais a fundo o
SGBD do MYSQL, sua arquitetura, sua utilizao e benefcios. Pudemos
conhecer como trabalha o banco em seu back-end. Vimos um pouco do
trabalho do DBA, suas responsabilidades sobre o banco. Conhecemos tambm
as engines de administrao do banco MYSQL (MYSAM e INNOB), vimos suas
caractersticas, suas vantagens e desvantagens.
Assim consideramos que o trabalho sobre Sistema de Gerenciamento de
banco de dados do MYSQL nos trouxe uma bagagem de informaes e
conhecimento, acrescentando em nosso perfil profissional.
28
REFERNCIAS
DEVMEDIA. Viso Geral do Sistema de Gerenciamento de Banco de Dados MySQL. Disponvel
em http://www.devmedia.com.br/visao-geral-do-sistema-de-gerenciamento-de-banco-dedados-mysql/2981;. Acesso em: 09 mai. 2016.
PRACIANO, ELIAS. Mysql: O comando SELECT. Disponvel em
https://elias.praciano.com/2014/03/mysql-o-comando-select/; Acesso em: 09 mai. 2016.
MYSQL. 14.2.9 SELECT Syntax. Disponvel em
http://dev.mysql.com/doc/refman/5.7/en/select.html; Acesso em: 09 mai. 2016.
FERREIRA, THIAGO. Otimizao de consultas MySQL. Disponvel em
http://imasters.com.br/artigo/14624/mysql/otimizacao-de-consultas-mysql-parte01/?trace=1519021197&source=single;. Acesso em: 09 mai. 2016.
WEBGOAL. Como otimizar consultas no MySQL Anlise das queries. Disponvel em
http://www.webgoal.com.br/como-otimizar-consultas-no-mysql/; Acesso em: 09 mai. 2016.
NUNES, ANDERSON. NDICES MYSQL AUMENTANDO A VELOCIDADE DAS SUAS CONSULTAS
EM AT 100X. Disponvel em https://www.profissionaisti.com.br/2011/09/indices-mysqlaumentando-a-velocidade-das-suas-consultas-em-ate-100x/; Acesso em: 09 mai. 2016.
MYSQL. 9.6. UTF8 para Metdados. Disponvel em
http://download.nust.na/pub6/mysql/doc/refman/4.1/pt/charset-metadata.html; Acesso em:
09 mai. 2016.
WILSON, JOS. Metadados Information_schema MySQL. Disponvel em
http://sqlparatodos.com.br/metadados-information_schema-mysql/; Acesso em: 09 mai.
2016.
DUARTE, EBER. Gerenciamento de Usurios e Controle de Acessos do MySQL. Disponvel em
http://www.devmedia.com.br/gerenciamento-de-usuarios-e-controle-de-acessos-domysql/1898; Acesso em: 05 mai. 2016.
DUARTE, EBER. Gerenciamento de usurios, privilgios e controle de acessos em MySQL.
Disponvel em http://www.devmedia.com.br/gerenciamento-de-usuarios-privilegios-econtrole-de-acessos-em-mysql/7077; Acesso em: 05 mai. 2016.
29
30