26/10/2009 O que são Metadados? Metadados (Dicionário de Metadados ou DMD), ou Metainformação... Evandro Ricardo Silvestre • São informações sobre dados. • Um item de um Metadado pode dizer do que se trata aquele dado, geralmente uma informação inteligível por um computador. Mas, o que são Metadados? Quais são os atributos desse telefone? • Marca • Modelo • Cor • Altura • Largura • Data Fabricação • Peso CREATE TABLE telefone ( marca character varying(50) NOT NULL DEFAULT 'GE', modelo integer, cor integer, altura double precision, largura double precision, data_fabricacao date, peso double precision ) Quais são os metadados do atributo marca? Então Metadados é isso??? Acabou?? • Caracter • Tamanho 50 • Não pode ser nulo • Valor padrão ‘GE’ Como acessar Metadados em PostgreSQL Quer um exemplo??? • Todos os Metadados são armazenados em tabelas do catalog chamado pg_catalog no seu banco de dados. • Exemplo de acesso aos metadados do PostgreSQL 1 26/10/2009 Onde saber mais? • Documentação oficial • Documentação em pt-br (versão 8.0) • Exemplo de consultas ao pg_catalog – – Diagrama para visualizar melhor http://www.postgresql.org/docs/current/static/catalogs.html http://pgdocptbr.sourceforge.net/pg80/catalogs.html#CATALOGS-OVERVIEW – http://pgdocptbr.sourceforge.net/pg80/syscat.sql – http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Metadados • No pg_catalog existem algumas views que auxiliam na obtenção dos metadados e em informações do banco, como por exemplo – – – – pg_locks pg_stat_activity pg_ts_config Etc. Qual é a ideia? Como eu uso tudo isso? • A ideia inicial é retirar tudo que é lixo da aplicação • Você pode alterar as tabelas do pg_catalog • Maaassss, isso não é nenhum pouco recomendável • É melhor ter um schema com suas próprias tabelas para armazenar os metadados • Essas tabelas devem se relacionar com as tabelas do pg_catalog através das chaves candidatas • Por que com as chaves candidatas? – – – – – – – Label Hint Validações básicas Lista de valores dos campos Help Comandos de Insert, Update e Delete (IUD) Regras de Negócio • E colocar no banco de dados em forma de metadados criando assim um DICIONÁRIO DE METADADOS. • Por exemplo: – A Label será um atributo Descrição de uma coluna – O Hint será um atributo Complemento de uma coluna – Porque os oid (chave primária) podem varias quando restaura o banco de dados, diferente das chaves candidatas. – Dessa forma, as referências serão perdidas. • E tem outra, quando você tem suas tabelas, você tem mais liberdade para trabalhar. • Tudo se tornará metadado... Simples Diagrama de um DMD E como funciona? • Telas de cadastros serão montadas automaticamente tomando como base os metadados de uma tabela • O posicionamento do campo na tela será feito através dos atributos Ordem e Coluna (coluna indica a posição na horizontal, ordem a posição da vertical) • Caso o campo não esteja marcado como visível, ele não aparecerá • O atributo nome é a descrição que aparecerá no lado do campo • O atributo ajuda é o hint, ou, um campo de ajuda • O atributo regra_validacao indica uma regra que deve ser validada nesse campo • Comando de IUD serão automáticos, com base nos metadados • O atributo chave_primaria indica quais colunas serão utilizadas no WHERE do Update e Delete 2 26/10/2009 Continuando... Quer ver como funciona? • Comandos de IUD das Telas de movimentos (por ex: efetuar venda) também serão montadas automaticamente • Essas telas são um pouco mais complicadas de serem montadas automaticamente, mas nada impede de serem feitas • Ai vai um exemplo em Java... Benefícios Concluindo... • Você terá um catalogo do seu banco de dados. Facilitando o trabalho do DBA. • Montar um sistema baseado em metadados não é fácil, exigi muito tempo no desenvolvimento da infra-estrutura • Porém ajuda muito em todo o resto do desenvolvimento • Com os metadados, as tarefas repetidas relacionadas ao banco de dados são centralizadas • Alterações banais como mudar label, ordenação, adicionar campo, são feitas muito facilmente • A implantação de regionalização no sistema também é bem fácil • É possível adequar o sistema para várias empresas adicionando apenas um atributo de código da empresa na tabela de metadado • Por ex: a Empresa X tem um campo a mais no cadastro de produto. • Tudo isso é gerenciando pelo metadados • Os metadados servem para ajudar a automatizar tarefas repetidas relacionadas aos dados em um sistema • O pg_catalog nos dá acesso as informações referente a estrutura no nosso banco • Com base no pg_catalog, podemos agregar mais informações para adequarmos as nossas necessidades DÚVIDAS Evandro Ricardo Silvestre [email protected] 3