A organização e gestão dos dados

A informação numa base de dados relacional está guardada em tabelas que são constituídas por linhas e colunas. As tabelas organizam-se numa base de dados de acordo com um determinado esquema. Cada tabela é um objecto bem definido, com um propósito concreto, e com uma denominação única no esquema.
Uma tabela é normalmente constituída por muitas colunas e linhas mas há casos particulares em que pode existir apenas uma única coluna; ou o inverso também pode ser verdadeiro: uma tabela com várias colunas mas constituída unicamente por uma linha, a qual por sua vez pode estar vazia ou conter dados.
Os dados nas tabelas estão contidos nas linhas e são as colunas que dão contexto a esses dados. Para um determinado conjunto de colunas os valores (nessas colunas) são únicos em cada uma das linhas. É este facto que permite distinguir as linhas entre si. Esse conjunto identificador denomina-se chave primária (CP). O conjunto identificador pode ser singular ou plural, no primeiro caso é formado por uma só coluna – pelo que se diz chave primária simples – no segundo por múltiplas colunas em simultâneo – e então denomina-se chave primária composta. No entanto, quer seja simples ou composta uma tabela tem sempre e unicamente uma chave primária.
Uma base de dados relacional precisa de uma interface especial com o utilizador. essa interface que possibilita quer a simples interacção com os dados, ou as mais complexas tarefas de gestão da informação e da estrutura da base de dados é o Sistema de Gestão de Base de Dados Relacional (SGBDR). Quando se fala do Oracle, MySQL ou SQL Server, por exemplo, está-se a referir a SGBDRs. Todos os modernos e mais utilizados SGBDRs utilizam o SQL (Structured Query Language) como o “caminho” de acesso à informação.

Componentes de uma base de dados

Uma base de dados, no sentido estrito de “qualquer coisa que informa”, e não de um sistema de gestão de base de dados, é composta por tabelas, que por sua vez estão estruturadas em linhas e colunas, e cada linha tem uma identidade própria na tabela.
Cada linha é interceptada por pelo menos uma coluna, e cada um desses pontos de intersecção é uma peça de informação.
Uma base de dados é do tipo relacional quando tem origem no Modelo de Dados Relacional. Ou seja, como um prédio tem plantas e é construído com suporte nesse planeamento, também uma base de dados tem que ser pensada e conceptualizada. E é para isso que servem os modelos de dados: são as plantas das bases de dados. Na prática o qualificativo relacional significa que é possível associar os dados localizados em tabelas distintas através de colunas que lhes sejam comuns.
É esta capacidade de relacionar os dados contidos em tabelas diferentes que é o ponto forte das bases de dados relacionais. Aliás, é essa característica que permite transformar dados (aquilo que está em cada uma das tabelas) em informação. A informação nasce precisamente dessa faculdade de criar informação ao ligar as tabelas entre si.

Como se pode ver na Figura 1 é possível associar os actores que participaram num determinado filme através da tabela Actores do Filme que tem colunas em comum com as tabelas Filme e Actor

Figura 1: Associação entre actores e filmes em que participaram.

Sistema de Gestão de Base de Dados Relacional | SGBDR

O MySQL tal como o Oracle ou o SQL Server, é um Sistema de Gestão de Base de Dados Relacional, i.e., aquilo que aparentemente é unicamente uma base de dados é muito mais do que isso.
Um SGBDR além de ser composto por dados (aquilo que é mais evidente para os utilizadores sem conhecimentos técnicos) engloba uma série de componentes que permitem e facilitam a entrada e manipulação dos dados, ou dito de outro modo, um sistema de gestão de base de dados é um conjunto de software que gere e controla o acesso à informação propriamente dita.

MySQL | Algumas características

O MySQL é o sistema de gestão de bases de dados open source mais utilizado em todo o mundo. Quando comparado com outros sistemas de uso livre como, por exemplo, o PostgreSQL, o MySQL tem muitas vantagens das quais se referem algumas em seguida:
  • Apesar de ser um SGBDR (Sistema de Gestão de Base de Dados Relacional) com altos níveis de performance é todavia de fácil utilização, quer nas tarefas de exploração da informação quer em termos de administração da base de dados;
  • Utiliza a linguagem padrão SQL (Structured Query Language) comum a todos os sistemas comercias mais utilizados: Oracle, SQL Server, DB2;
  • É um sistema multithreaded (múltiplas tarefas num único processo) pelo que aceita a ligação de múltiplos clientes e, por sua vez, cada cliente pode utilizar várias bases de dados em simultâneo. Um servidor de MySQL pode funcionar em múltiplos sistemas operativos incluindo os mais conhecidos (Windows, Linux, Unix e Mac OS), e aceita ligações de sistemas operativos externos pois suporta os protocolos ODBC, JDBC e .NET. A utilização destes protocolos permite que os mais diversos tipos de clientes tenham acesso às bases de dados em MySQL. Assim, é possível aceder a uma base de dados através de uma folha de cálculo, ou de outro tipo de aplicação, de uma forma transparente para o utilizador;
  • O MySQL incorpora altos níveis de conectividade podendo ser acedido a partir de qualquer nó da Internet. Por outro lado, este SGBDR possui apertados controlos de acesso à informação: para além das credenciais de acesso associadas a cada utilizador, tem ainda regras de acesso aos dados que possibilitam que, por exemplo, um determinado conjunto de dados possa ser visualizado por dois utilizadores mas que só um deles os possa modificar. Já em termos de segurança da conexão utiliza ligações encriptadas através do protocolo SSL (Secure Sockets Layer);
  • Este SGBDR é um project Open Source (apesar de ser agora propriedade da Oracle Corporation) que disponibiliza este software em duas vertentes principais: através de uma licença GNU de domínio público, ou por intermédio de licenças comerciais em que as organizações passam a dispor de suporte técnico especializado. A plena disponibilidade das distribuições de uso livre significa que basta ter acesso à Internet para que qualquer interessado as consiga obter.

MySQL | Dicionário de dados

Uma instalação de MySQL tem por defeito três bases de dados (de sistema): information_schema, mysql e performance_schema. O repositório mysql contém o dicionário de dados do sistema MySQL. Uma cópia, apenas com a função de leitura, é guardada na base de dados information_schema. O dicionário de dados é totalmente constituído por tabelas.
Nunca, em nenhum caso – nem com nenhuma justificação -, se deve alterar directamente as tabelas do dicionário de dados pois isso leva SEMPRE a consequências muito nefastas quer na disponibilidade e/ou quer no mero funcionamento do sistema de base de dados.

MySQL | Utilizador | Login

A segurança do MySQL avalia os utilizadores consoante as suas coordenadas de origem. A chave de segurança é composta por três parâmetros: nome do utilizador (user name), palavra-chave (password) e computador (host). Na gestão de utilizadores convém ter muita atenção com os valores para host pois frequentemente a entrada de um utilizador é recusada apenas por ter a máquina de origem mal atribuída.

O parâmetro host pode ter três valores:

  • localhost. O utilizador apenas pode ligar-se a partir da mesma máquina onde funciona o servidor de MySQL.
  • IP/domínio. A ligação somente será efectuada a partir de um determinado IP ou de um domínio.
  • %. A ligação pode ser feita a partir de qualquer máquina e/ou domínio. Funciona como um “trunfo”, i.e., representa qualquer computador, quer esteja na rede local ou na Internet.

MySQL | Listener

O listener (“aquele que ouve”) é um serviço lançado quando o daemon(1) do MySQL é iniciado. O listener é um subprocesso dependente do próprio servidor da base de dados, e corre ma porta que estiver especificada no ficheiro de configuração mysql.ini. Por defeito, quer seja em Windows ou Linux, por exemplo, está assignado à porta 3306.
Num sistema Windows pode verificar-se se o processo está a correr acedendo ao gestor GUI de serviços, ou utilizando a janela de comandos com a seguinte instrução:

netstat -a | findstr /C:LISTENING | findstr /C:3306

1 Programa de computador que corre em backgound, i.e., sem controlo directo pelo utilizador.

MySQL | Motores de base de dados

São os motores (engines) de base de dados que orientam os processos que asseguram a integridade dos dados, o modo como a estrutura física dos dados se organiza e, ainda, os mecanismos que asseguram a associação entre as estruturas lógicas e físicas do sistema.
No MySQL 5.6 existem os seguintes tipos principais de motores:
  • InnoDB. Motor que implementa o mecanismo ACID.
  • MyISAM. Anteriormente à versão 5.6 era o motor por defeito do MySQL; motor não-transaccional.
  • Memory. Um motor que funciona unicamente na memória (física ou virtual).
  • Archive. Destina-se ao arquivamento de dados raramente utilizados.
Para ver todos os motores disponíveis pode digitar-se, numa janela de Command Line do MySQL, a seguinte instrução: “SHOW ENGINES;”.

MySQL | Motor InnoDB

O motor InnoDB mantém um conjunto de logs em tudo semelhante ao que faz o Oracle. Esses logs (ou registos) destinam-se a assegurar a integridade das transacções ao mesmo tempo qye optimizam o custo transaccional. Este tipo de motor faz com o MySQL seja uma base de dados tipicamente transaccional. O InnoDB implementa as transacções ACID, o lock a nível da linha, além de assegurar a integridade referencial.

MySQL 5.6 | Arquitectura | Parte I

O superutilizador/DBA principal em MySQL denomina-se root (em Oracle é o utilizador SYS). Em MySQL uma base de dados é gerida de uma forma lógica e é o SGBDR que trata do armazenamento físico. O trabalho em SQL é controlado pela componente “MySQL Monitor” (em Oracle quem trata disso é o PL/SQL). A partir da versão 5.6 o MySQL já inclui a capacidade de processar XML.
Em MySQL é possível trabalhar com vários motores de base de dados, mas o único que assegura as propriedades transaccionais ACID é o InnoDB. Para além desse aspecto o motor InnoDB é o único que garante a regra de integridade referencial, e do protocolo X/Open XA para o processamento distribuído de transacções. O InnoDB é o motor por defeito em MySQL.