Baixe o app para aproveitar ainda mais
Prévia do material em texto
WBA0880_v1.0 APRENDIZAGEM EM FOCO ADMINISTRAÇÃO DE BANCO DE DADOS 2 APRESENTAÇÃO DA DISCIPLINA Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Um Administrador de Banco de Dados, ou DBA, é um profissional de Tecnologia da Informação responsável por trabalhar na criação, manutenção, consulta e ajuste do banco de dados de uma empresa. Além disso, eles também são responsáveis por manter a segurança e a integridade dos dados. Essa função requer que os profissionais tenham bom conhecimento e experiência em um Sistema de Gerenciamento de Banco de Dados (SGBD) específico que a empresa usa, como o SQL Server ou Oracle. O administrador de banco de dados é a chave para que tudo ocorra bem em um SGBD, garantindo o fluxo de dados e o acesso ininterrupto dos dados à organização. Quando o DBA funciona de forma eficaz, o resultado é uma empresa eficiente e capaz de armazenar e escalar seus dados com sucesso. Qualquer erro no SGBD refletirá nas receitas da empresa, seja esse erro uma pequena queda de energia, má manutenção de dados ou erro humano. Qualquer um deles podem gerar prejuízos para a empresa, então, observe que o papel do DBA é crítico em uma organização. Desse modo, esta disciplina foi desenvolvida contemplando todas as competências necessárias para a formação de um DBA. Inicialmente, você conhecerá os dois principais SGBDs do mercado que são o Oracle e o SQL Server. Em seguida, apresentaremos o conceito de transação e as particularidades de comandos e transações no Oracle e o SQL Server. Ainda sobre transações, você conhecerá uma propriedade 3 muito importante em banco de dados relacional que é a ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Por fim, você conhecerá diversas técnicas de segurança e de proteção ao banco de dados, como técnicas de backup e recuperação de dados, administração de usuários, controle de acesso, entre outros. Não se preocupe se alguns conceitos e termos citados aqui não lhe são familiares, tudo isso ficará muito claro e intuitivo no final da disciplina. Bons estudos! INTRODUÇÃO Olá, aluno (a)! A Aprendizagem em Foco visa destacar, de maneira direta e assertiva, os principais conceitos inerentes à temática abordada na disciplina. Além disso, também pretende provocar reflexões que estimulem a aplicação da teoria na prática profissional. Vem conosco! Sistemas de Gerenciamento de Banco de Dados ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 1 5 DIRETO AO PONTO O banco de dados é baseado na coleta de dados armazenados em um formato estruturado, em que precisamos de um SGBD (Sistema de Gerenciamento de Banco de Dados) e SGBDR (Sistema de Gerenciamento de Banco de Dados Relacional) para gerenciar a coleta desses dados. Desde os primeiros tempos da tecnologia da computação, os dados tinham que ser salvos e organizados em fitas - raramente usadas no mundo de hoje. O principal problema com essas fitas era a impossibilidade de reler os dados, então, nasceram os bancos de dados e, junto a eles, veio a necessidade de gerenciar esse processo de armazenamento, segurança e recuperação dos dados. Tanto o SGBD quanto o SGBDR são muito semelhantes e uma pessoa que não seja de tecnologia não consegue diferenciá-los. No entanto, precisamos dar uma olhada em ambas as tecnologias para entendê-las totalmente. Um SGBD é uma solução de tecnologia usada para armazenar e gerenciar informações por meio da implementação de abordagens sistemáticas. Ele foi introduzido na década de 1960, com opções eficientes de manipulação de dados como inserção, exclusão e atualização de dados armazenados nos bancos de dados. Aqui cabe uma consideração importante: um SGBD não se limita às operações CRUD (Criar, Ler, Atualizar e Excluir). Além disso, ele fornece opções de definição e controle para que qualquer empresa ou indivíduo possa trabalhar em estreita colaboração com os bancos de dados e obter as informações desejadas com mais precisão. Com base nisso, pode-se definir SGBD como uma coleção de dados inter-relacionados e um programa responsável por gerenciar esses 6 dados, realizando o armazenamento, a atualização, a segurança e permitindo o acesso a esses dados de maneira fácil e eficaz. O SGBD possui essencialmente três arquiteturas (Figura 1), cada uma das arquiteturas será discutida a seguir. Arquitetura de camada única (ou banco de dados local): nesse tipo de arquitetura, o banco de dados está diretamente disponível para o usuário usá-lo para armazenar dados, desse modo, qualquer solicitação feita pelo usuário não requer uma conexão de rede para realizar a ação no banco de dados. Por exemplo: você possui uma agenda de contato telefônico em seu celular. Quando você abre essa agenda, os dados são acessados localmente, sem a necessidade de buscar o contato em um servidor externo. Figura 1 - Arquiteturas em Camadas SGBD Fonte: elaborada pelo autor. 7 Arquitetura de duas camadas: essa arquitetura inclui uma camada de aplicativo entre o usuário e o SGBD, que é responsável por comunicar a solicitação do usuário ao sistema de gerenciamento de banco de dados e, em seguida, enviar a resposta do SGBD ao usuário. Uma interface de aplicativo conhecida como ODBC (Open Database Connectivity) fornece uma API que permite que o programa do cliente invoque o SGBD. A maioria dos fornecedores de sistemas de banco de dados fornece drivers ODBC para seus SGBD. Assim, tal arquitetura fornece segurança extra ao SGBD, uma vez que não é exposta diretamente ao usuário final. Além disso, a segurança pode ser melhorada adicionando verificações de segurança e autenticação na camada de aplicativo. Arquitetura de três camadas: essa é a arquitetura geralmente utilizada por aplicativos web, sendo uma extensão da arquitetura de 2 camadas. Como vimos, a arquitetura de 2 possui uma camada de aplicação que pode ser acessada programaticamente para realizar várias operações no SGBD. Geralmente, o aplicativo entende a linguagem de acesso ao banco de dados e processa as solicitações dos usuários finais para o SGBD. Na arquitetura de 3 camadas é adicionada uma camada de apresentação que fornece uma interface gráfica para o usuário final interagir com o SGBD. Para o usuário final, a camada de interface é o Sistema de Banco de Dados e o usuário final não tem ideia sobre a camada de aplicativo e o sistema SGBD. Por fim, cabe destacar que o SGBDR é um tipo de SGBD que armazena os dados em formato tabular e é usado para classificá-los em linhas e colunas, que são chamadas de tuplas e tabelas. Nesse contexto, como exemplos de SGBDR temos o SQL Server e o Oracle Database. 8 Referências bibliográficas RAMAKRISHNAN, R.; GEHRKE, J. Sistemas de gerenciamento de banco de dados. 3. ed. Porto Alegre: Bookman, 2011. PARA SABER MAIS O SGBDR é um sistema padrão para o gerenciamento de banco de dados relacional. Por sua vez, os dados são armazenados na forma de linhas e colunas no SGBDR. As relações entre as tabelas também são armazenadas na forma de tabela. A linguagem de programação SQL (Structured Query Language) é usada para realizar tarefas como inserir, atualizar ou recuperar dados de um banco de dados. Os principais bancos de dados relacionais usam SQL, como é o caso do Oracle, Microsoft SQL Server, MySQL, entre outros. Características de um SGBDR: • Bancos de dados SQL são bancos de dados baseados em tabelas. • Armazenamento de dados em linhas e colunas. • Cada linha contém uma instância única de dados para as categorias definidas pelas colunas. • Fornece uma chave primária para identificar exclusivamente as linhas. Então, observe que o conceito fundamental por trás dos bancos de dados relacionais é a organização de dados em coleções de tabelas que consistem em colunas e linhas, conforme pode ser visto na Figura 2. 9 Figura 2 - Banco dedados relacional - Tabelas Fonte: elaborada pelo autor. A principal vantagem dos bancos de dados relacionais é que eles permitem aos usuários categorizar e armazenar facilmente dados que podem ser consultados e filtrados posteriormente para extrair informações específicas para relatórios. Os bancos de dados relacionais também são fáceis de estender e não dependem de organização física. Após a criação do banco de dados original, uma nova categoria de dados pode ser adicionada sem que todos os aplicativos existentes sejam modificados. TEORIA EM PRÁTICA No início do desenvolvimento de qualquer sistema, seja ele web, desktop ou móvel, um dos primeiros passos é escolher o tipo de banco de dados: se Banco de Dados estruturados SQL ou Banco de Dados NoSQL. Após escolher o tipo de banco de dados, o próximo passo é escolher o gerenciador de banco de dados. Observe o seguinte detalhamento que a senhora Ana, proprietária de uma loja de móveis, lhe passou sobre a aplicação que deseja que você desenvolva: 10 “O cliente chega em minha loja e escolhe um móvel que deseja adquirir. Por exemplo, se ele vê um sofá que esteja a seu gosto, ele se senta em minha mesa para negociarmos. Então eu apresento todas as opções de cores de sofá, bem como os tamanhos e a quantidade disponível do produto em estoque (de acordo com as necessidades do cliente). Se ele desejar comprar o móvel, então é realizado um cadastro com todos os dados pessoais. Em seguida, emito um pedido para entrega do produto e o cliente pode acompanhar o status do pedido via aplicativo.” Com base nessa descrição, ao seu ver, qual tipo de banco de dados seria ideal para a empresa da senhora Ana (SQL ou NoSQL)? Indique as características de cada um dos tipos de bancos e o motivo da escolha. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet. Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, Indicações de leitura 11 portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 No capítulo 4 do livro Sistemas de Banco de Dados, os autores apresentam a definição dos tipos de dados em SQL, especificando as restrições. Acrescenta-se, ainda, que o autor apresenta as principais instruções SQL como INSERT, UPDATE, DELETE e UPDATE. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. Barueri: Pearson, 2019. p. 57-72. Indicação 2 No capítulo 1 do livro Projeto de Banco de Dados, o autor apresenta a definição de sistema de gerenciamento de banco de dados, bem como os diferentes tipos de modelos de banco de dados como modelo conceitual, modelo lógico e modelo conceitual como modelo de organização. HEUSER, C. A. Projeto de banco de dados - V4. 6. ed. São Paulo: Bookman, 2017. p. 1-9. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber 12 Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. A arquitetura de um SGBD depende do __________, no qual ele é executado. Por exemplo, em uma arquitetura __________, os sistemas de banco de dados na máquina __________ podem executar várias solicitações feitas pela máquina __________. Assinale a alternativa que completa adequadamente as lacunas: a. Servidor; de três camadas; local; em nuvem. b. Computador; de três camadas; cliente; servidor. c. Sistema computacional; cliente-servidor; servidor; cliente. d. Servidor; de duas camadas; cliente; servidor. e. Sistema computacional; três camadas; cliente; servidor. 2. Um SGBDR se refere a um banco de dados __________ que armazena dados em um formato __________, usando __________ e __________. Isso torna mais fácil localizar e acessar valores específicos no banco de dados. Assinale a alternativa que completa adequadamente as lacunas: 13 a. Relacional; estruturado; linhas; colunas. b. NoSQL; não estruturado; chave; valor. c. Não estruturado; colunar; linhas; colunas. d. Não relacional; não estruturado; chave; valor. e. Tabular; estruturado; chave; valor. GABARITO Questão 1 - Resposta C Resolução: O SGBD pode possuir três arquiteturas distintas: camada única, duas camadas ou três camadas. Na arquitetura de duas camadas ou cliente-servidor, um cliente pode realizar solicitações para uma máquina servidor. O servidor, por sua vez, atende as requisições do cliente. Questão 2 - Resposta A Resolução: Os bancos de dados relacionais se destacam por sua capacidade de armazenar dados estruturados. Os dados são armazenados em uma estrutura tabular usando linhas e colunas, formando uma tabela. Transações ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 2 15 DIRETO AO PONTO Por que ocorre bloqueio em um banco de dados? Como em outros sistemas, os bloqueios de banco de dados servem para proteger recursos ou objetos compartilhados. Esses recursos protegidos podem ser tabelas, linhas, blocos de dados, itens que estão em cache ou, até mesmo, sistemas inteiros. Nesse contexto, existem muitos tipos de bloqueios que podem ocorrer, no entanto, neste tema nos concentraremos em estudar o bloqueio transacional. O bloqueio transacional está relacionado à capacidade do sistema de gerenciamento de banco de dados (SGBD) de garantir transações confiáveis que aderem as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Desse modo, observe a seguir a descrição das propriedades ACID, observe que elas estão relacionadas e devem ser consideradas em conjunto, ou seja, são propriedades de uma mesma transação e não conceitos independentes. 16 Figura 1 - Quatro propriedades de uma transação Fonte: elaborada pelo autor. Atomicidade: significa tudo ou nada. Uma transação pode realizar três instruções: inserir dados em uma tabela, excluir de outra tabela e atualizar uma terceira tabela. A atomicidade garante que ocorram todas essas instruções ou nenhuma. Neste exemplo, não seria possível executar apenas uma instrução. Consistência: significa que as transações sempre levam o banco de dados de um estado consistente para outro. Portanto, se uma transação violar as regras de consistência do banco de dados, toda a transação será revertida. Isolamento: significa que as transações simultâneas e as alterações feitas nelas não ficam visíveis umas para as outras até que sejam concluídas. A implementação do isolamento é bastante diferente em diferentes SGBDs. Essa também é a propriedade mais frequentemente relacionada a problemas de bloqueio. 17 Durabilidade: significa que as transações confirmadas (após fazer o commit) não serão perdidas, mesmo em caso de encerramento anormal, ou seja, uma vez que um usuário ou programa tenha sido notificado de que uma transação foi confirmada, eles podem ter certeza de que os dados não serão perdidos. Exemplo de propriedades ACID: transferência de R$ 100,00 da conta de uma pessoa A para a conta de uma pessoa B: 1. read(A) 2. A = A -100 3. write(A) 4. read(B) 5. B = B + 100 6. write(B) Atomicidade: se houver uma falha, por exemplo, no momento de leitura da etapa 4, o SGBD deve garantir que as atualizações não sejam refletidas no banco. Consistência: se ocorrer a falha descrita anteriormente e o banco for atualizado, mesmo assim haverá inconsistência nos dados, ou seja, A ficará com -R$ 100,00 e B não receberá o crédito de R$ 100,00. Isolamento: se um usuário C acessar em uma transação T2 durante a etapa 4 de T1, obterá um banco de dados parcialmente inconsistente. Durabilidade: se após a etapa 6 os usuários A e B forem notificados de que a transação de transferência foi concluída, as atualizações no banco devem persistir mesmo que haja falhas. 18 Referências bibliográficas ORAFAQ. ACID. Disponível em: https://www.orafaq.com/wiki/ACID. Acesso em: 9 maio 2021. PARA SABER MAIS Os SGBDs relacionais, de modo a garantir as propriedades ACID, usam vários bloqueios transacionais. Entretanto, o uso de bloqueios a recursos compartilhados está sujeito a conflitos e o escalonador de transações (sistema que gerencia as transações e escolhe qual será executada) sozinho não pode evitar suas ocorrências. Quando duas transações simultâneas não podem progredir porque cada uma espera que a outra libere um bloqueio, temos o estado de Deadlock (Figura 2). Figura 2 - Estado de Deadlock Fonte: elaborada pelo autor. 19 Pela Figura 2, observe que a Transação 1 bloqueou a tabela tbusuario e aguarda a liberação do bloqueio da tabela tbcliente para finalizar a transação. O mesmo ocorre com a Transação 2, assim, como ambas estão bloqueando e aguardando a aquisição de bloqueio, nenhuma delas libera o bloqueio antes de adquirir o próximo. Um deadlock pode ocorrer nos estados de exclusão mútua, retenção e espera, sem preempção e espera circular. A Prevenção de deadlock e liberação do deadlock pode ser obtida quando: • Sem exclusão mútua: sem exclusão mútua significa remover todos os recursos que podem ser compartilhados. • Sem retenção e espera: a remoção da condição de suspensão e espera pode ser feita se um processo adquirir todos os recursos necessários antes de iniciar. • Permitir preempção: permitir a preempção é tão bom quanto remover a exclusão mútua. A única necessidade é restaurar o estado do recurso para o processo preemptivo, em vez de deixá-lo entrar ao mesmo tempo que o preempção. • Removendo a espera circular: a espera circular pode ser removida apenas se os recursos forem mantidos em uma hierarquia e o processo puder conter os recursos aumentando a ordem de precedência. Se houver preempção, basta que um dos estados seja revertido para que a mesma deixe de acontecer. 20 TEORIA EM PRÁTICA O deadlock é o estado em que um processo A realiza o bloqueio de um recurso R1 e um processo B realiza o bloqueio de um recurso R2. Esse estado é alcançado quando: há exclusão mútua, não há preempção, há retenção e espera e espera circular. Então, considere que você foi contratado para ser o DBA (Database Administrator) em uma empresa de desenvolvimento de software. Em uma reunião com quatro colegas, o primeiro diz que a melhor maneira de lidar com deadlock é ignorando-o e, caso ocorra, reinicie o sistema. O segundo diz que o melhor caminho é a prevenção, eliminando as condições que provocam o deadlock. Um terceiro diz que o melhor é evitar, analisando criteriosamente os recursos, evitando que o deadlock ocorra. O quarto colega diz que o melhor é deixar o deadlock acontecer e, quando isso ocorrer, basta reiniciar o processo. Analise cada um dos posicionamentos, indicando pontos positivos e negativos das abordagens sugeridas. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições Indicações de leitura 21 públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet. Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 No capítulo 7 do livro Sistema de Banco de Dados, os autores apresentam o conceito de transações, bem como os modelos e estruturas. Além disso, eles também apresentam ao aluno as propriedades ACID, além de exercícios para aprofundar o conhecimento. Trata-se de uma leitura fortemente recomendada para reforçar o aprendizado sobre transações. SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de banco de dados. 7. ed. Rio de Janeiro: RTC, 2020. p. 452-470. Indicação 2 No capítulo 18 do livro Sistema de Banco de Dados, os autores apresentam os tipos de bloqueios e sua necessidade em um banco de dados. Além disso, nos traz alguns exemplos de deadlock e como preveni-lo. O tratamento de deadlock é essencial para a rotina de trabalho de um administrador de banco de dados, logo, trata-se de uma leitura recomendada. 22 SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de banco de dados. 7. ed. Rio de Janeiro: RTC, 2020. p. 472-510. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Um sistema de processamento de transações (SPT) é responsável por monitorar e gerenciar as transações em um banco de dados. O sistema é útil quando algo é vendido pela Internet. Isso permite um intervalo de tempo entre o momento em que um item está sendo vendido e o momento em que é realmente vendido. Um exemplo é a venda de um ingresso para uma determinada poltrona no cinema. Sobre o sistema de processamento de transações, assinale a alternativa correta. a. Um SPT garante que o cliente comprará os ingressos com segurança graças ao seu sistema de criptografia. b. O SPT permite armazenar em um banco de dados todas as informações sobre a compra do ingresso. 23 c. O SPT retem o ingresso, permitindo que um mesmo bilhete não seja vendido a dois clientes diferentes. d. O SPT gerencia a transação desde o momento que o cliente solicita o bilhete, passando pela aprovação do pagamento até a sua emissão. e. Um SPT é um sistema que faz parte do banco de dados e o objetivo é aceitar ou negar transações realizadas em um banco de dados pelo usuário. 2. Em seu aplicativo, uma única instrução SQL INSERT ou um único SET ou KILL global pode não constituir em si uma __________. Nesses casos, você usa comandos de processamento de transação para definir a sequência de __________ que forma uma transação completa. Uma __________ marca o início da __________; após uma sequência de possivelmente muitas __________, outro comando marca o fim da __________. Assinale a alternativa que completa adequadamente as lacunas. a. Transação completa; instruções; instrução; transação; instruções; transação. b. Inserção; comandos; instrução; transação; inserções; transação. c. Transação; operações; transação; instrução; transações; instrução. d. Instrução; transações; instrução; transação; transações; instrução. e. Instrução; transações; transação; instrução; transações; instrução. 24 GABARITO Questão 1 - RespostaC Resolução: O SPT é usado para manter a integridade do banco de dados, garantindo que um conjunto de instruções (transação) seja executado por completo ou não executado. Logo, se um cliente A começou a adquirir um ingresso para a poltrona D5 no cinema e, no mesmo instante, o cliente B tenta realizar a aquisição da mesma poltrona (D5), o SPT não permite, retendo (bloqueando) o ingresso e permitindo que o mesmo seja vendido apenas para um cliente. Questão 2 - Resposta A Resolução: A alternativa está correta, pois uma transação é um conjunto de uma ou mais instruções. Logo, uma única instrução SQL não constitui uma transação completa. Muitas vezes, são necessárias várias instruções para que se tenha uma única transação. Portanto, uma instrução pode marcar o início de uma transação. Após muitas instruções, uma última instrução marca o fim da transação. Backup e recuperação de dados ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 3 26 DIRETO AO PONTO Criar backups do banco de dados regularmente é uma das tarefas mais fáceis que se podem ser realizadas, entretanto, muitas vezes, isso acaba sendo negligenciado até o minuto em que ocorre o primeiro desastre. Logo, quando isso ocorre, todos pensam: “se tivéssemos um backup agora tudo poderia ser diferente”. Portanto, o backup é a chave para um plano de recuperação de desastres bem-sucedido. Cada mecanismo de banco de dados tem seus próprios comandos e procedimentos de backup. O Oracle, por exemplo, tem o RMAN (Recovery Manager) um utilitário Oracle que pode fazer backup, restaurar e recuperar arquivos de banco de dados. Trata-se de um recurso do servidor de banco de dados Oracle e não requer instalação separada (ORACLE, 2021). O SQL Server tem recursos para backups completos e diferenciais, bem como um processo de backup para logs de transações (MICROSOFT, 2021). Esses procedimentos podem ser usados em combinação para garantir tempo de inatividade limitado caso o banco de dados sofra uma interrupção ou uma falha crítica irrecuperável. Então, antes de criar um backup é importante conhecer os seus três diferentes tipos: completo, diferencial e incremental. Alguns administradores chamam incorretamente os backups diferenciais de incrementais. Há uma diferença distinta entre os dois, no entanto, isso afeta a maneira como os bancos de dados veem dados de backup. Por sua vez, o Oracle possuí recursos para backup completo do banco de dados, bem como backup parcial como os backups tablespace e de arquivo de dados. A Figura 1 apresenta a relação entre os três tipos de backup: completo, incremental e diferencial. 27 O backup completo é o mais simples de todos, trata-se de uma cópia completa de todos os dados contidos no banco de dados. Esse tipo de backup inclui: a estrutura de tabelas, as visualizações, os gatilhos e qualquer outra configuração do banco. O backup incremental realiza a cópia de todos os dados modificados desde o último backup incremental. Caso não haja um backup incremental, a cópia será realizada a partir do último backup completo que foi realizado. Apesar do SQL Server não ter suporte para esse tipo de backup, outras distribuições como o Oracle a possui. Figura 1 - Tipos de backups Fonte: adaptada de TTGTMEDIA (2021). 28 O backup diferencial realiza a cópia de todos os dados modificados após o backup completo. Nesse tipo, cada backup diferencial será anexado ou associado ao arquivo de backup completo realizado inicialmente. Dessa forma, observe que o backup diferencial é acumulativo, logo, os arquivos de backup podem ficar muito grandes. Nesse sentido, note que todos os tipos de backups necessitam que, primeiramente, seja feito um backup completo. Logo, não importa qual backup será escolhido, pois você iniciará pelo backup completo. Em um ambiente real é comum a realização do backup completo no início da semana e, no decorrer dos dias, realizar backup diferencial. Além disso, alguns bancos de dados mais críticos necessitam de backups em um curto prazo de tempo, algo como 10 ou 15 minutos, porém, outros tipos de bancos são passíveis de passar por backup no final do dia. Referências bibliográficas MICROSOFT. Criar um backup de banco de dados completo. Disponível em: https://docs.microsoft.com/pt-br/sql/relational-databases/backup-restore/ create-a-full-database-backup-sql-server?view=sql-server-ver15. Acesso em: 18 jun. 2021. ORACLE. Backup and Recovery. Disponível em: https://docs.oracle.com/cd/ B19306_01/server.102/b14220/backrec.htm. Acesso em: 18 jun. 2021. TTGTMEDIA. Full vs. incremental vs. differential backup. Disponível em: https://cdn.ttgtmedia.com/rms/onlineimages/whatis-pillar_full_incremental_ differential_backup_desktop.png. Acesso em: 18 jun. 2021. 29 PARA SABER MAIS Em banco de dados, o rollback é um comando que leva o banco de dados a um ponto anterior, sendo utilizado especificamente para reiniciar a transação atual e restabelecer o estado do último commit. O rollback é essencial para a integridade do banco de dados, pois indica que ele pode ser restaurado para uma cópia limpa, mesmo após uma operação incorreta. Após realizar o rollback para uma transação ativa, o banco de dados pode ser restaurado para um estado consistente. Quando o comando rollback é executado, as alterações feitas nos arquivos de banco de dados, atualizações, adições ou exclusões, desde o limite do commit, são revertidas e as entradas originais são colocadas de volta nos arquivos. Os registros adicionados aos arquivos permanecem como registros excluídos. Os arquivos são reposicionados para o último limite de commit. Já as alterações feitas em outros recursos também são revertidas. O rollback pode ser executado manualmente pelos usuários ou automaticamente pelos sistemas de banco de dados. Se um usuário modifica um campo de dados mas não mantém as alterações, os dados são armazenados em um log de transações ou em um estado temporário. Os usuários que executam uma consulta no banco de dados verão os valores inalterados. No entanto, se o usuário optar por não salvar os dados, um comando de rollback trata os dados para descartar qualquer alteração feita pelo usuário. Portanto, um rollback ocorre quando um usuário começa a alterar os dados e descobre que o registro errado foi atualizado, então, ele cancela a transação para desfazer as modificações. 30 O rollback também pode acontecer automaticamente após um travamento do banco de dados ou do servidor. Quando o banco de dados é reiniciado, todas as transações não concluídas são revertidas, permitindo que os usuários entrem novamente e salvem as alterações necessárias. TEORIA EM PRÁTICA Backup é o processo seguro de fazer uma cópia de seus dados e, por exemplo, em caso de perda por corrupção ou exclusão, pode-se recuperá-los com o mínimo de prejuízo possível. Reflita sobre o caso de uma empresa que deseja implantar o sistema de banco de dados SQL Server como o Sistema de Gerenciamento de Banco de Dados. Eles desejam saber de você, DBA (Database Administrator), quais as características dos backups disponibilizados por essa ferramenta. Como você responderia à solicitação de seu chefe sobre as características de backup do SQL Server? Descreva os tipos de backups que o SQL Server atende, lembrando dos três tipos principais estudados. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log Indicações de leitura 31 in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet.Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 No livro Sistema de Banco de Dados, o autor apresenta um conceito completo sobre a definição de falhas, bem como a classificação delas quanto a falhas de transação, falha de sistema e falha de disco. Trata-se de uma leitura recomendada para o aluno compreender e diferenciar os diversos tipos de falhas, bem como saber como se recuperar. SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de banco de dados. 7. ed. Rio de Janeiro: LTC, 2020. p. 511. Indicação 2 No livro Cibersegurança para leigos, o autor apresenta no capítulo 13 a definição de backup bem como os conceitos de backup incremental, completo e diferencial. Essa é uma ótima oportunidade de se aprofundar no conceito de backup e as técnicas relacionadas. 32 STEINBERG, J. Cibersegurança para leigos. Rio de Janeiro: Alta books, 2021. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. A capacidade de restaurar bancos de dados de backups válidos é uma parte vital para garantir a continuidade dos negócios. Desse modo, os administradores de banco de dados (DBAs) devem fazer um plano de backup para os bancos de dados pelos quais são responsáveis. Sobre os tipos de backups de dados é correto falar que: a. O backup incremental realiza uma cópia ou instantâneo dos dados modificados desde o último backup diferencial. b. O backup completo necessita de mais espaço para armazenamento quando usado em combinação com outros tipos de backups. c. O backup completo e o backup intermediário são precedidos pelo backup diferencial, responsável por organizar os dados. 33 d. O backup diferencial e o backup intermediário são semelhantes, porém, o diferencial continua a copiar dados alterados após o backup completo. e. O backup diferencial continua a copiar todos os dados alterados após o último backup incremental. 2. O conceito de __________ está relacionado com a incapacidade de um sistema ou componente de software de executar suas funções exigidas dentro dos requisitos de desempenho especificados. Quando um __________ chega ao cliente final, é chamado de __________. Durante o desenvolvimento, __________ são geralmente observadas pelos __________. a. Falta; erro; falha; as faltas; usuários. b. Erro; erro; falha; as falhas; desenvolvedores. c. Falha; defeito; falha; as falhas; testadores. d. Falha; erro; falha; as falhas; desenvolvedores. e. Falta; erro; falta; as falhas; testadores. GABARITO Questão 1 - Resposta D Resolução: A alternativa está correta, pois o backup diferencial é semelhante ao backup incremental pois ambos se iniciam a partir do backup completo. Entretanto, o backup diferencial copia todos os dados alterados desde a realização do último backup completo 34 Questão 2 - Resposta C Resolução: A falha está relacionada a uma perda específica dos requisitos, gerando um comportamento inesperado do software. Uma falha geralmente é observada pelo usuário final, entretanto, durante o processo de desenvolvimento de software, a falha é observada pelos testadores. Segurança de banco de dados ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 4 36 DIRETO AO PONTO O controle de acesso ao banco de dados é um método que permite o acesso aos dados confidenciais da empresa apenas para aquelas pessoas (usuários do banco de dados) que têm permissão para acessar esses dados e para restringir o acesso às pessoas não autorizadas. Esse processo inclui dois componentes principais: autenticação e autorização. A autenticação é o método de verificar a identidade de uma pessoa que está acessando seu banco de dados. Observe que, a autenticação não é suficiente para proteger os dados. Uma camada adicional de segurança é necessária, a autorização, a qual determina se um usuário deve ter permissão para acessar os dados ou fazer a transação que está tentando. Sem autenticação e autorização, não há segurança de dados. Qualquer empresa cujos funcionários se conectam à Internet, ou seja, toda empresa hoje, precisa de algum nível de controle de acesso implementado. Dentre os tipos de controle de acesso temos modelos obsoletos como o Controle de Acesso Discricionário (DAC) e o Controle de Acesso Obrigatório (MAC). Já entre os métodos mais comuns temos o Role-Based Access Control (RBAC) e o modelo que é mais recente chamado Attributed Based Access Control (ABAC). Com os modelos DAC, o proprietário atribui direitos de acesso com base em regras especificadas pelo usuário. Trata-se de um dos modelos mais antigos e menos usado nos últimos tempos. O MAC foi desenvolvido usando um modelo não discricionário, no qual as pessoas têm acesso com base em uma liberação de 37 informações. Essa é uma política na qual os direitos de acesso são atribuídos com base nos regulamentos da autoridade central. Por outro lado, o RBAC concede acesso com base na função de um usuário e implementa princípios de segurança importantes, como privilégio mínimo e separação de privilégio. Assim, alguém que tenta acessar informações só pode acessar os dados necessários para sua função. A Figura 1 exemplifica o RBAC. Figura 1 - Arquitetura RBAC Fonte: elaborada pelo autor. Pela Figura 1, observe que os sistemas de controle de acesso baseado em função (RBAC) atribuem acesso e ações de acordo com a função de uma pessoa no sistema. Assim, todos que detêm essa função têm o mesmo conjunto de direitos. Aqueles que desempenham funções diferentes têm direitos diferentes. O usuário A pode ser, por exemplo, um funcionário da contabilidade, o qual tem a Função 1 a qual é atualizar o salário dos funcionários da empresa. Logo, ele terá a permissão de realizar essa ação. O mesmo usuário A também tem a Função 2 que é verificar as vendas no mês. Desse modo, ele tem permissão de acesso às informações de vendas. 38 Ainda analisando Figura 1, observe que os sistemas de controle de acesso com base em funções (não somente este da figura, mas todos eles) compartilham elementos essenciais, como: • Administradores: eles identificam funções, concedem permissões e, de outra forma, mantêm os sistemas de segurança. • Funções: os trabalhadores são agrupados com base nas tarefas que executam. • Permissões: o acesso e as ações estão vinculados a cada função e definem o que as pessoas podem e não podem fazer. Por fim, no método ABAC, cada recurso e usuário são atribuídos a uma série de atributos. Nesse método dinâmico, uma avaliação comparativa dos atributos do usuário, incluindo hora do dia, posição e localização, são usados para tomar uma decisão sobre o acesso a um recurso. PARA SABER MAIS A injeção de SQL é a forma mais comum de ataque a sites, pois os formulários são muito comuns e, geralmente, não são codificados corretamente. Além disso, as ferramentas de hacking usadas para encontrar pontos fracos e tirar proveito deles estão disponíveis on- line. Esse tipo de exploração é fácil o suficiente para que hackers inexperientes possam realizar estragos de pequeno a grande porte. No entanto, nas mãos de um hacker muito habilidoso, uma fraqueza no código da web pode revelar o acesso no nível raiz dos servidores39 da web e, a partir disso, ataques em outros servidores em rede podem ser realizados. Um acesso legítimo dos visitantes ao seu site pode incluir pesquisas, formulários de inscrição, formulários de contato, formulários de logon e tudo isso fornece acessos para o banco de dados. Esses vários pontos de acesso são possivelmente incorporados em aplicativos prontos para uso ou podem ser aplicativos personalizados configurados apenas para o seu site. Esses formulários e seu código de suporte provavelmente vieram de muitas fontes, foram adquiridos em momentos diferentes e, possivelmente, instalados por pessoas diferentes. A injeção de SQL é o uso desses campos que estão disponíveis publicamente para obter entrada no seu banco de dados. Isso é feito inserindo comandos SQL nos campos do formulário, em vez dos dados esperados. Os formulários codificados incorretamente permitirão que um hacker os use como um ponto de entrada no banco de dados, quando os dados no banco de dados podem se tornar visíveis e o acesso a outros bancos de dados no mesmo servidor ou em outros servidores da rede. Como os sites exigem acesso constante ao banco de dados, os firewalls oferecem pouca ou nenhuma defesa contra-ataques de injeção de SQL. Se o site é público e os firewalls devem ser configurados para permitir que cada visitante do site acesse o banco de dados, geralmente pela porta 80/443. Os programas antivírus são igualmente ineficazes no bloqueio de ataques de injeção de SQL. Eles visam detectar e interromper um tipo totalmente diferente de dados recebidos. A defesa de injeção SQL mais usada é composta de dois componentes. Primeiro, aplicando atualizações e correções de 40 rotina de todos os servidores, serviços e aplicativos. O segundo componente se trata de produzir e usar códigos de sites bem escritos e bem testados, de modo a não permitir que comandos SQL inesperados sejam executados. Essas duas defesas são por definição suficientes para interromper qualquer ataque de injeção de SQL. TEORIA EM PRÁTICA Autenticação, autorização e controle de acesso são três conceitos fundamentais de segurança cibernética que costumam ser confundidos e usados de forma intercambiável. Apesar de serem entendidos como um único processo pelo usuário, existem distinções entre esses três conceitos, logo, é importante saber diferenciá-los para projetar um sistema efetivo de segurança. Reflita sobre o caso seguinte: você é o administrador de um sistema de banco de dados em uma empresa de desenvolvimento de software. Em determinado dia, o gerente lhe entrega uma missão: você deve criar o controle de acesso, definindo o usuário e a senha para cada funcionário. Você logo percebe que tem algo errado na fala e pergunta se ele quer que seja criado o controle de acesso ou a autenticação ao sistema. Então, seu gerente lhe questiona: “Não é tudo a mesma coisa?”, desse modo, você vê uma oportunidade de mostrar a ele seus conhecimentos. Então, apresente a diferença entre autenticação, autorização e controle de acesso, citando exemplos. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. 41 LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet. Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 SQL Injection ou injeção SQL é uma técnica de ataque a sites e aplicativos web. Esse tipo de ataque tem crescido à medida que as empresas oferecem ainda mais interação em seus sites para os visitantes. Mais importante do que entender o que é SQL Injection é compreender como se proteger. Desse modo, o artigo Injeção de SQL em aplicações Web: causas e prevenção traz as características de uma injeção SQL, bem como técnicas de prevenção. Trata-se de uma leitura recomendada devido a relevância do assunto no dia a dia do administrador de banco de dados. Para acessar o artigo, busque pelo título no acervo da Universidade Federal do Rio Grande do Sul. Indicações de leitura 42 FARIAS, M. Injeção de SQL em Aplicações Web. Trabalho de Graduação - Universidade Federal do Rio Grande do Sul, Porto Alegre, 2009. Indicação 2 No livro Introdução à segurança de computadores, entre as páginas 382 e 417, o autor apresenta o conceito de criptografia bem como os diferentes tipos, classificando as criptografias simétricas e assimétricas. Ele também apresenta os conceitos de hash e assinaturas digitais. Trata-se de uma leitura fortemente recomendada devido a importância da criptografia para a segurança da informação. GOODRICH, M.; TAMASSIA, R. Introdução à segurança de computadores. Porto Alegre: Bookman, 2013. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 43 1. A injeção de SQL é uma técnica usada para explorar dados do usuário por meio de entradas de páginas da Web, injetando comandos SQL como instruções. Basicamente, essas instruções podem ser usadas para manipular o servidor web do aplicativo por usuários mal-intencionados. Sobre a injeção de SQL, assinale a alternativa correta. a. A forma primária de injeção SQL consiste em inserção indireta de código em campos de texto em formulário web. b. A forma principal de injeção SQL é a invasão do servidor de banco de dados com as credenciais de super usuário. c. A injeção SQL permite que um invasor acesse os servidores de banco de dados e execute códigos SQL. d. O servidor SQL deve estar parametrizado para evitar que a Injeção SQL seja executada por criminosos. e. O procedimento que constrói instruções SQL deve ser revisado quanto a vulnerabilidades de injeção. 2. Leia com atenção a definição de controle de acesso. “O controle de acesso é um componente fundamental da segurança de dados, que determina quem pode acessar e usar informações e recursos da empresa. Por meio de autenticação e autorização, as políticas de controle de acesso garantem que os usuários sejam quem dizem ser e que tenham acesso apropriado aos dados da empresa. O controle de acesso também pode ser aplicado para limitar o acesso físico a campi, edifícios, salas e datacenters.” Fonte: CITRIX. O que é controle de acesso. Disponível em: https://www.citrix.com/pt-br/solutions/secure-access/what-is- access-control.html. Acesso em: 29 jun. 2021. 44 Sobre controle de acesso, autenticação e autorização, assinale a alternativa correta. a. Um funcionário que pega emprestado o crachá de um amigo para ter acesso ao datacenter está quebrando o processo de autenticação. b. No controle de acesso baseado em função, o acesso se baseia em atributos como localização e horário do dia. c. Um dispositivo de autenticação que contribui para o controle de acesso é o leitor biométrico. d. A autenticação impede que dados confidenciais sejam apresentados para usuários não autenticados no sistema. e. A autorização, diferentemente da autenticação, apresenta as políticas e define quais partes do sistema umusuário pode ter acesso. GABARITO Questão 1 - Resposta E Resolução: A alternativa está correta, pois o ataque por injeção de SQL consiste em inserir diretamente código SQL em campos de formulários como entrada de texto. Desse modo, todo procedimento em uma aplicação web que execute instruções SQL precisa ser revisado, de modo a minimizar a vulnerabilidade a possíveis ataques de injeção. Questão 2 - Resposta C Resolução: A alternativa está correta, pois a autenticação pode ser física (nesse caso, trata-se de um dispositivo de leitor biométrico) ou pode ser lógica (como um campo para digitar o usuário e senha). Em ambos os casos, a autenticação é o primeiro passo para que seja aplicado o controle de acesso. 45 Depois que a autenticação é realizada com sucesso, o controle de acesso autoriza as ações do usuário mediante a regras e políticas previamente parametrizadas. BONS ESTUDOS! W BA 08 80 _V 1. 0 ADMINISTRAÇÃO DE BANCOS DE DADOS 2 Ariel da Silva Dias São Paulo Platos Soluções Educacionais S.A 2021 ADMINISTRAÇÃO DE BANCOS DE DADOS 1ª edição 3 2021 Platos Soluções Educacionais S.A Alameda Santos, n° 960 – Cerqueira César CEP: 01418-002— São Paulo — SP Homepage: https://www.platosedu.com.br/ Diretor Presidente Platos Soluções Educacionais S.A Paulo de Tarso Pires de Moraes Conselho Acadêmico Carlos Roberto Pagani Junior Camila Turchetti Bacan Gabiatti Camila Braga de Oliveira Higa Giani Vendramel de Oliveira Gislaine Denisale Ferreira Henrique Salustiano Silva Mariana Gerardi Mello Nirse Ruscheinsky Breternitz Priscila Pereira Silva Tayra Carolina Nascimento Aleixo Coordenador Henrique Salustiano Silva Revisor Washington Henrique Carvalho Almeida Editorial Alessandra Cristina Fahl Beatriz Meloni Montefusco Carolina Yaly Mariana de Campos Barroso Paola Andressa Machado Leal Dados Internacionais de Catalogação na Publicação (CIP)_____________________________________________________________________________________ Dias, Ariel da Silva D541a Administração de bancos de dados / Ariel da Silva Dias, – São Paulo: Platos Soluções Educacionais S.A., 2021. 44 p. ISBN 978-65-89965-68-8 1. Banco de dados. 2. SQL Server. 3. Oracle. I. Título. CDD 005 ____________________________________________________________________________________________ Evelyn Moraes – CRB 010289/O © 2021 por Platos Soluções Educacionais S.A. Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de informação, sem prévia autorização, por escrito, da Platos Soluções Educacionais S.A. 4 SUMÁRIO Sistemas de Gerenciamento de Banco de Dados _____________ 05 Transações ___________________________________________________ 20 Backup e recuperação de banco de dados ___________________ 35 Segurança de banco de dados _______________________________ 48 ADMINISTRAÇÃO DE BANCOS DE DADOS 5 Sistemas de Gerenciamento de Banco de Dados Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Objetivos • Compreender o conceito de dados e a necessidade de seu gerenciamento. • Examinar as funcionalidades de um sistema de gerenciamento de banco de dados. • Relacionar um banco de dados SQL e um banco de dados NoSQL. 6 1. Sistemas de Gerenciamento de Banco de Dados (SGBD) Então, você está construindo um aplicativo de software e um dos primeiros problemas a serem resolvidos é como armazenar seus dados. Qual banco de dados você escolherá? Um Sistema de Gerenciamento de Banco de Dados, ou SGBD, é um software que se comunica com o próprio banco de dados, aplicativos e interfaces de usuário para obter dados e analisá-los. O SGBD também contém os principais instrumentos para controlar o banco de dados (ELMASRI, 2009; ORACLEc, 2021). Antes de entrarmos a fundo no estudo sobre SGBD e conhecer os principais sistemas, analisaremos as definições de dados, banco de dados e gerenciadores de banco de dados. 1.1 Dados Os dados são fatos e estatísticas armazenados ou fluindo livremente em uma rede ou sistema computacional, geralmente, são brutos e não processados. Por exemplo, quando você visita um site qualquer, este site pode armazenar seu endereço IP, ou seja, dados, em troca podem adicionar um cookie em seu navegador, indicando que você visitou o site, ou seja, dados. Além disso, o site pode coletar seu nome, idade, localização, preferências, ou seja, seus dados. Os dados tornam-se informações quando são processados, transformando-os em algo significativo. Por exemplo, com base nos dados de cookies salvos no navegador do usuário, um site pode analisar os dados e obter a informação de que a maior parte das pessoas que visitam o site são mulheres solteiras de 26 a 40 anos, ou seja, informações derivadas dos dados coletados. 7 Observe que, para uma empresa (não limitando somente a empresas), os dados são verdadeiros tesouros preciosos. Por meio de uma análise profunda, é possível tirar diversas conclusões sobre os dados. Como no exemplo acima, onde a empresa, conhecendo seu público principal, pode redirecionar propagandas ou produtos que atendam ao interesse de mulheres solteiras, de 26 a 40 anos. Logo, os dados são verdadeiros tesouros que, se bem utilizados, podem gerar grandes oportunidades estratégicas. 1.2 Banco de dados Um banco de dados é uma coleção de dados relacionados, organizados de forma que os dados possam ser facilmente acessados, gerenciados e atualizados. O banco de dados pode ser baseado em software ou hardware, com um único propósito, o armazenamento de dados, segundo Elmasri, (2009). Durante os primeiros dias do computador, os dados eram coletados e armazenados em fitas, que eram, em sua maioria, somente para gravação, o que significa que, uma vez que os dados são armazenados, nunca mais poderão ser lidos. Eram lentos e pesados, e logo os cientistas da computação perceberam que precisavam de uma solução melhor para esse problema. Em um banco de dados, os dados são organizados de forma que seja possível encontrar e gerenciar rapidamente as informações desejadas. Um exemplo muito simples de um banco de dados pode ser uma lista de nomes em ordem alfabética ou uma lista crescente de códigos numéricos, onde cada código representa um item do estoque. Você pode armazenar informações no banco de dados de diferentes maneiras, conhecidas como modelos de banco de dados. 8 Os bancos de dados, normalmente, têm uma de duas formas básicas: • Banco de dados de arquivo único ou arquivo simples. • Banco de dados relacional ou estruturado de vários arquivos. Um banco de dados de arquivo simples armazena dados em um arquivo de texto simples, com cada linha de texto, normalmente, contendo um registro. Delimitadores como vírgulas ou tabulações separam os campos. Um banco de dados de arquivo simples, como o nome indica, usa uma estrutura simples e, ao contrário de um banco de dados relacional, não pode conter várias tabelas e relações, segundo Elmasri. Um banco de dados relacional contém várias tabelas de dados com linhas e colunas que se relacionam entre si, por meio de campos- chave especiais. Esses bancos de dados são mais flexíveis do que as estruturas de arquivo simples e fornecem funcionalidade para leitura, criação, atualização e exclusão de dados. Os bancos de dados relacionais usam Structured Query Language (SQL), um aplicativo de usuário padrão que fornece uma interface de programação fácil para interação com o banco de dados. O modelo de banco de dados relacional é o modelo de banco de dados mais amplamente usado. Usa relações e conjuntos para armazenar os dados. Na prática, parece que os dados são organizados em tabelas. Para acessar informaçõesde um banco de dados, você, normalmente, precisa de um sistema de gerenciamento de banco de dados, ou simplesmente, de um SGBD (ORACLEc, 2021). 1.3 SGBD Um SGBD é um software que permite a criação, definição e manipulação de banco de dados, permitindo aos usuários armazenar, 9 processar e analisar dados com facilidade. O SGBD fornece uma ferramenta para realizar várias operações, como criar banco de dados, armazenar dados nele, atualizar dados, criar tabelas no banco de dados e muito mais. O software SGBD funciona, principalmente, como uma interface entre o usuário final e o banco de dados, gerenciando simultaneamente os dados, o mecanismo do banco de dados e o esquema do banco de dados para facilitar a organização e a manipulação dos dados (ORACLEc, 2021). Embora as funções do SGBD variem muito, os recursos e capacidades do SGBD de uso geral devem incluir: um catálogo acessível ao usuário que descreve metadados, sistema de gerenciamento de biblioteca SGBD, abstração e independência de dados, segurança de dados, registro e auditoria de atividade, suporte para simultaneidade e transações, suporte para autorização de acesso, suporte de acesso de locais remotos, suporte de recuperação de dados SGBD em caso de danos e aplicação de restrições, para garantir que os dados sigam certas regras, segundo Elmasri, (2009). O SGBD também fornece proteção e segurança para os bancos de dados, inclusive mantendo a consistência dos dados no caso de vários usuários. A Figura 1 apresenta uma organização onde temos o banco de dados sendo gerenciado pelo SGBD. 10 Figura 1–Sistema de gerenciamento de banco de dados Fonte: elaborada pelo autor. Basicamente, existem dois tipos de SGBDs: relacionais e não relacionais, conhecidos mais por, respectivamente, SQL e NoSQL. Diferem em termos de recuperação, distribuição e processamento de dados. Veremos estes tipos de SGBDs a seguir. 1.3.1 Bancos de Dados Relacionais (SGBDR) Como o SQL é o núcleo desses sistemas, esse tipo de banco também é chamado de SQL. Em SGBDR, os dados aparecem como tabelas de linhas e colunas com uma estrutura rígida e dependências bem definidas. Devido à estrutura integrada e ao sistema de armazenamento de dados, os bancos de dados SQL não requerem muito esforço de engenharia para torná-los bem protegidos. São uma boa escolha para construir e dar suporte a soluções de software complexas, onde qualquer interação tem uma série de consequências. Um dos fundamentos do SQL é a conformidade com ACID (atomicidade, consistência, isolamento, 11 durabilidade). A conformidade com ACID é uma opção preferida se você criar, por exemplo, aplicativos de comércio eletrônico ou financeiros, onde a integridade do banco de dados é crítica, segundo Elmasri, (2009). No entanto, a escalabilidade pode ser um desafio com bancos de dados SQL. O dimensionamento de um banco de dados SQL entre vários servidores (dimensionamento horizontal) exige esforços adicionais de engenharia, sendo um ponto fraco deste tipo de banco. Em vez disso, os bancos de dados SQL são, geralmente, escalados verticalmente, ou seja, adicionando mais poder de computação a um servidor. Entre os principais bancos de dados SQL, destacam-se: SQL Server, Oracle, MySQL, MariaDB e PostgreSQL. 1.3.1 Bancos de Dados Não Relacionais (NoSQL) Como esses bancos de dados não estão limitados a uma estrutura de tabela, são chamados de NoSQL. Este tipo de sistema de gerenciamento de banco de dados é considerado orientado a documentos. Dados não estruturados, como artigos, fotos, vídeos, publicações em redes sociais, áudios e outros, são coletados em um único documento. Os dados são simples de consultar, mas nem sempre são classificados em linhas e colunas como em um banco de dados relacional. Os bancos de dados não relacionais ou NoSQL,geralmente, são escalados horizontalmente com a adição de novos servidores (ELMASRI, 2009; ORACLEc, 2021). Como os bancos de dados NoSQL permitem reservar vários tipos de dados juntos e escaloná-los, crescendo em torno de vários servidores, este tipo de banco está a cada dia se tornando mais popular, sendo utilizado por grandes nomes, como Facebook, Netflix, Twitter, Google, entre outros. Os bancos de dados NoSQL são definidos em quatro tipos: 12 • Banco de dados chave-valor: têm uma estrutura de dados de dicionário, que consiste em um conjunto de objetos que representam campos de dados. Cada objeto recebe uma chave exclusiva. Para recuperar dados armazenados em um determinado objeto, precisa usar uma chave específica. Por sua vez, você obtém o valor (ou seja, dados) atribuído à chave. Esse valor pode ser um número, uma string ou até mesmo outro conjunto de pares de chave-valor. Geralmente, são bancos de dados in-memory. Principais sistemas de banco de dados deste tipo: Riak, Redis, Amazon DynamoDB. • Banco de dados de documentos: são repositórios que podem ser representados nos formatos XML, JSON, BSON, que consistem em conjuntos de pares do tipo chave-valor para armazenamento dos dados. Esses documentos são unidades básicas de dados que você também pode agrupar em coleções (bancos de dados), com base em sua funcionalidade. Principais sistemas de banco de dados deste tipo: MongoDB, CouchDB e Elasticsearh. • Banco de dados colunar: os dados são armazenados e agrupados em colunas armazenadas separadamente em vez de linhas. Esses bancos de dados organizam as informações em colunas que funcionam de forma semelhante às tabelas dos bancos de dados relacionais. Principais sistemas de banco de dados deste tipo: Cassandra e CosmoDB. • Banco de dados baseado em grafos: usam uma representação flexível de grafos para gerenciar dados, consistindo em três elementos: o vértice ou nó (em comparação ao SQL, é como se fosse uma linha em um SGBD), aresta (representa o relacionamento entre dois nós), a propriedade (as arestas possuem propriedades, o que permite organizar os vértices). Principais sistemas de banco de dados deste tipo: Neo4J, ArangoDB e OrientDB. 13 1.4 Microsoft SQL Server O Microsoft SQL Server é um dos líderes de mercado em tecnologia de gerenciamento de banco de dados. Trata-se de SGBDR que oferece suporte a vários aplicativos, incluindo BI (Business Intelligence), processamento de transações e análises. O SQL Server segue uma estrutura de tabela baseada em linhas, permitindo a conexão de dados e funções enquanto mantém a segurança e consistência dos dados. O Microsoft SQL Server também permite uma instalação simples e atualizações automáticas, personalização para atender às suas necessidades de negócios e manutenção simples de seu banco de dados. 1.4.1 Gerência de dados Um banco de dados SQL é composto por um ou mais arquivos de dados (.mdf/.ndf) e um arquivo de log de transações (.ldf). Os arquivos de dados contêm esquema e dados, e o arquivo de log contém alterações ou inserções recentes. Os dados são organizados por páginas (como um livro), cada página tem 8 KB e são gerenciados quanto a leitura, escrita e atualizações (MICROSOFT, 2019). De acordo com o site oficial, uma página é a unidade de armazenamento fundamental do SQL Server. O SQL Server acessa os dados puxando toda a página de 8 KB do disco para a memória. As páginas permanecem temporariamente na memória até que não sejam mais necessárias. Amiúde, a mesma página será modificada ou lida com frequência, pois o SQL funciona com o mesmo conjunto de dados (MICROSOFT, 2019). O SQL altera os dados por meio de exclusão ou modificação, ou gravando novos dados. Todas as modificações são gravadas no log de 14 transações (que fica no disco onde é seguro), no caso do servidor SQL perder energia antes de gravar os dados de volta no disco (MICROSOFT, 2019). A página de 8 KB é gravada de volta no disco depois de não ser usada por um determinado período. Depois que uma transação é gravada no disco (arquivo .mdf / .ndf), é marcada como gravada no log de transações. Em caso de queda de energia,o SQL pode recuperar as transações concluídas que não foram gravadas e adicioná-las aos arquivos do banco de dados (.mdf e .ndf) quando voltar a operar. 1.4.2 Edições SQL Server Existem várias edições do SQL Server, dependendo do tamanho dos bancos de dados e qual a sua finalidade. Algumas edições são (MICROSOFT, 2019): • Enterprise: para grandes organizações com requisitos complexos, a Enterprise Edition pode gerenciar bancos de dados de até 524 PB (Petabytes–1000 terabytes) e a quantidade de memória e núcleos de CPU é limitada apenas pelo sistema operacional em que está sendo executado. • Standard: esta é a edição para empresas que possuem um banco de dados de tamanho razoável, 10 GB ou mais, ou se muitas pessoas se conectarem a ele. Possuí um limite de 128 GB de memória, mas também pode gerenciar bancos de dados de até 524 PB. • Web: projetado como uma maneira mais econômica de gerenciar bancos de dados para sites da web. • BI (Business Intelligence): semelhante ao SQL Standard, mas com mais ferramentas analíticas e com propósito específico para Business Intelligence. 15 • Workgroup: disponível apenas até o SQL 2008, que agora está em fim de vida. Projetado para aplicações de pequenas empresas. • Express: SQL Express é muito comum para pequenas e médias empresas. Embora suporte apenas bancos de dados de até 10 GB e possa usar apenas 1 GB de memória e 1 núcleo de CPU, é uma licença gratuita da Microsoft, portanto, muitos aplicativos destinados a pequenas e médias empresas aproveitarão as vantagens do SQL Express. É uma maneira muito econômica de fornecer um mecanismo de banco de dados robusto e confiável para pequenas empresas, além de ser a versão escolhida por instituições de ensino. Durante os estudos, utilizaremos o SQL Server 2019 Express. 1.5 Oracle Um dos sistemas de banco de dados mais populares em todo o mundo, a Oracle, é confiável para algumas das maiores empresas em operação. Com muitas versões diferentes do banco de dados Oracle lançadas, a Oracle oferece recursos inovadores em muitas áreas, incluindo gerenciamento, desempenho, segurança e desenvolvimento (ORACLE, 2018a). Os administradores e desenvolvedores de banco de dados podem usar facilmente este sistema de banco de dados para criar aplicativos inovadores para suas operações de negócios. A marca Oracle é bem conhecida por sua dedicação contínua em pavimentar o desenvolvimento futuro de recursos atualizados para melhor auxiliar empresas, pequenas e grandes, em suas necessidades de gerenciamento de dados. O banco de dados Oracle pode ser implantado localmente, em nuvem ou em uma configuração híbrida, sendo, principalmente, usado para 16 armazenar dados para sistemas de processamento de transações online (OLTP) e vendido em várias edições com diferentes conjuntos de recursos e faixas de preço (ORACLE, 2018a). Embora o banco de dados Oracle seja um data warehouse popular para empresas em todos os setores, você vai querer dar uma olhada mais de perto no custo da plataforma, na estratégia de bloqueio e nos requisitos de licenciamento antes de decidir exatamente como (e quando) usar o Oracle. 1.5.1 Arquitetura: armazenamento físico e lógico A arquitetura do banco de dados Oracle depende de dois tipos de armazenamento: físico e lógico (ORACLE, 2018a). • O armazenamento físico (em disco) contém todos os arquivos do banco de dados. Estruturas de armazenamento lógico, como espaços de tabela, segmentos, extensões e blocos aparecem no disco, mas não fazem parte do conjunto de dados. • O armazenamento lógico ajuda os usuários a localizar dados específicos e ajuda a melhorar a eficiência do processo de recuperação, permitindo um sistema modular de armazenamento de dados no qual a capacidade pode ser ajustada sem afetar o desempenho. Para entender a diferença entre os dois tipos de armazenamentos, utilizaremos como exemplo um livro. O livro é impresso em papel, ou seja, trata-se de um armazenamento físico, porém, existem informações adicionais, como o número do capítulo, número da página e notas de rodapé, que ajudam os leitores a navegar pelo livro e seu conteúdo, isso seria o armazenamento lógico. Observe, então, que o armazenamento lógico se refere a uma informação contextual que aparece no livro, porém, que não faz parte 17 da história do livro. Pelo contrário, trata-se de um guia para ajudar o leitor a encontrar informações específicas ou se localizar. 1.5.2 Arquitetura: objetos Compreender a diferença entre o armazenamento físico e o armazenamento lógico é uma base para a compreensão de objetos de banco de dados. As estruturas de armazenamento lógico diferem dos objetos de banco de dados em seu grau de visibilidade. Enquanto as estruturas lógicas de armazenamento residem no banco de dados para ajudar a organizar os dados, os objetos do banco de dados consistem em representações conceituais dos dados (ORACLE, 2018a). Exemplos de objetos de banco de dados incluem linhas, tabelas, índices e visualizações que exibem dados. Os objetos de banco de dados representam a visão lógica dos dados armazenados em arquivos de vários locais. Para conseguir isso, os objetos de banco de dados contam com estruturas de armazenamento lógico, que localizam os dados de destino. 1.5.3 Arquitetura: banco de dados e instâncias O termo banco de dados é, geralmente, usado quando nos referimos ao banco de dados e à instância como um todo. Entretanto, é mais preciso usar este termo ao se referir especificamente ao disco físico ou armazenamento de arquivo que contém os dados e metadados. Por outro lado, uma instância são os processos e a memória reservados para acessar as informações no banco de dados. 18 Os bancos de dados existem no armazenamento físico (disco, por exemplo), enquanto as instâncias residem na memória e são executadas como processos. Estruturas de memória armazenam dados e metadados. Os processos ajudam a executar o banco de dados, permitem a comunicação entre vários componentes e mantêm os dados entre a memória e o disco sincronizados(ORACLE, 2018a). 1.5.4 Edições Oracle A Oracle possui quatro edições de seu banco de dados, cada uma com seus preços e características diferentes (ORACLE, 2020b): • Enterprise Edition (EE): é a principal edição do Oracle, que possui uma vasta gama de ferramentas e recursos para grandes corporações. • Standard Edition (SE): edição que possui as funções básicas de gerenciamento de banco de dados para pequenas e médias empresas, a um custo muito menor do que o EE. • Standard Edition One (SEO): é uma edição indicada para pequenas empresas e possui um preço especial para servidores de um único processador. • Oracle Express (OE): é a versão ideal para Database Administrator (DBA), ou Administrador de Banco de Dados, cientistas de dados, estudantes e para aqueles que estão tendo seu primeiro contato com a Oracle. Trata-se de um banco de dados com as mesmas funcionalidades e poder computacional que outras versões, entretanto, possui um processo de download e instalação mais simples e é gratuito. Durante os estudos, utilizaremos o Oracle 18C Express. 19 Nesta unidade, você pode conhecer um pouco sobre o conceito de banco de dados e sobre os gerenciadores de banco de dados. Você também foi apresentado a dois conceitos: bancos de dados relacionais e banco de dados não relacionais ou NoSQL. Enquanto os bancos relacionais utilizam uma estrutura fixa como tabelas com colunas e linhas, os bancos NoSQL são mais flexíveis, podendo apresentar pelo menos quatro tipo de organizações: banco de dados chave-valor, banco de dados de documentos, banco de dados orientado a grafos e banco de dados orientados a colunas. Por fim, você teve uma introdução sobre os dois principais gerenciadores de bancos de dados: o SQL Server e o Oracle Database. Referências ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 4. ed. São Paulo: Pearson, 2009. MICROSOFT. Guia de arquitetura de página e extensões.2019. Disponível em: https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and- extents-architecture-guide?view=sql-server-ver15#:~:text=Conforme%20 mencionado%2C%20em%20SQL%20Server,de%20sistema%20sobre%20a%20 p%C3%A1gina. Acesso em: 31 ago. 2021. ORACLEa. Oracle Database 18c Technical Architecture. 2018. Disponível em: https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/ technical-architecture/pdf/db-18c-architecture.pdf. Acesso em: 31 ago. 2021. ORACLEb. Oracle Database Editions. Disponível em: https://docs.oracle.com/cd/ E11882_01/license.112/e47877/editions.htm#DBLIC109. Acesso em: 31 ago. 2021. ORACLEc. O que é SQL? Disponível em: https://www.oracle.com/br/database/what- is-database/. Acesso em: 31 ago. 2021. https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/technical-architectu https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/technical-architectu https://docs.oracle.com/cd/E11882_01/license.112/e47877/editions.htm#DBLIC109. https://docs.oracle.com/cd/E11882_01/license.112/e47877/editions.htm#DBLIC109. 20 Transações Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Objetivos • Compreender o conceito de transação em um banco de dados. • Relacionar as propriedades ACID com os bancos de dados relacionais. • Compreender os casos de bloqueio entre transações. 21 1. Processamento de transações Os analistas de negócios que trabalham em soluções de sistemas devem ter uma compreensão básica dos conceitos de banco de dados. Diversos sistemas de gerenciamento de banco de dados (SGBD) fazem parte de uma classe de sistemas chamados de sistemas OLTP (OnLine Transaction Processing). Antes de estudarmos sobre o processamento de transações e as propriedades a elas relacionadas, poderemos entender o que é uma transação em um banco de dados no contexto de OLTP. Resumidamente, uma transação representa uma série de operações realizadas em um SGBD em relação a um banco de dados de modo que, uma vez que a transação é concluída, os dados são deixados em um estado confiável e também consistente. Se alguma etapa da transação falhar, todas as etapas serão revertidas, ou seja, retrocedidas, de modo que a integridade dos dados possa ser mantida. Um exemplo típico de transação seria um pedido de um cliente em uma loja virtual. Este pedido consiste em uma série de eventos como aceitação do pedido, manutenção dos dados no estoque, cobrança, entre outros. A principal característica é que todos estes eventos são tratados como um todo. Como dito anteriormente, uma transação não pode permanecer em um estado intermediário incompleto, desse modo, outros processos não podem acessar os dados da transação até que a transação seja concluída ou tenha sido revertida após a falha. O processamento de transações é projetado para manter a integridade do banco de dados (a consistência dos itens de dados relacionados) em um estado conhecido e consistente. 22 Desse modo, considerado o exemplo acima, a transação (pedido do cliente) só será efetivada quando tudo (aceitação do pedido, atualização do estoque, comprovação do pagamento, entre outros) forem processadas em sua totalidade. Logo, se houver uma falha na aceitação do pedido ou na comprovação do pagamento, a transação não será efetivada. Outro exemplo típico de transação ocorre quando você realiza uma transferência via PIX de sua conta para outra. Por exemplo, consideremos que Ana e Beatriz, duas amigas, ambas possuem o saldo de R$ 1.000,00 em suas contas bancárias. Ana vai transferir, de sua conta bancária, o valor de R$ 300,00 para a conta bancária de Beatriz. Essencialmente, o que deve ser feito na transação é: • Retirar o valor 300 do saldo de Ana, atualizando este novo saldo. • Somar o saldo atual de Beatriz com o valor 300, atualizando este novo saldo. Um código simplificado é apresentado a seguir, exemplificando esta transação: UPDATE conta SET saldo = saldo–300 WHERE cliente = ‘Ana’ UPDATE conta SET saldo = saldo + 300 WHERE cliente = ‘Beatriz’ Este código, apesar de ter duas linhas, representa apenas uma única transação. Desse modo, por exemplo, se o nome do cliente destinatário (Beatriz) estiver errado ou não existir no banco, a transação não será efetivada. Ana continuará com seu saldo anterior (ou seja, não terá o débito do valor R$ 300,00 em sua conta) e Beatriz não receberá o crédito. Se a transação for finalizada com sucesso, ou seja, não houve falha em nenhuma instrução, o novo saldo das amigas será R$ 700,00 para Ana e R$ 1.300,00 para Beatriz. 23 As transações também podem ocorrer em outros ambientes, por exemplo, entre uma organização e sua equipe por meio do aplicativo de Recursos Humanos, em marketing, controle de produção e em outros lugares. Normalmente, mas nem sempre, esses tipos de aplicativos foram implementados sobre bancos de dados relacionais. Os SGBDs foram desenvolvidos para oferecer suporte ao processamento de transações, entretanto, não são os únicos meios para o processamento de transações por motivos históricos e por motivos técnicos. Além de aplicativos transacionais baseados em dados puramente relacionais, os bancos de dados relacionais incorporaram XML e recursos orientados a objetos ao longo dos anos para que ambientes transacionais híbridos (que requerem o uso dessas tecnologias junto com dados relacionais) também possam oferecer suporte ao processamento de transações, embora XML puro e os bancos de dados orientados a objetos continuem a fazer parte do mercado de aplicativos especializados. Acrescenta-se, ainda, que muitas empresas continuam a empregar em seus projetos os SGBDs Hierárquicos para OLTP. Isso ocorre devido às dificuldades de migrar para fora deste tipo de banco de dados ou porque esses tipos de bancos hierárquicos são muito eficientes para a carga de trabalho específica. 1.1 Propriedades ACID Além do desempenho e outras considerações generalizadas, os principais requisitos para bancos de dados de processamento de transações são as chamadas propriedades ACID (Atomicidade, Consistência, Isolamento, Durabilidade), as quais garantem que as transações sejam processadas de forma confiável, segundo Elmasri (2009). 24 As transações ACID eram um grande negócio quando introduzidas formalmente, na década de 1980, em bancos de dados SQL monolíticos, como Oracle e IBM DB2. Bancos de dados NoSQL distribuídos populares da última década, incluindo Amazon DynamoDB e Apache Cassandra, inicialmente, focados em casos de uso de Big Data, não exigiam tais garantias e, portanto, evitaram implementá-los completamente. No entanto, as transações ACID tiveram um forte retorno nos últimos anos com o lançamento de bancos de dados distribuídos que têm suporte integrado para eles. A seguir, vamos conhecer cada uma destas propriedades, segundo Elmasri (2009): • Atomicity (atomicidade): garante que todas as operações em uma transação são tratadas como uma única unidade, que é totalmente bem-sucedida ou falha totalmente. No exemplo da conta bancária, se alguma das instruções falhar, toda a transação deve ser abortada e retrocedida. • Consistency (consistência): garante que uma transação só pode levar o banco de dados de um estado válido para outro, evitando a corrupção de dados. Suponha, então, que a transação do exemplo anterior falhe na segunda instrução no momento de atualizar o saldo de Beatriz, não somando em sua conta os R$ 300,00 e a transação não seja revertida. Desse modo, o banco de dados ficará inconsistente,
Compartilhar