16
ESCOLA ESTADUAL DE ENSINO TÉCNICO DR.SOLON TAVARES TÉCNICO EM DESENVOLVIMENTO DE SOFTWARE DANIEL RICARDO LUIS OLIVEIRA NUNES MySQL GUAIBA 2011

Trabalho MySQL 07-04-2011

Embed Size (px)

Citation preview

Page 1: Trabalho MySQL 07-04-2011

ESCOLA ESTADUAL DE ENSINO TÉCNICO DR.SOLON TAVARES TÉCNICO EM DESENVOLVIMENTO DE SOFTWARE

DANIEL RICARDO LUIS OLIVEIRA NUNES

MySQL

GUAIBA 2011

Page 2: Trabalho MySQL 07-04-2011

1

DANIEL RICARDO LUIS OLIVEIRA NUNES

MySQL

Trabalho Técnico sobre Banco de Dados: MySQL do curso Técnico em Desenvolvimento de Softwares, da Escola Técnica Dr. Solon Tavares, como requisito parcial para obtenção da nota na disciplina de Banco de Dados.

GUAIBA 2011

Page 3: Trabalho MySQL 07-04-2011

2

SUMÁRIO

1 - HISTÓRIA ..................................................................................................................... 3 2 - LINHA DO TEMPO ....................................................................................................... 4 3 - INFORMAÇÕES GERAIS ............................................................................................ 4 4 - PRINCIPAIS CARACTERÍSTICAS ............................................................................. 5 4.1 – SGBD ........................................................................................................................... 5 4.2 – PORTABILIDADE ....................................................................................................... 5 4.3 – MULTITHREADS ........................................................................................................ 5 4.4 - FORMAS DE ARMAZENAMENTO ............................................................................ 6 4.5 – VELOCIDADE ............................................................................................................. 6 4.6 – SEGURANÇA .............................................................................................................. 6 4.7 – SQL .............................................................................................................................. 6 4.8 - FULLTEXT SEARCH ................................................................................................... 7 4.9 – CAPACIDADES ........................................................................................................... 7 5 - SEGURANÇA NO MYSQL ........................................................................................... 7

6 - POR QUE USAR? .......................................................................................................... 8

7 - LICENÇA DE USO ........................................................................................................ 8

8 - EMPRESAS QUE O UTILIZAM .................................................................................. 9

9 – COMPARAÇÕES ........................................................................................................ 10

10 – VANTAGENS ............................................................................................................ 10 10.1 - DESEMPENHO ........................................................................................................ 10 10.2 – SEGURANÇA .......................................................................................................... 11 10.3 - APLICABILIDADE ................................................................................................. 11 10.4 – GRATUITO .............................................................................................................. 11 11 – LIMITAÇÕES ............................................................................................................ 11

12 - AMBIENTE WEB ...................................................................................................... 12

13 - GERENCIAMENTO DE LOG .................................................................................. 13

14 - EXPECTATIVAS FUTURAS .................................................................................... 13

15 - CONSIDERAÇÕES FINAIS ...................................................................................... 14

REFERÊNCIAS BIBLIOGRAFICAS .............................................................................. 15

Page 4: Trabalho MySQL 07-04-2011

3

1 - HISTÓRIA

O MySQL teve origem quando os desenvolvedores David Axmark, Allan Larsson e

Michael “Monty” Widenius, na década de 90, precisaram de uma interface SQL compatível

com as rotinas ISAM que utilizavam em suas aplicações e tabelas. Em um primeiro momento,

tentaram utilizar a API mSQL, contudo a API não era tão rápida quanto eles precisavam, pois

utilizavam rotinas de baixo nível (mais rápidas que rotinas normais). Utilizando a API do

mSQL, escreveram em C e C++ uma nova API que deu origem ao MySQL.

Surgiu, então, da idéia de se criar um banco de dados que tivesse todas estas

características, primordiais tanto no mercado on-line (internet) quanto no mercado corporativo

(desktop), e que acima de tudo tivesse seu custo reduzido.

Na época da criação, um dos objetivos era que ele rodasse em Linux, embora existam

hoje versões para diversos Sistemas Operacionais, o que acabou popularizando o sistema em

1999, quando o sistema operacional do Sr. Linus Torvalds e o Movimento Open Source

deslancharam no mercado mundial.

Com o ótimo resultado gerado por essa nova API, o MySQL começou a ser difundido

e seus criadores fundaram a empresa responsável por sua manutenção, que é a MySQL AB.

A partir dessa fase, o MySQL tornou-se mais conhecido por suas características de

rápido acesso e cada vez mais utilizado. Novas versões foram lançadas, contemplando novas

necessidades e firmando, assim, sua posição no mercado.

No dia 16 de Janeiro de 2008, a MySQL AB, desenvolvedora do MySQL foi adquirida

pela Sun Microsystems, por US$ 1 bilhão, um preço jamais visto no setor de licenças livres.

No dia 20 de Abril de 2009 a Oracle compra a Sun Microsystems e todos o seu produtos,

incluindo o MySQL.

Hoje seu desenvolvimento e manutenção empregam aproximadamente 400

profissionais no mundo inteiro, e mais de mil contribuem testando o software, integrando-o a

outros produtos, e escrevendo a respeito dele.

O MySQL hoje suporta Unicode, Full Text Indexes, replicação, Hot Backup, GIS,

OLAP e muitos outros recursos.

O resultado disso foi que hoje, o MySQL, considerado um dos banco de dados mais

rápidos do mercado, tornou-se alternativa barata e viável para uma grande parte do mercado

corporativo e on-line.

Page 5: Trabalho MySQL 07-04-2011

4

O nome do golfinho do MySQL (logotipo) é Sakila, que foi escolhido pelos seus

fundadores de uma enorme lista de nomes sugeridos pelos usuários no concurso "Name the

Dolphin".

2 - LINHA DO TEMPO

1994 – Início do projeto

1995 – Lançamento da primeira versão

2001 – Lançamento da versão 3.23

2004 – Lançamento da versão 4.1

2005 – Lançamento da versão 5.0

2008 – Aquisição da MySQL AB pela Sun Microsystems

2008 – Lançamento da versão 5.1

2009 – Aquisição da Sun Microsystems pela Oracle

2010 – Lançamento da versão 5.5 (versão atual)

2011 – Anuncio da prévia da versão 5.6

3 - INFORMAÇÕES GERAIS

O programa MySQL é um servidor robusto de bancos de dados SQL (Structured

Query Language - Linguagem Estruturada para Pesquisas) muito rápido, multitarefa e

multiusuário. O Servidor pode ser usado em sistemas de produção com alta carga e missão

crítica bem como pode ser embutido em programa de uso em massa.

MySQL é de Licença Dupla. Os usuários podem escolher entre usar o programa como

um produto Open Source sob os termos da GNU General Public License ou podem comprar

uma licença comercial padrão.

Um banco de dados é uma coleção de dados estruturados. Ele pode ser qualquer coisa

desde uma simples lista de compras a uma galeria de imagens ou a grande quantidade de

informação da sua rede coorporativa. Para adicionar, acessar, e processar dados armazenados

em um banco de dados de um computador, você necessita de um sistema de gerenciamento de

bancos de dados como o Servidor MySQL. Como os computadores são muito bons em lidar

Page 6: Trabalho MySQL 07-04-2011

5

com grandes quantidades de dados, o gerenciamento de bancos de dados funciona como a

engrenagem central na computação, seja como utilitários independentes ou como partes de

outras aplicações.

O MySQL é um sistema de gerenciamento de bancos de dados relacional. Um banco

de dados relacional armazena dados em tabelas separadas em vez de colocar todos os dados

um só local. Isso proporciona velocidade e flexibilidade.

4 - PRINCIPAIS CARACTERÍSTICAS

4.1 - SGBD

O MySQL, além de banco de dados, contém todas as características de um SGBD

(Sistema Gerenciador de Banco de Dados), que é o MySQL Server. Além de armazenar os

dados, a ferramenta provê todas as características de multiacesso a estes, entre outras

funcionalidades de um SGBD, como, por exemplo, gerenciamento de acesso, integridade dos

dados e relacional, concorrência, transações, entre outros.

4.2 - PORTABILIDADE

Desenvolvido utilizando as linguagens de programação C e C++, unido com o uso de

GNU Automake, Autoconf e Libtool, torna o MySQL uma aplicação altamente portável entre

diferentes sistemas, plataformas e compiladores. Além disso, fornece sua API para várias

outras linguagens, como Java, Python, PHP, Perl, C, C++, entre outras.

4.3 - MULTITHREADS

Usa programação de threads utilizando-as diretamente no kernel da plataforma. Além

de aumentar significativamente a velocidade de processamento, ainda facilita a integração da

ferramenta em hardwares com mais de uma CPU.

Page 7: Trabalho MySQL 07-04-2011

6

4.4 - FORMAS DE ARMAZENAMENTO

O MySQL disponibiliza vários tipos de tabelas para armazenamento de dados, tendo

cada tipo suas próprias características. A vantagem dessa variedade de tabelas é a

possibilidade de escolher o tipo em cada situação diferente. Enquanto um tipo prioriza

velocidade, outro prioriza volume de dados, entre outras características.

4.5 - VELOCIDADE

Maior velocidade no acesso aos dados em razão de vários fatores em seu

desenvolvimento como tabelas ISAM (substituídas pelo novo mecanismo MyISAM na

versão5), utilização de cachês em consultas, utilização de indexação BTREE para tabelas do

tipo HEAP, algoritmos de buscas, entre outros recursos.

4.6 - SEGURANÇA

Sistema gerenciador de conexões que trabalha com criptografia no tráfego de senhas.

Ainda, em complemento ao uso de autenticação baseado em senhas, é possível habilitar uma

espécie de firewall de autenticação, responsável por habilitar as devidas conexões somente

para estações e domínios especificados em sua lista de acesso.

4.7 - SQL

O SQL utilizado pelo MySQL é altamente veloz. Isto se deve ao fato de a linguagem

ter sido implementada por meio de códigos e funções altamente otimizadas pelos seus

desenvolvedores.

Essa característica de otimização tem como consequência uma grande vantagem e uma

desvantagem: o lado bom é a velocidade na execução dos códigos SQL. O lado ruim é que

para otimizar tais códigos, nem todos os padrões da versão mais atual do SQL foram

migrados para o MySQL, pois poderiam comprometer a velocidade do banco de dados. O

MySQL baseia-se nas versões mais atuais do SQL, em parte incluindo sua versão 2003. Mas

na maioria dos casos, essa desvantagem não deve influenciar na aplicação.

Page 8: Trabalho MySQL 07-04-2011

7

4.8 - FULLTEXT SEARCH

A funcionalidade de busca no estilo fulltext search já estava presente na versão 4 do

MySQL, tendo aparecido pela primeira vez entre as versões 3 e 4. Este tipo de busca é um dos

mais utilizados em grandes soluções integradas com bancos de dados. Existem dois modos

com que o MySQL gerencia os índices, sendo um a criação de índices, tendo como base

campos do tipo texto (recomendado para bancos de dados de pequeno e médio portes), e outro

em uma tabela própria de índices, fornecendo um melhor desempenho para bancos de dados

de grande porte.

4.9 - CAPACIDADES

O MySQL tem um alto poder de execução e de armazenamento. Dependendo da

plataforma onde a ferramenta será utilizada, suas tabelas poderão armazenar espaços

extraordinários, ficando limitadas somente ao tamanho máximo de arquivos com que a

plataforma em questão pode manipular. No caso de tabelas do tipo InnoDB, cujo

armazenamento pode ser realizado por um ou mais arquivos separados, é possível armazenar

até 65.536 TB (terabytes).

No caso de expressões SQL, o SGBD suporta execuções de scripts SQL com até 61

uniões de tabelas (joins), e em se tratando de velocidade de execução, o MySQL pode ser

enquadrado entre os mais velozes, se não o mais veloz, justamente por este ter sido um dos

motivos que levou seus programadores a desenvolvê-lo, baseado em tecnologias que

permitiram tal fato.

O MySQL é um banco de dados extremamente poderoso, pronto para executar mais de

um bilhão de consultas por dia de um site, ou até mesmo processar milhares de transações por

minuto.

5 - SEGURANÇA NO MYSQL

O MySQL possuí componentes de segurança contra ameaças externas como crackers e

outros, e também protege os dados dos próprios usuários. O MySQL apresenta vários níveis

Page 9: Trabalho MySQL 07-04-2011

8

de segurança em relação ao acesso. Todas as informações de segurança estão armazenadas no

banco.

A filosofia de segurança em banco de dados refere-se a fornecer ao usuário apenas o

que é essencial para o seu trabalho.

O MySQL utiliza ACLs (“Acess Control Lists”) para verificar se o usuário está

autorizado a se conectar no banco, acessar o dado para consulta e atualização.

Não suporta a autenticação de usuários pelo sistema operacional, nem o

estabelecimento de prazo de validade para senha. O usuário MySQL não tem ligação com os

usuários do UNIX (conta) ou Windows. No entanto se o nome do usuário do MySQL não for

informado default é a conta do UNIX.

Suporta a execução de backup online do banco de dados.

6 - POR QUE USAR?

O servidor de banco de dados MySQL é extremamente rápido, confiável, e fácil de

usar. O Servidor MySQL também tem um conjunto de recursos muito práticos desenvolvidos

com a cooperação dos usuários.

Foi desenvolvido originalmente para lidar com bancos de dados muito grandes de

maneira muito mais rápida que as soluções existentes e tem sido usado em ambientes de

produção de alta demanda por diversos anos de maneira bem sucedida. Apesar de estar em

constante desenvolvimento, o Servidor MySQL oferece hoje um rico e proveitoso conjunto de

funções. A conectividade, velocidade, e segurança fazem com que o MySQL seja altamente

adaptável para acessar bancos de dados na Internet.

7 - LICENÇA DE USO

O MySQL é desenvolvido e distribuído por meio de duas licenças que irão depender

do tipo de uso da ferramenta. Na maioria dos casos, seu uso é livre. Contudo, vale a pena

conhecer as duas possíveis licenças do MySQL.

A primeira, software livre, é baseada nas cláusulas da GNU-GPL (General Public

Licence), a qual estabelece o que se pode ou não fazer com a ferramenta e demais recursos.

Page 10: Trabalho MySQL 07-04-2011

9

Além do programa, o seu código-fonte também é disponibilizado para que qualquer pessoa

possa adaptá-lo às suas necessidades, contudo, todas essas situações serão tratadas e

detalhadas na licença GNU-GPL.

Basicamente, a licença do tipo GNU-GPL baseia-se nos seguintes princípios:

- Utilização: Permite utilizar o software para qualquer propósito.

- Distribuição: Permite a livre distribuição do software entre todas as pessoas.

- Didática: Permite que seu funcionamento seja estudado a partir de seu código-fonte.

- Colaboração: Permite que seu código-fonte seja alterado para evoluir a ferramenta,

desde que seu novo código-fonte continue sendo livre seguindo essa licença.

A segunda licença é comercial. Para algumas situações sobre como embutir o MySQL

dentro de suas aplicações comerciais (OEMs, ou seja, fora dos termos da GNU-GPL), obter

suporte diferenciado, ou obter pacotes com mais ferramentas, essa licença pode ser mais

apropriada.

O melhor tipo de licença variará de caso para caso, dependendo da necessidade de

treinamentos, suportes, entre outros fatores. Geralmente o MySQL pode ser utilizado

gratuitamente.

8 - EMPRESAS QUE O UTILIZAM

O portfólio de clientes e usuários do MySQL conta com centenas de grandes projetos

bem-sucedidos e de grande porte ao redor do mundo. Entre os cases mais famosos, vale a

pena citar o da NASA.

O departamento NAIS (dentro da NASA) é responsável pela gerência dos contratos da

empresa, movimentando transações que chegam a milhões de dólares por ano. Em razão da

grande demanda de sua utilização e altos custos de manutenção do banco de dados Oracle

utilizados anteriormente no sistema, a equipe do NAIS optou por migrar os seus bancos de

dados para uma solução open source. Com base nisso, estudaram qual seria a melhor opção de

código aberto e optaram por utilizar o MySQL.

Além deste, diversos outros grandes cases podem ser destacados em projetos de

missão crítica, entre eles: Bradesco, Telemar, HP-Compaq, Sony, Cisco Systems, Dataprev,

Nokia, Motorola, Alcatel, Ibest, Yahoo Finance, US Navy, US Army, US Federal Reserve

Bank, Suzuki, Hyperion, Lycos, além de muitos outros.

Page 11: Trabalho MySQL 07-04-2011

10

9 - COMPARAÇÕES

O MySQL conta com uma série de recursos para análise do tempo de execução de

operações. Isto possibilitou que seus desenvolvedores realizassem alguns testes comparativos

com outros bancos de dados.

Esses testes foram realizados baseados em um computador com Windows NT4 e

acesso via ODBC. Dentre os bancos de dados mais conhecidos, os resultados mostrados nas

tabelas 1 e 2 foram obtidos:

Banco de dados Segundos

mysql_odbc 464

db2_odbc 1.206

ms-sql_odbc 1.634

oracle_odbc 20.800

sybase_odbc 17.614

Tabela 1 - Leitura de 2.000.000 por índice

Banco de dados Segundos

mysql_odbc 619

db2_odbc 3.460

ms-sql_odbc 4.012

oracle_odbc 11.291

sybase_odbc 4.802

Tabela 2 - Inserção de 350.768 linhas

10 - VANTAGENS

10.1 - DESEMPENHO

O MySQL é considerado o banco de dados mais rápido. Agilidade tem sido um ponto

bastante relevante em matéria de sistemas, principalmente no quesito internet.

Page 12: Trabalho MySQL 07-04-2011

11

10.2 – SEGURANÇA

Com seus diversos tipos de tabelas, característica exclusiva do MySQL, é possível ter

um banco de dados bastante seguro e estável contando com integridade referencial, backup e

restore, controle de usuários e acessos, e ainda, se necessário, verificação e correção de

corrompimento de tabelas.

10.3 - APLICABILIDADE

Muitos me perguntam se o MySQL é usado somente para aplicações internet . A

resposta é não. O MySQL pode ser utilizado como banco de dados desktop , ou seja, em

aplicações corporativas. Dá suporte a diversas linguagens de programação incluindo o Delphi

da empresa Borland e o Java da Sun. Ambos podem acessar o MySQL através dos drivers

MySQL ODBC e MySQL JDBC, respectivamente.

10. 4 - GRATUITO

O MySQL está inscrito no tipo de licenciamento GNU General Public License.

11 - LIMITAÇÕES

Os limites do MySQL são determinados de acordo com o Storage Engine. Alguns

exemplos:

Page 13: Trabalho MySQL 07-04-2011

12

Característica MyISAM InnoDB

Limite de armazenamento 256 TB 64 TB

Limite de tabelas Indeterminado Indeterminado

Limite de linhas por tabela (232)2 (1.844E+19) Indeterminado

Limite de colunas por tabela 4096 1000

Limite de índices por tabela 64 Indeterminado

Comprimento máximo de chave 1000 bytes 3500 bytes

Comprimento máximo de linha 64 KB 4 GB

Comprimento máximo de coluna 64 KB 4 GB

Tabela de limitações do MySQL

12 - AMBIENTE WEB

Para desenvolver soluções baseadas na WEB precisamos de fatores como: rapidez,

confiabilidade e funcionalidade.

A necessidade em adotar um software de banco de dados como o MySQL está na

condição de equilíbrio do custo/beneficio que proporciona vantagens tanto para o

desenvolvedor, que não precisa levar em consideração decréscimo no seu custo horário por

conta de tecnologia cara, tanto para o cliente que terá um custo de manutenção muito mais

compacta e econômica, por se tratar de uma tecnologia de fácil acesso e grande aceitação no

mercado. Uma das vantagens em se utilizar o MySQL para aplicações WEB é seu suporte a

conexões simultâneas. Outra característica significativa é que não há perda de desempenho

nem na integridade física dos dados enquanto essas conexões estejam simultaneamente em

atividade.

Portanto, se há a necessidade de usar um banco de dados de baixo custo, suporte a

múltiplas conexões e sem relacionamentos complexos, o MySQL é uma excelente escolha.

Page 14: Trabalho MySQL 07-04-2011

13

13 - GERENCIAMENTO DE LOG

O MySQL mantêm um log de todas as operações que alteraram dados ou que

potencialmente teriam alterado, como um delete que não encontrou nenhum registro.

O log é feito a nível de linha, alem dos dados modificados ele guarda informações a

respeito do servidor que sejam relevantes para poder reproduzir as sentenças, códigos de erro,

metadados e o tempo que a sentença levou para ser executada.

O Log é utilizado para dois propósitos importantes:

- Recuperação. Após uma pane do sistema ou a restauração de um backup.

- Replicação. Quando se utilizam servidores relacionados em um esquema de

Master/Slave o log é utilizado para determinar quais dados precisam ser executados nos

servidores slave.

O MySQL mantêm dois níveis de Log. Um log de comandos SQL chamado de

Statement-based Log e outro com as modificações feitas em cada registro chamado de Row-

based log.

O sistema conta com uma ferramenta que exporta os logs em formato HTML.

14 - EXPECTATIVAS FUTURAS

Muito se discutiu recentemente com a aquisição da Sun pela Oracle e a possibilidade

dos novos proprietários considerarem o projeto um concorrente potencial ou, no mínimo,

perder o interesse por ele.

A verdade é que a Oracle ainda não se pronunciou a respeito, mas o mercado está

confiante na continuidade do MySQL pelos seguintes motivos:

Oracle e MySQL são produtos diferentes que atendem a nichos diferentes do mercado.

O MySQL tem código aberto, a Oracle é detentora da marca, mas nada impede que

qualquer usuário utilize o seu código fonte livre para derivar um produto 100% compatível

modificando somente o nome do sistema. Algo muito parecido aconteceu quando a Borland

liberou o código do Interbase e depois o fechou novamente. Baseado nesse código a

comunidade criou o Firebird que hoje é muito melhor e mais utilizado que o próprio

Interbase.

Page 15: Trabalho MySQL 07-04-2011

14

Quando um projeto open source atinge um número suficiente de usuários, o que é o

caso do MySQL, se torna muito difícil de matá-lo. Mesmo que o autor original perca o

interesse sempre existirão voluntários dispostos a mantê-lo.

Atualmente, os desenvolvedores do MySQL continuam tocando naturalmente o

desenvolvimento do sistema.

15 - CONSIDERAÇÕES FINAIS

O SGBD MySQL exerce bem sua função e é gratuito. É um dos SGBDs mais rápidos

e leves, tornando-se o mais utilizado em aplicações para web.

Definir o banco de dados adequado é uma questão de análise de características,

recursos e capacidade, mas independente da solução escolhida, pode-se sentir confortável ao

se utilizar de sistemas gerenciadores de banco de dados livres, não deixando a desejar frente a

soluções proprietárias.

Page 16: Trabalho MySQL 07-04-2011

15

REFERÊNCIAS BIBLIOGRAFICAS

APOSTILANDO. WebMaster. SQL. Guia Completo do MySQL. Disponível em: <http://www.apostilando.com/download.php?cod=152&categoria=MySQL>. Acesso em 17 de março de 2011. APOSTILASPDF. Apostilas grátis. Apostila Manual de Banco de Dados MySQL. Disponível em: <http://www.apostilaspdf.com/apostila-manual-banco-dados-mysql/>. Acesso em 17 de março de 2011. MYSQL. MySQL.com. Benchmarks. Disponível em: <http://www.mysql.com/why-mysql/benchmarks/>. Acesso em 17 de março de 2011.

SQLMAGAZINE. Home devmedia. MySQL – Quem é você?. Disponível em: <http://www.sqlmagazine.com.br/Colunistas/AdrianoSantos/02_MYSQL.asp>. Acesso em 17 de março de 2011. WIKIPEDIA. A enciclopédia livre. Artigo. MySQL. Disponível em: <http://pt.wikipedia.org/wiki/MySQL>. Acesso em 17 de março de 2011. NOVATEC. Livros. MySQL Completo. Disponível em: <http://www.novateceditora.com.br/livros/mysqlcompleto/capitulo8575221035.pdf>. Acesso em 17 de março de 2011.