Amigos, este é o meu (#profMBA) primeiro post de 2016. Ele é resultado da orientação da monografia de final de curso do GEORGE ASSUNÇÃO GADELHA.
1. SISTEMAS DE BANCO DE DADOS E MODELO RELACIONAL
Este trabalho apresenta o que é um banco de dados, suas características e componentes, com foco no modelo relacional, que tem sido bastante utilizado ao longo das ultimas décadas, e para tal será demonstrado como opera, principais vantagens e limitações.
1.1 SISTEMAS DE BANCOS DE DADOS
Cada vez mais as informações tem se tornado um papel de extrema importância em qualquer organização. A necessidade de guardar essas informações determinou a criação de técnicas e conceitos que permitissem administrar esses dados de maneira eficiente e eficaz.
Uma solução paliativa encontrada para o armazenamento destes dados foi o sistema de processamento de arquivos, porém estes sistemas apresentavam uma série de deficiências, como: inconsistência e redundância dos dados, dificuldade de acesso, isolamento dos dados, problemas de segurança, entre outros. Essas limitações serviram como motivação para a criação de uma nova solução para o armazenamento das informações, foi então que surgiram os Sistemas de Bancos de Dados (SBDs).
Um SBD ou Sistema de Banco de Dados pode ser definido como um sistema de manutenção de registro, e é composto por quatro componentes principais: dados, hardware, software e usuários. Assim sendo, o SBD é a composição entre a base de dados, a máquina que opera esses dados, os SGBDs e os usuários do banco de dados.
Um sistema de banco de dados é projetado para armazenar grandes volumes de informações de maneira eficiente e segura. Porém, esse armazenamento deve ser feito de forma a proporcionar aos usuários do SBD uma visão abstrata dos dados. Ou seja, o sistema esconde de seus usuários detalhes do armazenamento dos dados e de como eles são mantidos.
1.2 SISTEMAS GERENCIADORES DE BANCOS DE DADOS (SGBDS)
Todo SBD, como dito anteriormente, é projetado para trabalhar com grandes volumes de informações. Como a quantidade dessas informações cada vez mais cresce nas organizações, surgiu a necessidade de criação de técnicas e ferramentas para manipulá-las. Foi com esse intuito que foram criados os Sistemas Gerenciadores de Bancos de Dados (SGBDs).
Segundo KOKAY (2012), um SGBD é um conjunto de programas que permite armazenar, modificar e extrair dados de uma base de dados. Além disso, um SGBD permite a seus usuários processos de validação, recuperação de falhas, segurança, otimização de consultas, garantia de integridade dos dados, dentre outros.
Os SGBDs gerenciam toda e qualquer ação feita em um banco de dados, tudo que é feito no banco passa antes pelo SGBD. Como esse trabalho de organização e manipulação dos dados é um tanto quanto complexo, foram criados mecanismos que ajudam a definir melhor a estrutura de um banco de dados, esses mecanismos são conhecidos como modelos de dados (MAMEDE, 2012).
Modelar dados significa criar um modelo padrão que explique o funcionamento do banco de dados, facilitando dessa forma o seu entendimento. Os modelos de dados mais conhecidos são, modelo hierárquico, modelo em rede, modelo relacional, que é à base deste trabalho e assunto da próxima seção, e modelo orientados a objetos.
1.2.1 CARACTERISTICAS DO SGBD
Um SGBD possui diversas características que o tornam seu uso indispensável em qualquer sistema de informação, dentre essas características podemos destacar como principais:
Controle de Redundância: | Essa característica serve para avaliar e controlar o armazenamento de dados repetidos. Uma vez que mais de um usuário acessa o banco, estes podem armazenar a mesma informação várias vezes, acarretando assim problemas à base de dados. Esses problemas podem ser caracterizados como: O desperdício de espaço de armazenamento, pois se há redundância, a quantidade de dados é maior e consequentemente o espaço para armazená-los também. Outro problema é a inconsistência dos dados, pois há a possibilidade de alguns arquivos serem atualizados e outros não. |
Compartilhamento de dados: | Um SGBD deve permitir que as informações armazenadas na base de dados estejam disponíveis de forma rápida independente do número de usuários que as acessam. Além disso, o compartilhamento de dados deve ser feito de maneira correta e segura. Para isso, é geralmente usado um software para o controle de concorrência. |
Esquematização: | Os SGBDs devem seguir um modelo de esquema para armazenar seus relacionamentos, isso facilita o entendimento e aplicação. Com isso a integridade dos dados pode ser garantida com mais facilidade. |
Controle de Acesso: | É também função do SGBD provê restrições de acesso para controlar que tipo de usuário pode desempenhar determinada função dentro de um banco de dados, e quais informações podem ser visualizadas. Ocorre na maioria das vezes em sistemas de grande porte devido à grande quantidade de informações. |
Backup ou Cópias de Segurança: | A maioria dos SGBDs possui uma cópia de segurança para que o sistema de banco de dados possa ser restaurado em caso de falha. Em caso de falha do sistema durante a execução de uma transação, a cópia de segurança é capaz de recolocar o banco de dados no ponto em que estava antes de iniciada tal transação. Além disso, com as cópias de segurança é possível também restaurar registros indevidamente excluídos. |
1.3 MODELO RELACIONAL
1.3.1 DEFINIÇÃO
Conceito criado em 1970, por Edgar Frank Codde depois mantido e aprimorado por Chris Date e Hugh Darwen, o modelo relacional introduz os Sistemas Gerenciadores de Bancos de Dados(SGBDs), que são baseados no principio de que todos os dados estão armazenados em tabelas.
Este nome foi escolhido, segundo Silberschatz (1999), devido à semelhança entre os conceitos de tabela de bancos de dados e relação matemática. Uma tabela é constituída por linhas, que também podem ser chamadas de tuplas, onde cada uma dessas linhas representa um relacionamento. Como uma tabela é formada por várias linhas, esta pode ser conceituada como uma coleção de relacionamentos. Já uma relação pode ser definida, ainda segundo Silberschatz (1999), como um subconjunto de um produto cartesiano de uma lista de domínios.
Um banco de dados relacional pode ser definido como uma coleção de tabelas (ou relações), onde cada uma delas possui um nome específico. Segundo Bonfioli (2006), uma relação é constituída por um ou mais atributos (campos), que traduzem o tipo de dados a armazenar. Cada instância do esquema (linha) designa-se por uma tupla (registro).
O modelo relacional possui forma bastante estruturada, além de relacionamentos bastante distintos, qualificando o armazenamento e manipulação dos dados por sua forma organizada e de fácil acesso, oferecendo assim a seus usuários processos de validação, integridade dos dados, recuperação de falhas, segurança, otimização de consultas, dentre outros. Devido a esses fatores entende-se o motivo do amplo uso do modelo relacional nas ultimas décadas.
2.3.4 ESTRUTURA DOS BANCOS RELACIONAIS
Não por acaso o modelo relacional instalou-se como o primeiro modelo de dados para aplicações comerciais, devido suas características e propriedades, já apresentadas, este modelo tornou-se bem mais vantajoso em relação aos modelos criados até então.
Mesmo descritas e definidas as características dos bancos relacionais, não está tão clara seu funcionamento. Para entender melhor a estrutura desses bancos, considere uma tabela “Aluno” que possui quatro colunas “matricula”, “nome”, “curso” e “cod_curso”. Assim como mostra a figura 2.
Figura 2. Exemplo de banco relacional – Relação Aluno
Como já dito, uma tabela representa uma relação, onde cada coluna é chamada de campo. O nome dos campos é chamado de atributos, e para cada atributo há um conjunto de valores permitidos, que é dado o nome de domínio do atributo. Nesse caso, temos a relação “Aluno”, com os atributos “matricula”, “nome”, “curso” e “cod_curso”, o domínio é especifico de cada atributo, para o atributo curso, por exemplo, o domínio é o conjunto de todos os cursos de uma determinada faculdade/universidade.
Qualquer linha da relação “Aluno” é uma 4-tupla visto que esta é uma tabela que contém quatro atributos. Assim sendo, se a tabela possuísse cinco atributos, cada linha seria do tipo 5-tupla e assim por diante.
Agora considere uma segunda relação “Faculdade”, com os atributos “ID” e “curso. Assim como está representado na figura 3.
Figura 3: Exemplo de banco relacional – Relação Faculdade
Outro conceito usado nos SGBDs relacionais é a chave. Chave pode ser definida como um conjunto de atributos de uma relação que são utilizados para realizar operações que envolvam atributos e seus valores. As mais conhecidas são a “chave primária” ou “primary key” e a “chave estrangeira” ou “foreing key”
Como um dos conceitos mais básicos do modelo relacional, as chaves representam uma forma simples e eficaz de associação entre as tabelas do banco de dados. A chave primária foi criada com o objetivo de identificar de forma única as tuplas da tabela e ainda de determinar a ordem física dessas tuplas. A chave estrangeira permite uma relação de dependência entre atributos de tabelas distintas, de forma que os valores permitidos em um atributo dependam dos valores existentes em outro atributo. (BRITO, RICARDO, 2012 p.01).
Dessa forma é possível perceber que a primary key da relação “Aluno” é o atributo matrícula, pois nenhum aluno tem o numero de matricula igual, enquanto na relação “Faculdade” a primary key é o atributo ID. Já uma foreing key tem somente na tabela “Aluno”, e é o atributo “cod_curso” que exerce relação de dependência do atributo “ID” da tabela “Faculdade”.
A estrutura do modelo relacional não possui caminho pré-definido para fazer o acesso aos dados e sua estrutura não permite repetição de informação, incapacidade de representar parte da informação e perda de informação (MAMEDE, 2012).
2.3.2 TRANSAÇÕES EM SGBDS RELACIONAIS
Uma transação de acordo com Leite (2012, apud RAMAKRISHNNAN, 2008) são execuções de programas de usuários que são vistas pelos SGBDs como uma série de operações de leitura e escrita. As transações do modelo reacional obedecem a certas propriedades, propriedades estas que também são chamadas pelo acrônimo ACID (Atomicity, Consistency, Isolation, Durability).
Essas propriedades foram criadas com o intuito de provê aos SGBDs relacionais vantagens no que diz respeito à integridade dos dados, controle de concorrência, segurança e recuperação de falhas em relação aos demais modelos. Essas propriedades podem, portanto, serem assim definidas:
Atomicidade | Propriedade usada para garantir que após iniciada uma transação esta deverá ser executada até o final. Em caso de falha durante a execução, toda transação é desfeita voltando assim para o seu estado de inicio. |
Consistência | Essa propriedade parte do principio que somente pode ser iniciada uma transação relacional se o banco de dados encontrar-se em um estado consistente, ou seja, o banco deverá está funcionando normalmente sem que nenhuma regra de integridade tenha sido violada (MENEZES, 2012). São exemplos de violação de regras que tornam um banco de dados inconsistente: Chaves duplicadas, campos not null não preenchidos, atributo não chave não possui dependência com chave primária, chave estrangeira não relacionada com chave primária. Após o término da transação (commit) o banco deverá também está consistente. Em caso de inconsistência ao final da alteração feita no banco de dados, a transação é desfeita (rollback). Essa propriedade garante que a consistência do banco de dados seja mantida o tempo todo. |
Isolamento | Essa é a propriedade que garante que uma transação funcione de forma isolada e independente das outras transações. Dessa forma não haverá conflitos entre elas, mesmo que sejam executadas várias transações ao mesmo tempo, e a consistência dos dados é mantida ao final da operação (MENEZES, 2012). |
Durabilidade | Essa propriedade garante que após uma determinada transação tenho sido executada com sucesso (após o commit), os efeitos que essa transação trouxe ao banco persistam mesmo em casos onde haja falha no sistema antes que as alterações tenham sido salvas em disco Leite(2012, apud RAMAKRISHNAN, 2008). |
1.3.3 LINGUAGEM SQL
Devido a grande quantidade de informações advindas das aplicações web foram criadas muitas linguagens para manipulá-las, porém, essa diversidade de linguagens torna a comunicação entre as aplicações e também entre as bases de dados, um tanto quanto complexa. Para solucionar esse problema seria preciso criar uma linguagem padrão de comunicação entre as bases de dados. Com esse intuito surge o SQL(Structured Query Language), que trás consigo padrões que permitem a realização de operações básicas de forma universal.
Desenvolvido pela IBM no inicio da década de 70, sua primeira versão carregava o nome de SEQUEL que significa Structured English Query Language ou Linguagem de Consulta Estruturada. Apesar do SQL ter sido criado originalmente pela IBM, muitas outras organizações desenvolveram outros “dialectos” para a linguagem, e por esse motivo surge a necessidade de se adotar um padrão para a linguagem. Esse trabalho de padronização foi realizado pela ANSI e pela ISO, porém mesmo assim o SQL ainda é dividido em muitas extensões, como: Transact-SQL, PL/SQL.
Após várias revisões e agregações de funções, como: expressões regulares de emparelhamento, queries recursivas, gatilhos(triggers), dentre outros, em dezembro de 2011 foi lançada a última versão até então do SQL, que recebeu o nome de SQL 2011.
A linguagem SQL é a base para a utilização de bancos de dados relacionais. Possui comandos básicos que permitem resolver a maioria dos problemas de manutenção do banco de dados, além de provê o controle e segurança das informações. Esses comandos podem ser divididos em quatro grupos principais, são eles:
DDL (Data Definition Language): Linguagem usada para criar e definir a estrutura de um banco de dados. A tabela 1 apresenta um exemplo de três de seus comandos principais, o CREATE, ALTER e o DROP.
Tabela 1: Comandos DDL
DML(Data Manipulation Language): Linguagem de manipulação dos dados. Responsável por realizar comandos como inclusão, alteração e exclusão dos dados. A tabela 2, abaixo, apresenta esses comandos e descreve a função de cada um deles.
Tabela 2: Comandos DML
DCL (Data Control Language) – Esse grupo de comandos é responsável por controlar os aspectos de autorização de dados e licenças de usuários autorizados ou não a ver e manipular as informações contidas em um banco de dados.
O grupo DCL possui dois comandos principais: GRANT que é usado para dá autorização e privilégios de manipulação de dados a um usuário, e o REVOKE que retira do usuário os privilégios a ele fornecidos.
DQL (Data Query Language): Linguagem de consulta a dados e obtenção de registros. Possui apenas um único comando, o SELECT. Esse comando busca registro de especificados de uma ou mais tabelas. A figura 1, abaixo, mostra um exemplo de uso do comando SELECT.
Figura 1. Comando SELECT
A cláusula SELECT seleciona as colunas “nome” e “departamento” da tabela indicada na cláusula FROM, no caso a tabela “Funcionário”. A cláusula WHERE define uma condição para atender a consulta (query) desejada. Neste caso o retorno para a query é o nome e o departamento de todos os funcionários da tabela “Funcionário” que tenham seu salário maior que 1500R$.
1.3.5 LIMITAÇÕES DO MODELO RELACIONAL
Como a demanda de dados é cada vez maior nas organizações, alcançando o nível de petabytes, como é o caso da Google, Facebook e Twitter. Por esse motivo o modelo relacional passou a apresentar algumas limitações quanto ao volume deste numero muito grande de dados.
Essas limitações apresentadas pelos SGBDs relacionais, de modo geral estão relacionadas à escalabilidade dos dados, visto que, quanto maior a demanda desses dados mais difícil é, para o SGBD, o gerenciamento.
Uma solução paliativa adotada para solucionar esse problema foi a substituição do servidor por outro mais potente (upgrade), entretanto essa solução não foi suficiente para conter o problema, pois como o volume de dados é crescente e em ritmo acelerado, mais cedo ou mais tarde seria preciso uma nova solução.
Diante desse quadro, a solução, segundo Brito(2010), seria escalar o banco de dados, distribuindo-o em várias máquinas. Entretanto, essa técnica não é algo simples de ser feito nos SGBDs relacionais, isso porque possuem forte estruturação dificultando assim a distribuição e organização dos dados nos vários servidores.
Observando a esses pontos, os desenvolvedores de bancos de dados identificaram que há a necessidade de buscas por novas soluções, partindo desse ponto é que foi criado o modelo não relacional, que concentra seu foco justamente no gerenciamento de volumes de dados muito grandes.
Referencias
- BONFIOLI, Guilherme, F.Banco de dados relacional e objeto/relacional : Uma comparação usando postgresql, 2006.
- BRITO, Ricardo W. Bancos de Dados NoSQL x SGBDs Relacionais: Análise Comparativa. Disponível em: http://www.infobrasil.inf.br/userfiles/27-05-S4-1-68840-Bancos%20de%20Dados%20NoSQL.pdf. Acessado em: 06, maio. 2013
- KOKAY, Marília. Banco de dados NoSQL: Um novo paradigma, 2012. Disponível em: http://www.devmedia.com.br/websys.5/webreader.asp?cat=2&artigo=4773&revista=sqlmagazine_102#a-4773 Acessado em: 19 setembro. 2013
- LEITE, Gleidson. Análise Comparativa do Teorema CAP Entre Bancos de Dados NoSQL e Bancos de Dados Relacionais,2010.Disponivel em: http://www.ffb.edu.br/sites/default/files/tcc-20102-gleidson-sobreira-leite.pdf Acessado em 17 setembro. 2013
- MAMEDE, Camila. Análise Comparativa de Ferramentas de Bancos de Dados Não Relacionais, 2012.
-
MENEZES, João Paulo, A.NoSQL: uma nova abordagem para manipulação de dados estruturados e não estruturados, 2012
-
SILBERSCHARTZ, Abraham; Korth, Henry F.; Sudarshan, S.Sistema de banco de dados. 3ª ed. São Paulo: Pearson Makron Books, 1999.
Nenhum comentário:
Postar um comentário