Prévia do material em texto
08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 1/8 Instalação e Con�gurações de SGBD na Prática Arquitetura de dados relacionais I 1. Introdução Um sistema gerenciador de banco de dados (SGBD) é formado por um conjunto de programas que permite o usuário realizar, de forma eficiente, a definição, a implementação, a manipulação e o compartilhamento de um banco de dados entre outros usuários e aplicações, conforme Elmasri e Navathe (2016). Uma das formas de se classificar os SGBDs é em relação ao modelo de dados adotado, sendo que os SGBDs baseados no modelo de dados relacional são os mais utilizados comercialmente. O modelo relacional foi proposto por Edgar Codd, em 1970, com base na teoria de conjuntos e lógica de predicados, na qual os dados são agrupados em tabelas que se relacionam entre si. As primeiras implementações comerciais foram disponibilizadas no início da década de 80, tais como o SQL/DS da IBM e o Oracle. De acordo com dados publicados pela BD-Engines, em maio de 2021, dentre os dez SGBDs mais populares, sete são sistemas gerenciadores de banco de dados relacionais (SGBDR), como mostrado na Gráfico 01. O MySQL ocupa o segundo lugar geral de popularidade entre todos os SGBDs no mundo e é o primeiro lugar entre os SGBDR de código aberto. Ele foi lançado em 1995 pela MySQL AB, empresa fundada pelos seus desenvolvedores, conforme Lobo (2008). Em janeiro de 2008, de acordo com Manzara (2011), ela foi adquirida pela empresa Sun Microsystems, que foi comprada pela Oracle em 2009. A Oracle mantém duas versões do MySQL, um com licença comercial, que inclui ferramentas extras e suporte, e outra versão com licença GPL. https://cead.uvv.br/conteudo/wp-content/uploads/2022/08/tabela2-1-768x454.png 08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 2/8 O SGBDR MySQL é compatível com diversos sistemas operacionais, dentre eles o Windows, o Linux e o Mac. Por ser um SGBD relacional, ele incorpora vários recursos e vantagens correspondentes ao modelo relacional e à linguagem SQL, além de suas particularidades. Vejamos algumas características e funcionalidades, na próxima seção. Para informações sobre licença GPL, acesse o seguinte conteúdo: GNU Operating System. GNU General Public License. 2007. Disponível em: https://www.gnu.org/licenses/gpl-3.0.en.html 2. Características e Funcionalidades do MySQL Com relação à segurança, o MySQL permite controlar o acesso dos usuários, concedendo que seja atribuído ou revogado tipos de permissões a determinados usuários ou grupos de usuários. Essas permissões incluem a leitura, inclusão, remoção ou atualização de dados em uma tabela ou visão (tabela virtual), por meio da linguagem SQL. A possibilidade de recuperação da base de dados por meio de backup também é outro item de segurança disponível no MySQL, assim como a realização de auditorias de acesso usadas para rastrear as atividades efetuadas pelos usuários. O MySQL permite que sejam definidas restrições de integridade, para que não haja perda de consistência de dados no banco de dados, caso ocorra alguma mudança realizada por usuários autorizados. As restrições de integridade são as regras do minimundo que precisam ser contempladas no banco de dados para que este se conserve válido, segundo Elmasri e Navathe (2018). Existem vários tipos de restrições de integridade, e o MySQL contempla a grande maioria, uma delas é a integridade referencial, que diz, de forma geral, que um atributo de uma tabela A que referencia a tabela B, precisa se referir a um atributo existente na tabela B, ou seja, trata-se da implementação de uma chave estrangeira (Foreing Key – FK). Para exemplificar, vamos imaginar a seguinte regra de negócio de uma empresa: Na empresa KJW, um funcionário precisa estar lotado em um dos departamentos existentes dessa empresa. Para representar a essa situação no banco de dados, teremos duas tabelas se relacionando entre si, como demonstrado na Figura 02. https://www.gnu.org/licenses/gpl-3.0.en.html 08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 3/8 Dessa forma, ao associar o atributo Depto (FK) da tabela Funcionário, com o atributo Código (PK), da tabela Departamento, estaremos impondo uma restrição de integridade referencial e o MySQL não permitirá a inclusão de um valor no atributo Depto, da tabela Funcionário, que não exista em alguma instância do atributo Código (PK), da tabela Departamento, como mostra a Figura 03. Ao contrário, a Figura 04 ilustra a inconsistência causada pela falta de definição do atributo Depto como chave estrangeira, o que possibilitou a inclusão de um departamento inexistente na tabela Departamentos, tornando o BD inválido. Para entender um pouco mais sobre como implementar a integridade referencial no MySQL, recomendamos a seguinte leitura: Relacionamento entre as tabelas Departamento e Funcionário. Exemplo da aplicação da integridade referencial entre duas tabelas. Inconsistência causada por falta de definição de uma chave estrangeira. https://cead.uvv.br/conteudo/wp-content/uploads/2022/08/tabela1-1.png https://cead.uvv.br/conteudo/wp-content/uploads/2022/08/tabela2-768x182.png https://cead.uvv.br/conteudo/wp-content/uploads/2022/08/tabela3-768x176.png 08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 4/8 Tanto a versão gratuita como a comercial do SGBDR MySQL conta com uma boa performance. Uma das características que possibilita esse bom desempenho são os índices. Os índices contribuem para a realização de buscas mais eficientes, fornecendo acesso rápido aos itens de dados. Outra característica importante é a possibilidade de criar funções pré-programadas para serem acionadas antes, ou após algum evento ou transação no BD, denominadas por gatilhos (triggers). De acordo com Silberschatz, Korth e Surdarshan (2020, p.112), um trigger pode ser usado para especificar ações automáticas (comandos) que o SGBD executará quando certos eventos e condições ocorrerem, causando uma modificação no banco de dados. Um exemplo da utilidade dos gatilhos por ser vista na seguinte situação, cujo contexto é um sistema de Recursos Humanos em que se deseja atualizar a lotação de um determinado funcionário, sem perder o seu histórico de lotação. Para isso, um gatilho pode ser definido a fim de que, todas as vezes em que houver um pedido de atualização do atributo Depto, da tabela Funcionário. Antes de atualizá-lo, o SGBD deverá gravar o valor desse atributo em uma outra tabela, na qual se mantém o histórico do funcionário. Dessa forma, teremos a tabela Funcionário sempre atualizada, sem perder o histórico de lotações dos funcionários. Para evitar tarefas repetidas e facilitar o trabalho dos desenvolvedores, o MySQL também possibilita a criação de procedimentos armazenados (stored procedures), que são um conjunto de instruções SQL armazenado e executado pelo SGBD sempre que for acionado. Dessa forma, de acordo Elmasri e Navathe (2016): “Se um programa de banco de dados for necessário para vários aplicativos, ele pode ser armazenado no servidor e chamado por qualquer um dos programas aplicativos, reduzindo assim, a duplicação de esforços, além de melhorar a modularidade do software”. (Tradução nossa). Elmari e Navathe (2016, p. 336) Outra vantagem importante do uso dos procedimentos armazenados é que, como o programa está sendo executado no servidor, em certas situações, isso pode reduzir a transferência de dados, melhorando os custos de comunicaçãoentre cliente e servidor. A conexão do MySQL com diversas linguagens de programação, tais como PHP, JAVA, ASP ou PYTON, proporciona o gerenciamento dos bancos de dados a partir de qualquer aplicação (desktop, mobile ou web) desenvolvida nessas linguagens. DEVMIDIA. Implementando Integridade Referencial no MySQL. Disponível em: https://www.devmedia.com.br/implementando-integridade-referencial-no-mysql/1996 https://www.devmedia.com.br/implementando-integridade-referencial-no-mysql/1996 08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 5/8 Uma particularidade importante do MySQL são os mecanismos de armazenamento (Storage Engines – SE). Eles possibilitam a escolha de componentes para manipular as operações SQL para diferentes tipos de tabelas. Abordaremos um pouco mais sobre os SE na próxima seção e, para conhecer quais são os SE disponibilizadas e suas características, recomendamos a seguinte leitura: 2.1 Arquitetura lógica do SGBD MySQL Nesta seção, trataremos sobre a arquitetura lógica do MySQL de acordo com Schwartz, Zaitsev e Tkachenko (2012). A arquitetura lógica do MySQL pode ser dividida nas camadas de aplicação, lógica e física, como ilustrado na Figura 05. A camada de aplicação é o local em que acontece a interação entre o SGBD MySQL e os usuários e aplicações. Nela se encontram os serviços de conexão, autenticação e segurança. A camada lógica é onde a maioria dos programas do MySQL se encontram, incluindo o interpretador de consultas, o otimizador, o gerenciador de consultas, o gerenciador de recuperação e o armazenamento, além das funções embutidas (stored procedures). Além disso, qualquer funcionalidade fornecida pelos mecanismos de armazenamento reside nesse nível, como, por exemplo, os procedimentos armazenados, os gatilhos e as visualizações. SCHWARTZ, P.; ZAITSEV, V.; e TKACHENKO, B. MySQL’s Logical Architecture. In: High Performance MySQL: Optimization, Backups, and Replication. Disponível em: https://www.academia.edu/27289779/High_Performance_MySQL_Optimization_Backups_and_Replic ation Arquitetura do MySQL. https://www.academia.edu/27289779/High_Performance_MySQL_Optimization_Backups_and_Replication https://cead.uvv.br/conteudo/wp-content/uploads/2022/08/tabela1-2-768x410.png 08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 6/8 A Camada física é o local em que ficam os mecanismos de armazenamento que são os responsáveis por armazenar e recuperar os dados armazenados. A arquitetura do MySQL separa o processamento de consultas e outras tarefas realizadas pelo servidor do armazenamento e a recuperação de dados. A comunicação entre eles se dá por meio da API do mecanismo de armazenamento. Essa interface oculta as diferenças entre os mecanismos de armazenamento e os torna amplamente transparentes na camada de lógica. A API contém algumas dezenas de funções de baixo nível que realizam operações como “iniciar uma transação” ou “buscar a linha que contém uma determinada chave primária”. Essa separação permite a escolha de como os dados serão armazenados e qual desempenho, recursos e outras características desejadas serão utilizadas. Os mecanismos de armazenamento não analisam os comandos SQL nem se comunicam entre si; eles simplesmente respondem às solicitações do servidor. A Oracle recomenda o uso do mecanismo de armazenamento InnoDB para tabelas, exceto para alguns casos de uso específicos Você vai encontrar mais informações sobre o InnoDB no manual de referência do MySQL. MySQL. The InnoDB Storage Engine. IN: MySQL 8.0 Reference Manual. Disponível em: https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html 3. Instalação e Configuração do Ambiente Para o nosso uso acadêmico, trabalharemos com a versão gratuita. O passo a passo para instalação e configuração dessa versão, encontra-se no link abaixo: 3.1 Controle de acesso e segurança Durante a instalação do MySQL 8.0 (ou versão mais atual), o instalador permite a definição da conta de usuário root (administrador de BD), com acesso total a todos os bancos de dados e a possibilidade de criar novas contas de usuários. Entretanto, o MySQL permite que essas contas sejam criadas e gerenciadas ao longo do tempo, a fim de controlar quais usuários poderão se conectar e acessar os bancos de dados. O sistema de privilégios do MySQL é o responsável por autenticar um usuário que se conecta de um determinado host e associá-lo às permissões que lhe foram concedidas pelo SGBD. O controle de acesso envolve dois estágios quando é executado um programa cliente que tenta se conectar ao https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html 08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 7/8 servidor: Estágio 1: o servidor aceita ou rejeita a conexão, baseado na identidade e senha correta. Estágio 2: caso tenha aceitado a conexão, o servidor verifica cada instrução emitida para determinar se o usuário tem privilégios suficientes para executá-la. Por exemplo, se um determinado usuário que tenha acesso a um banco de dados, tentar eliminar uma tabela nesse BD, o servidor verificará se esse usuário tem o privilégio DROP para o BD; ou caso o usuário queira tentar selecionar linhas de uma tabela, o servidor verificará se o usuário tem o privilégio denominado SELECT. Para conhecer todos os privilégios e permissões, você pode acessar o manual no seguinte link: 3.2 Criação de bancos de dados (exemplo) O vídeo seguinte exemplifica a criação de um banco de dados no SGBDR MySQL. MySQL. Privileges Provided by MySQL. IN: MySQL 8.0 Reference Manual. Disponível em: https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html 4. Conclusão Nesta lição, nós vimos um pouco sobre o potencial do MySQL, que ocupa o segundo lugar no ranking mundial de popularidade dos SGBDs. Vimos também suas características, funcionalidades e particularidades, incluindo sua arquitetura lógica, com ênfase em seus mecanismos de armazenamento. Além disso, aprendemos a instalar a versão gratuita do MySQL e a trabalhar com seu controle de acesso, concedendo e/ou revogando privilégios aos usuários. Por fim, ilustramos um exemplo de como criar um banco de dados usando a ferramenta Workbench do MySQL 8.0. https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html 08/08/23, 18:38 Instalação e Configurações de SGBD na Prática https://ceadgraduacao.uvv.br/conteudo.php?aula=instalacao-e-configuracoes-de-sgbd-na-pratica&dcp=arquitetura-de-dados-relacionais-i&topico=3 8/8 5. Referências DATE, C.J. Introdução a Sistemas de Banco de Dados. 8a. ed. Rio de Janeiro: Elsevier, 2003. DB-ENGINES. DB-Engines Ranking. May 2021. Disponível em: https://db- engines.com/en/ranking DEVMIDIA. Implementando Integridade Referencial no MySQL. Disponível em: https://www.devmedia.com.br/implementando-integridade-referencial-no-mysql/1996 ELMASRI, Ramez; NAVATHE, Shamkant B. Fundamentals of Database Systems. 7th edition. Hoboken: Pearson Education, 2016. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 7a. ed. São Paulo: Editora Pearson, 2018. LINKOFICIAL. MySQL: O que é, para que serve e suas vantagens. Disponível em: https://www.linkoficial.com.br/mysql-o-que-e-para-que-serve-e-suas-vantagens/. Acesso em 10 mai 2021. LOBO, Edson Junio Rodrigues. Curso Prático de MySQL. São Paulo: Digerati Books, 2008. MANZANO, José Augusto N. G. MySQL 5.5 Interativo: Guia Essencial de Orientação e Desenvolvimento. 1ª ed. São Paulo: Érica, 2011. MySQL. Privileges Provided by MySQL. IN: MySQL 8.0 Reference Manual. Disponível em: https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.htmlRAMAKRISHNAN, Raghu; GEHRKE, Johannes. Sistemas de Gerenciamento de Bancos de Dados. 3a. ed. Porto Alegre: McGraw-Hill, 2011 (ebook). SCHWARTZ, Baron; ZAITSEV, Peter; TKACHENKO, Vadim. High Performance MySQL: Optimization, Backups, and Replication. 3rd ed. Sebastopol: O“Reilly Media, 2012. SCHWARTZ, P.; ZAITSEV, V.; e TKACHENKO, B. MySQL’s Logical Architecture. In: High Performance MySQL: Optimization, Backups, and Replication. Disponível em: https://www.academia.edu/27289779/High_Performance_MySQL_Optimization_Backups_and_ Replication SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Modelo Relacional. In: Sistema de banco de dados. 6. ed. Rio de Janeiro: Elsevier, 2006, pp.25-31. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados. 7. ed. - Rio de Janeiro: LTC, 2020 (ebook). YOUTUBE (2016). Bóson Treinamentos. MySQL Workbench - Criar novo Banco de Dados e Tabelas. 7min20. Disponível em: https://www.youtube.com/watch?v=H1_3ttK2Wbw YOUTUBE. (2020) Bóson Treinamentos. Como Baixar e Instalar MySQL 8.0 e MySQL Workbench no Windows 10. 12min32. Disponível em https://www.youtube.com/watch?v=fmerTu7dWk8&t=2s