Reindexação Automática em SGBDs Relacionais

Tamanho: px
Começar a partir da página:

Download "Reindexação Automática em SGBDs Relacionais"

Transcrição

1 Reindexação Automática em SGBDs Relacionais Eduardo Morelli, José Maria Monteiro, Ana Carolina Almeida, Sérgio Lifschitz Departamento de Informática PUC Rio rio.br Abstract. We propose a solution to the automatic and online reindex problem. The proposed mechanism runs continuously and with almost no human intervention. The adopted strategy is based on ad hoc heuristics that monitor the index fragmentation level and, when necessary, reindex it automatically. We have actually implemented our ideas within the PostgreSQL DBMS code. Practical performance tests show the effectiveness of our approach. Resumo. Neste trabalho, prop e se uma solução para o problema da reconstrução automática e online de índices. O mecanismo proposto executa de forma contínua e praticamente sem intervenção humana. A estratégia adotada baseia se em heurísticas ad hoc que monitoram o nível de fragmentação das estruturas de índice e, sempre que necessário, as reconstroem automaticamente. Nossas idéias estão implementadas no SGBD PostgreSQL. Testes de desempenho são apresentados para mostrar a aplicabilidade da nossa abordagem na prática. 1. Introdução As aplicações de bancos de dados têm se tornado cada vez mais complexas e variadas. Estas podem ser caracterizadas por manipularem grandes volumes de dados e pela demanda por baixo tempo de resposta das consultas e por alta produtividade (throughput) das transações. Neste contexto, a sintonia (tuning) [Shasha e Bonnet 2003] das estruturas de índice tem se revelado ainda mais importante, influindo diretamente no desempenho dos sistemas de bancos de dados. Realizar o ajuste das estruturas de índice nas aplicações atuais tem se tornado uma tarefa extremamente complicada para os administradores de bancos de dados (DBAs). Esta tarefa requer um profundo conhecimento acerca dos detalhes de implementação dos sistemas de gerenciamento de bancos de dados (SGBDs), das características dos dados armazenados, das aplicações e da carga de trabalho (conjunto de consultas e atualizações) submetida ao SGBD [Bruno e Chaudhuri 2007a], [Luhring et al 2007]. Os principais fabricantes de SGBDs oferecem ferramentas para prover suporte à sintonia automática (ou auto sintonia) de índices (Ex.: [Zílio et al 2004], [Bruno e Chaudhuri 2005]). A idéia é auxiliar os DBAs através da análise automática da carga de trabalho e, com base nesta análise, recomendar a criação ou remoção de índices. Entretanto, tais ferramentas adotam uma abordagem estática (offline) na solução do problema e transferem para o DBA tarefas de sintonia importantes e decisões relativas à quando modificar o esquema e quais de fato são as modificações necessárias. Além disso, são soluções ad hoc e que exigem participação de DBAs especialistas. 31

2 Algumas iniciativas recentes apresentam descrições de protótipos que implementam algumas funcionalidades na direção da sintonia automática e contínua das estruturas de índice [Schnaitter et al 2006], [Luhring et al 2007], [Costa 2005], [Salles e Lifschitz 2005], [Lifschitz e Morelli 2006]. Alguns desses trabalhos procuram estender o SGBD PostgreSQL adicionando funcionalidades de auto sintonia (Ex.:. [Salles 2004], [Costa 2005], [Salles e Lifschitz 2005], [Lifschitz e Morelli 2006], [Luhring et al 2007]). Os fabricantes de SGBDs comerciais, tais como: DB2, Oracle e SQL Server, também têm procurado investigar novas funcionalidades que possibilitam a manutenção automática das estruturas de índice [Bruno e Chaudhuri 2007a]. Contudo, ainda há muito desconhecimento sobre o momento ideal de criar ou remover um determinado índice e, principalmente, de quando recriá lo. O benefício trazido pela existência de um determinado índice, para uma determinada consulta, é influenciado por dois fatores: a sua seletividade da consulta e o grau de fragmentação do índice. Logo, manter índices fragmentados pode degradar o desempenho da carga de trabalho submetida ao SGBD. Por outro lado, a remoção de um índice fragmentado para sua posterior criação pode gerar um overhead desnecessário [Shasha e Bonnet 2003]. Este trabalho apresenta um mecanismo que possibilita automatizar a recriação de índices fragmentados e analisa em detalhes uma heurística para tal automação. A abordagem proposta executa independentemente de interações com os DBAs. Especificamente, desenvolvemos um conjunto de heurísticas que executam continuamente, detectam a existência de índices fragmentados, e, sempre que necessário, reconstroem estes índices, evitando assim os malefícios causados pela existência de índices fragmentados. A arquitetura concebida neste trabalho foi implementada em um SGBD de código aberto, o PostgreSQL [Postgresql 2009]. Esta implementação teve a sua eficácia comprovada através dos testes que foram realizados. O restante deste artigo está organizado da seguinte maneira: A seção 2 apresenta os trabalhos relacionados. A seção 3 discute o estudo realizado sobre a fragmentação de índices e os resultados dos testes executados que comprovam a necessidade da preocupação com índices fragmentados. Na seção 4 descreve uma proposta de solução para o problema da reconstrução automática de índices. Por fim, a seção 5 conclui este trabalho e aponta direções para futuras pesquisas. 2. Trabalhos Relacionados No contexto da sintonia de índices, foram identificados alguns trabalhos relacionados que se propõe a realizar a sintonia automática de índices em SGBDs, buscando melhorar o desempenho das execuções de consulta através de sugestões de criação ou remoção de índices. Em [Sattler et al 2003], [Sattler et al 2004] propõe se um middleware, situado entre as aplicações e o SGBD DB2, que sugere, de forma automática, a criação de índices. Esta solução baseia se em comandos proprietários do DB2 (Ex.: SET CURRENT EXPLAIN MODE RECOMMEND INDEXES), os quais não existem em outros SGBDs. Além disso, exige se que todas as cláusulas SQL sejam enviadas para o middleware e não mais para o SGBD, o que implica na necessidade de re escrever as aplicações previamente existentes e na impossibilidade de se gerenciar uma carga de trabalho que seja submetida diretamente ao SGBD. 32

3 Os trabalhos propostos em [Salles 2004], [Salles e Lifschitz 2005], [Costa 2005] apresentam um componente de auto sintonia implementado junto ao código do PostgreSQL, que possibilita a criação automática de índices. Utilizou se para tanto configurações de índices hipotéticos, índices existentes apenas na metabase, que podem ser considerados para construção de planos de consulta alternativos. Em [Schnaitter et al 2006] os autores apresentam um protótipo de um framework de auto sintonia denominado COLT (Continuos On Line Tuning), o qual monitora as consultas submetidas ao SGBD e ajusta de forma automática a configuração de índices, levando em consideração a restrição do espaço disponível para estas estruturas. O COLT foi implementado de forma integrada ao PostgreSQL. Em [Luhring et al 2007] os autores apresentam uma abordagem para a sintonia automática de índices que se baseia na utilização de índices hipotéticos e independe de qualquer interação do DBA. Esta abordagem também foi implementada junto ao código do PostgreSQL. Em [Bruno e Chaudhuri 2007a], [Bruno e Chaudhuri 2007b] os autores apresentam uma ferramenta de sintonia automática de índices implementada como uma extensão do Microsoft SQL Server Este novo componente executa continuamente e, reagindo a variações na carga de trabalho ou nas características dos dados, modifica de forma automática o projeto físico do banco de dados. Os algoritmos propostos apresentam baixa sobrecarga e levam em consideração restrições no espaço de armazenamento, o custo da atualização das estruturas de índices causadas pelas operações de update e o custo de criar estruturas físicas temporárias. Contudo, todos estes trabalhos não consideram a possível recriação automática de índices fragmentados. Assim, a abordagem proposta neste artigo estende os trabalhos anteriores realizando não somente a criação e a remoção, mas também a reconstrução (reindex) automática de índices. Como os índices considerados neste trabalho obedecem a organizações em árvore B + (os ponteiros de dados encontram se armazenados somente nos nós folhas da árvore) um grande número de inserções, atualizações ou eliminações de chaves, fatalmente provocará o particionamento de páginas de disco (page splits [Shasha e Bonnet 2003]). Este fato pode causar fragmentação na estrutura, dependendo da localização de onde venham a ser alocadas novas páginas. A Figura 1 apresenta um índice que não sofreu nenhum particionamento de páginas de disco; enquanto que a Figura 2 exibe o mesmo índice após muitas atualizações. Figura 1. Índice não fragmentado. 33

4 Figura 2. Índice fragmentado As setas apresentadas nas Figuras 1 e 2 revelam a ordem na qual o índice será percorrido. Deve se perceber a ausência de múltiplos deslocamentos a posições anteriores em um índice apresentando grau de fragmentação zero. Já um índice fragmentado prejudica as operações de varredura, já que o artefato físico responsável pela leitura pode ser obrigado a realizar muitos deslocamentos físicos. É importante lembrar que a preocupação com a fragmentação está relacionada à varredura do índice e não aos acessos individuais as páginas em disco. Uma solução imediata para esse problema é a completa reconstrução periódica de todos os índices, de preferência em instantes de pouca atividade. Entretanto, tal abordagem traria dois graves inconvenientes: 1) Os grandes bancos de dados podem possuir centenas ou mesmo milhares de índices; Reconstruir todos, por mais quieto que esteja o Sistema, causaria um esforço computacional considerável; 2) Há índices cujas tabelas não sofrem atualizações ou são raramente atualizadas. Nestes casos, a reconstrução não traz benefício algum. Este trabalho apresenta argumentos que atestam a necessidade da recriação periódica de índices fragmentados, para que o desempenho no processamento de consultas sobre as tabelas nas quais foram criados não seja prejudicado. Além disso, propõe se uma abordagem para a identificação e reconstrução automáticas de índices fragmentados. 3. Estudo da Fragmentação de Índices A existência de um índice fragmentado prejudica a execução de consultas que realizam varreduras (ordenação, agrupamento, filtros como intervalos) e apresentam alta seletividade (conjunto de linhas retornadas). Durante a realização dos testes práticos que levaram à confecção deste trabalho, observou se que o otimizador somente utiliza um índice se a seletividade da consulta estiver abaixo de um determinado valor limítrofe. Um índice fragmentado implica em maior consumo de espaço físico e maior duração na execução de consultas com varreduras, pois quanto maior a duração de execução das consultas com baixa velocidade no acesso (E/S) aos dados, maior será o consumo de recursos, aumentando assim o custo de processamento da consulta. Para comprovar estes fatos, realizou se o seguinte experimento: a partir de uma tabela escolhida aleatoriamente e um determinado índice a ela associado, elaborou se uma rotina de carga (com inserções, remoções e atualizações) que resultava na fragmentação deste índice. Em seguida, estando a tabela preenchida, comparou se o tempo de execução de uma consulta antes e depois da reconstrução do índice. Os dados coletados mostram que a reconstrução permite melhoras pontuais em dois aspectos: duração/custo da consulta e o espaço ocupado pelo índice. A seguir, discutimos em detalhes o experimento realizado. 34

5 Considere a tabela Venda, cujo esquema é descrito na Figura 3, inicialmente carregada com tuplas. Elaborou se uma rotina de carga de uma segunda tabela denominada Venda2, a qual possui a mesma estrutura da tabela Venda, com o seguinte roteiro: Coluna Tipo + num integer prodnum integer data qtd valor date integer numeric(10,2) Figura 3. Estrutura da tabela Venda. 1. Estando a tabela Venda2 vazia; 2. Copiam se 20 vezes as tuplas de Venda para a Venda2, porém alterandose o conteúdo do campo num (identificador único da tupla). Cabe observar que, inicialmente, Venda2 encontra se vazia. A quantidade final de tuplas em Venda2 será de 20 x = Cria se um índice, denominado Ind2, sobre o campo num da tabela Venda2. 4. Aumenta se o volume da tabela Venda2 em 7 vezes, realizando inserções entre tuplas que já existam. Ao final da última etapa haverá cinqüenta e seis milhões de tuplas em Venda2. Como o índice é criado com a tabela já contendo de tuplas, a inserção de mais de registros causará grande fragmentação, pois haverá grande incidência de particionamento de páginas de disco. Logo, espera se que consultas que realizem operações de varredura tenham, conseqüentemente, seu desempenho prejudicado Resultados dos testes experimentais Utilizando a tabela Venda2, realizamos uma bateria de testes sobre 3 SGBDs largamente utilizados no mercado: o PostgreSQL, Oracle 9i e MS SQL Server Uma das consultas testadas, cujo desempenho é prejudicado devido ao estado fragmentado do índice Ind2 é apresentada na Figura 4. Os valores foram efetivamente utilizados como referência nos testes com os SGBDs considerados. Para comprovarmos que a primeira consulta (executada antes da reconstrução do índice Ind2) foi executada sobre uma estrutura de índices realmente fragmentada, utilizamos os comandos proprietários de cada SGBD utilizado para consultar o grau de fragmentação do índice Ind2. Por exemplo, no SQL Server utilizou se o comando DBCC SHOWCONTIG. Neste caso, para que um índice apresente uma fragmentação de grau zero, a medida Scan Density deve apresentar um valor próximo a 100%. Pode se observar através da Figura 5 que no teste realizado este valor equivale a 12,5%. Através deste experimento podemos verificar que nos três SGBDs utilizados (PostgreSQL, SQL Server e Oracle), executaram se comandos que mostraram 35

6 resultados numéricos envolvendo os dois fatores afetados pela fragmentação: espaço ocupado pelo índice e duração/custo da consulta. Além disso, podemos observar os malefícios da fragmentação de índices. Logicamente, em casos de volumes de dados ainda maiores, estes problemas teriam um impacto ainda maior sobre o sistema. Apesar de evidenciada pela diferença de tamanhos de um índice antes e depois da reconstrução, os otimizadores ainda não possuem recursos para identificar situações onde o índice apresente altos graus de fragmentação. O ideal é que um índice não seja considerado pelo otimizador, caso exista uma distribuição não compacta de suas páginas do nível folha. select sum(valor) from venda2 where num between 5 and or num between and or num between and or num between and or num between and or num between and or num between and Figura 4. Exemplo de varredura sobre uma tabela com índice fragmentado DBCC SHOWCONTIG scanning 'venda2' table... Table: 'venda2' ( ); index ID: 2, database ID: 8 LEAF level scan performed. Pages Scanned...: Extents Scanned...: Extent Switches...: Avg. Pages per Extent...: Scan Density [Best Count:Actual Count]...: 12.50% [21743:173937] Logical Scan Fragmentation...: 99.22% Extent Scan Fragmentation...: 0.41% Avg. Bytes Free per Page...: Avg. Page Density (full)...: 87.48% DBCC execution completed. If DBCC printed error messages, contact your system administrator. Figura 5. Evidência do estado de fragmentação de um índice no SQL Server. 36

7 A Tabela 1 compara o espaço em disco ocupado pelo índice Ind2, o custo da consulta apresentada na Figura 4 e a duração da mesma consulta em dois momentos distintos: antes e depois da reconstrução do índice Ind2. Tabela 1. Resultados PostgreSQL, SQL Server e Oracle. Resultados PostgreSQL Fator Antes Depois Diferença Espaço 1.231,74 MB 957 MB 22,30% Duração 30s 28s 6,67% Custo ,11% Resultados SQL Server Fator Antes Depois Diferença Espaço 1.366,52 MB 1.193,01 MB 12,70% Duração ms ms 16,16% Custo ,116 4,72% Resultados Oracle Fator Antes Depois Diferença Espaço MB MB 5,47% Duração 4s 3s 25% Custo ,14% 4. Solução por Auto sintonia Global A proposta de solução para evitar a existência de índices fragmentados utiliza uma heurística que possui dois pilares: enumeração de índices candidatos e acompanhamento de índices (hipotéticos ou não), mantendo lhes uma determinada carga de benefícios (ou malefícios), calculada a partir de participações em comandos. Na estratégia utilizada neste trabalho, uma vez detectado que um determinado índice apresenta um benefício acumulado negativo, cujo módulo supere o custo de criação do índice, dispara se a eliminação do mesmo. Ocorre, entretanto, que muitas vezes um índice poderia continuar sendo útil, uma vez que este fosse reconstruído, como no caso do índice estar fragmentado. Neste caso, o índice poderia ter acumulado um benefício negativo pelo fato de estar fragmentado e não pelo fato de não estar sendo utilizado pelas consultas executadas (ou seja, que compõem a carga de trabalho submetida ao SGBD). Desta forma, a Heurística de Reconstrução Automática de Índices (HRAI), proposta neste artigo, analisa casos de eliminação iminente e, caso julgue conveniente, dispara o reindex, isto é, executa a reconstrução automática do índice. A HRAI concebida estabelece regras que permitem decidir se um índice deve ser reconstruído ou eliminado. A decisão quanto à recriação de um determinado índice deve analisar três 37

8 fatores: (i) grau de fragmentação, (ii) o tamanho do índice e (iii) a quantidade de varreduras (scans) executadas sobre o índice. No caso do grau de fragmentação de um índice, este pode ser estimado comparando se a razão em dois momentos: logo após a criação, quando não existe fragmentação, e quando se deseja verificar se é relevante aplicar uma reconstrução, ou simplesmente seu descarte. A razão é calculada da seguinte forma: R = tuplas de uma tabela / quantidade de blocos do ndice Assim, propõe se a seguinte fórmula para cálculo do grau de fragmentação de um índice (Figura 6): G rf = 100 [ (R a / R i ) * 100] Figura 6. Fórmula que obtém o grau de fragmentação de um índice Onde R a representaria a razão atual e R i a razão inicial, gerada logo após a criação do índice. Por exemplo, suponha que se identificou um determinado índice, ir1, criado sobre a tabela Venda (Figura 3) com 879 blocos comportando tuplas (R i = 455,06). Após várias operações, a quantidade de blocos aumentou para em tuplas (R a = 184,27). Desta forma, calcula se G rf como 59,50% No que diz respeito ao fator tamanho, é fato que tabelas ocupando poucos blocos não deveriam ter seus índices cogitados à reconstrução. Para exemplificar, suponhamos que a tabela T1 tenha tuplas e um índice com apenas dois blocos plenamente ocupados (razão tuplas/blocos = 500). Quando ocorrer a inserção da milésima primeira linha, o índice ganhará um terceiro bloco, porém sua razão cairá para 333 (um decréscimo de 33,4%). Apesar de apresentar uma considerável queda em sua razão tuplas/blocos, a reconstrução do índice não proporcionaria uma ocupação com menos de três blocos, ou seja, a reconstrução não traria benefícios quanto à diminuição do número de blocos ocupados pelo índice. Por fim, deve se avaliar a quantidade de varreduras realizadas sobre o índice, pois, consultas que executam operações de varredura sobre um determinado índice terão seu desempenho degradado caso o índice utilizado encontre se fragmentado. Além disso, o fato de um índice ter sido útil em uma consulta onde houve varreduras já faz com que seja um candidato à reconstrução Fator de Preenchimento Uma vez constatada a fragmentação de um índice, causada por sucessivas ocorrências de particionamentos de páginas de disco, caso decida se recriá lo, recomenda se fazê lo deixando uma margem para futuras atualizações. Normalmente, SGBDs possuem mecanismos que permitem dosar quantos bytes podem ser gravados por bloco. A heurística HRAI determina um fator de preenchimento de páginas com base no histórico de operações de varreduras nas quais participou de forma positiva o índice em vias de reconstrução. Como se utilizou PostgreSQL para realizar as implementações, houve a necessidade de estender os comandos create index, reindex index e reindex table para que aceitassem uma nova cláusula, fillfactor, valendo entre 1 e 9. O menor 38

9 valor significa que apenas um décimo de cada página será sendo ocupada, enquanto que o maior sinaliza 90% de ocupação GETSIZE Um índice cuja razão blocos_índice/tuplas_tabela (R) apresente valores distantes daqueles medidos imediatamente após sua criação, pode ser considerado como fragmentado. Por exemplo, dada uma tabela denominada Venda e um índice denominado ix_num definido sobre o atributo num da tabela Venda, pode se descobrir as quantidades de blocos e tuplas, consultando se a metabase do SGBD. A Figura 7 mostra um comando de consulta à metabase do PostgreSQL, o qual revela a quantidades de páginas e tuplas da tabela Venda. Vale ressaltar que assim como em qualquer SGBD, a confiabilidade dos valores da metabase depende da atualização periódica das estatísticas. select relname, reltuples, relpages from pg_class where relname in ('ix_num','venda') ; relname reltuples relpages + + ix_num venda Figura 7. Investigação do tamanho de uma tabela em PostgreSQL. As decisões quanto às utilizações de índices realizadas pelo otimizador de qualquer SGBD são baseadas nas informações que constam na metabase. Caso esta não seja atualizada periodicamente, corre se o risco de acontecerem otimizações errôneas. Para evitar este problema, a implementação da HRAI precisou obter as quantidades reais de tuplas e páginas de tabelas e índices, por meios próprios. Uma forma alternativa de comprovar a quantidade real de páginas e tuplas de uma tabela no PostgreSQL consiste em utilizar uma ferramenta opcional denominada pgstattable. Trata se de uma função que checa todas as páginas da tabela, informando quantidades reais. A Figura 8 mostra um exemplo de chamada à função e seu resultado. select tuple_count, table_number_blocks from pgstattable ('venda'); tuple_count table_number_blocks Figura 8. Exemplo de utilização da função pgstattable. Como não se informam dados sobre índices, foi necessário, com base em pgstattable, desenvolver uma nova função para o PostgreSQL, denominada pgstatindex, que também checa todas as páginas de um dado índice. A Figura 9 mostra um exemplo de chamada à função e seu resultado. 39

10 select tuple_count, table_number_blocks, index_len, index_number_blocks, index_tuple_count from pgstatindex ('venda', 'ix_num'); tuple_count table_number_blocks index_len index_number_blocks index_tuple_coun t Figura 9. Exemplo de utilização da função pgstatindex. A nova função, pgstatindex, serviu de inspiração para o desenvolvimento de um novo comando para o PostgreSQL, denominado getsize. Dado um nome de um índice, o comando checa todas as tuplas da tabela correspondente e conta as páginas do índice. Estes dois dados permitirão calcular as duas razões R i (logo após sua criação) e R a (uma vez detectada a possibilidade de eliminá lo). Com as informações retornadas por getsize pode se derivar dois dos três fatores necessários à decisão de reconstruir, ou não, um índice. Fica faltando apenas a quantidade de varreduras já executadas sobre o índice, valor que será informado pelo Agente de Benefícios, como detalhado na próxima seção Heurística de Reconstrução Automática de Índices Diante da carência de recomendações quanto à reconstrução de índices fragmentados, foi necessário desenvolver uma heurística própria que fosse capaz de reconstruir índices fragmentados. Assim como em [Salles 2004], a heurística será executada simultaneamente com outros serviços providos pelo SGBD, fazendo com que a recriação seja realizada de forma automática e online. Para apresentar a heurística, devem se definir cinco fatores: T t : tamanho em tuplas de uma determinada tabela. T i : tamanho em blocos de um determinado índice. R: razão entre T t e T i. G rf : grau de fragmentação de um determinado índice, obtido através da fórmula descrita na Figura 6. V: número de varreduras nas quais o índice participou desde sua criação. A heurística é composta pelas funcionalidades: i. Novo Índice: deve se armazenar o nome de um índice recém criado; ii. Solicitação de Tamanho: solicita se ao SGBD T i e T t referentes a um determinado índice; iii. Cálculo de Razão: obtém se R com base em T i e T t. iv. Solicitação de Varreduras: pede se V de um dado índice; 40

11 v. Cálculo de Grau de Fragmentação: obtém se G rf com base em R i e R a ; vi. Reconstrução: caso G rf, V e T i atendam a determinados limites (thresholds), efetua se a reconstrução. A solicitação de tamanho (segunda funcionalidade) e o cálculo da razão (terceira) ocorrem para cada índice armazenado em dois momentos: (1) logo após a criação (R i ) e (2) previamente à decisão de reconstruir ou não (R a ). A solicitação tem por conseqüência a execução do comando getsize pelo SGBD. Antes da reconstrução, deve se calcular o novo fator de preenchimento segundo a equação apresentada na Figura 10. Quanto mais varreduras um índice fragmentado tiver tido, menor será o seu fillfactor objetivando reduzir a incidência de particionamento de páginas de disco. Entretanto, deve se ressaltar que, ao reduzir o fillfactor, diminui se a quantidade de informações por bloco, levando à necessidade de maior alocação de páginas. F = 10 [ (V + 10) div 10] Figura 10. Equação para obtenção do fator de preenchimento. Por exemplo, supondo que um determinado índice tenha sofrido 34 varreduras, seu novo fator de preenchimento é: F = 10 [ ( ) div 10] F = 10 (44 div 10) F = 6 Portanto, o índice terá suas páginas em nível folha preenchidas até 60%. Esta heurística possui uma limitação que poderia ser otimizada para que ela decida por uma reconstrução do índice antes de ele ser eliminado, ou seja, não sendo necessário manter um índice fragmentado até a decisão de eliminá lo ou recriá lo, usando informações da metabase sobre o particionamento de páginas Estrutura Funcional O componente de software responsável pela implementação da heurística HRAI denomina se Agente Desfragmentador. Sua construção seguiu a mesma linha de estudos utilizada em [Salles 2004] e [Milanés 2004], onde foram adaptadas propostas presentes em [Kendall 1999]. O Agente Desfragmentador interage com o Agente de Benefícios, cuja implementação estendeu o trabalho proposto em [Salles 2004]. Enquanto o Agente de Benefícios cria e destrói índices, o Agente Desfragmentador preocupa se com as reconstruções Implementação no PostgreSQL Como não foi possível determinar valores ótimos para os fatores G rf, V e T i, preferiu se deixá los como parâmetros de configuração para serem ajustados livremente pelo DBA. No caso específico do PostgreSQL, deve se alterar o arquivo de inicialização denominado postgresql.conf. Nele aparecem as configurações necessárias ao 41

12 funcionamento do PostgreSQL, tais como área em memória destinada para dados, nível de depuração do ambiente, padrões de comunicação entre clientes e servidor, entre outros. O parâmetro default_fillfactor pode ser alterado a qualquer momento. Por exemplo, após emitir o comando: Set default_fillfactor = 7; Todo índice criado (create index) ou recriado (reindex index) que não utilize explicitamente a cláusula fillfactor, assumirá 70% de preenchimento de páginas Estrutura dos Testes Experimentais A bateria de testes seguiu utilizando como referência uma única tabela da base de dados. A tabela Venda com tuplas. Procura se observar o comportamento dos dois agentes, bem como a criação, destruição e recriação de índices. Durante os testes utilizou se o comando evaluate, cuja sintaxe aparece a seguir: evaluate <complemento> O complemento, que pode ser qualquer uma das seguintes operações: select, update, delete ou insert, é repassado ao Agente de Benefícios. Este comando permite o repasse de uma operação ao agente de forma a eliminar a fase de execução, sendo possível a avaliação de todas as operações sem as etapas mais custosas; assim, por conta da utilização do comando evaluate, se ganha em agilidade, já que não se perde tempo com longas execuções. A Tabela 2 revela uma seqüência de comandos onde verificam se todas as interações possíveis entre os agentes. Tabela 2. Resumo da bateria de testes Instante 1 (8 execuç es) evaluate select prodnum, valor, data, qtd from venda where num = 10000; Criado índice ri_venda_0 com benefícios acumulados de ,9 e Bônus (benefício acumulado dividido pela quantidade de vezes que o índice hipotético teria sido utilizado, caso fosse um índice real) igual a 8.143,99. Durante as sete execuções prévias, existiu um índice hipotético denominado hi_venda_0. Instante 2 (1 execução) evaluate select prodnum, valor, data, qtd from venda where num=10000; Agente de Benefícios (AB) informa Agente Desfragmentador (AD) que um índice criado foi usado pela primeira vez; AD dispara getsize; B i = 879 T t = Instante 3 (12 execuç es) evaluate select prodnum, valor, data, qtd from venda where num between and 10020; 42

13 Como trata se de uma consulta com varreduras, AB atualiza o atributo scans de ri_venda_0 para 12. Instante 4 (1 execução) update venda set num = num ; Como trata se de uma atualização, AB decrementa os benefícios acumulados de ri_venda_0. Valor corrente: Instante 5 (21 execuç es) evaluate update venda set num = num ; Benefícios acumulados de ri_venda_0: ,30. Custo de Eliminação: ,90 Instante 6 (1 execução) evaluate update venda set num = num ; Mesmo que ocorra um comando que afete negativamente o índice, o Agente de Benefícios somente o destruirá uma vez recebida a liberação. AB notifica AD sobre a intenção de eliminar um índice; AB informa Varreduras a AD (12). AD dispara getsize; AD notifica AB sobre a proibição de destruir um índice; B a = T a = R i = 455,06 R a = 190,74; G rf = 58,08 Instante 7 Reconstruído índice ri_venda_0 com fillfactor 8 (Figura 10) AD notifica AB que um determinado índice foi reconstruído. Instante 8 (1 execução) Select table_number_blocks, index_len, index_number_blocks from pgstatindex ('venda', 'ri_venda_0'); Informada a nova quantidade de páginas de ri_venda_0 (991), um pouco superior às 879 iniciais, devido ao fillfactor menor (8 ao invés de 9). Instante 9 (1 execução) evaluate select prodnum, valor, data, qtd from venda where num between and 10020; Benefícios acumulados de ri_venda_0: ,90 Instante 10 (9 execuç es) evaluate update venda set num = num ; 43

14 Benefícios acumulados de ri_venda_0: ,30 Custo de Eliminação: ,90. AB notifica AD sobre a intenção de eliminar um índice; AB informa Varreduras a AD (12). AD dispara getsize; AD notifica AB sobre a proibição de destruir um índice; B i = 991 T i = R i = 455,06 R a = 403,63; G rf = 11,03 Índice ri_venda_0 destruído; Instante 11 Como G rf foi inferior ao parâmetro dia_ratio(50), AD notifica AB que um determinado índice pode ser destruído. AB cria Índice hipotético hi_venda_0 com benefícios acumulados iguais a ,10 A realização da bateria de testes resumida na Tabela 2 permite afirmar com segurança que a implementação da heurística obteve sucesso. Devido à limitações de espaço, deixamos para explorar em trabalhos futuros situações mais complexas, tais como cargas de trabalho derivadas do benchmark TPC C para confirmar a eficácia da HRAI. 5. Conclus es Neste trabalho, apresentamos um mecanismo que possibilita automatizar a recriação de índices fragmentados. A abordagem proposta executa de forma contínua e automática, ou seja, independentemente de interações com seres humanos. Especificamente, desenvolvemos um conjunto de heurísticas que executam continuamente, detectam a existência de índices fragmentados, e, sempre que necessário, reconstroem estes índices, evitando assim os malefícios causados pela existência de índices fragmentados. A arquitetura concebida neste trabalho foi implementada em um SGBD de código aberto, o PostgreSQL. Como próximos passos pretende se avaliar a possibilidade de pré criação de índices envolvidos com chaves primárias e estrangeiras. Além disso, a HRAI poderia decidir a reconstrução antes da eliminação iminente, isto é, não seria necessário manter um índice fragmentado até o momento em que se decida eliminá lo ou recriá lo. Uma opção interessante seria criar um conjunto de alertas nos quais o Agente poderia emitir avisos informando que um determinado índice atingiu níveis preocupantes de fragmentação. Estes níveis poderiam ser pré configurados utilizando thresholds. Referências Bruno, N. e Chaudhuri, S. (2005) Automatic physical database tuning: a relaxationbased approach, In: Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, , Baltimore. Bruno, N. e Chaudhuri, S. (2007a) An Online Approach to Physical Design Tuning, In: Proceedings of the ICDE Conference (ICDE07). Bruno, N. e Chaudhuri, S. (2007b) Online autoadmin: (physical design tuning), In: Proceedings of the 2007 ACM SIGMOD International Conference on Management of Data (SIGMOD07), , Beijing, China. 44

15 Costa, R. L. C., Lifschitz, S., Noronha, M. e Salles, M. V. (2005) Implementation of an Agent Architecture for Automated Index Tuning, In: Proceedings of the ICDE Workshops. Kendall, E., Krishna, P., Pathak, C. e Suresh, C. (1999) A Framework for Agent Systems, In: Implementing Application Frameworks Object Oriented Frameworks at Work, Lifschitz, S. e Morelli, E. T. (2006) Towards Autonomic Index Maintenance, In: Proceedings of the Brazilian Symposium on Database. Luhring, M., Sattler, K., Schmidt, K. e Schallehn, E. (2007) Autonomous Management of Soft Indexes, In: Proceedings of the 23rd IEEE International Conference on Data Engineering Workshop (ICDE'07). Milanés, A. (2004) Uma arquitetura para auto sintonia global de SGBDs usando agentes, Dissertação de mestrado, Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro (PUC Rio). Postgresql. (2009) PostgreSQL: The world s most advanced open source database, disponível em: acessado em maio de Salles, M. V. (2004) Criação Autônoma de Índices em Bancos de Dados, Dissertação de mestrado, Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro (PUC Rio). Salles, M. V. e Lifschitz, S. (2005) Autonomic Index Management, In: Proceedings of the International Conference on Autonomic Computing (ICAC). Sattler, K., Geist, I. e Schallehn, E. (2003) QUIET: Continuous query driven index tuning, In: Proceedings of the 29th international conference on Very large data bases (VLDB03), , Berlin, Germany. Sattler, K., Schallehn, E., Geist, I. (2004) Autonomous Query Driven Index Tuning,In: Proceedings of the International Database Engineering and Applications Symposium (IDEAS'04), , IEEE Computer Society. Schnaitter, K., Abiteboul, S., Milo, T. e Polyzotis, N. (2006) COLT: continuous online tuning, In: Proceedings of the ACM SIGMOD International Conference on Management of Data (SIGMOD06), , Chicago, IL, USA. Shasha, D., Bonnet, P. (2003) Database Tuning, Morgan Kaufmann Publishers. Zilio, D., Rao, J., Lightstone, S., Lohman, G., Storm, A., Garcia Arellano, C. e Fadden, S. (2004) Db2 Design Advisor: Integrated Automatic Physical Database Design, In: Proceedings of the International Conference on Very Large Databases (VLDB),

Reindexação Automática em SGBDs Relacionais

Reindexação Automática em SGBDs Relacionais Reindexação Automática em SGBDs Relacionais Eduardo Morelli, José Maria Monteiro, Ana Carolina Almeida, Sérgio Lifschitz Departamento de Informática PUC-Rio {emorelli,monteiro,abrito,sergio}@inf.puc-rio.br

Leia mais

2 Auto-sintonia de Bancos de Dados e Agentes de Software

2 Auto-sintonia de Bancos de Dados e Agentes de Software 2 Auto-sintonia de Bancos de Dados e Agentes de Software A uso da abordagem de agentes de software 1 pode trazer benefícios a áreas de aplicação em que é necessário construir sistemas autônomos, ou seja,

Leia mais

Utilização de Redes Neurais na Manutenção Pró-Ativa de Índices

Utilização de Redes Neurais na Manutenção Pró-Ativa de Índices Utilização de Redes Neurais na Manutenção Pró-Ativa de Índices André Medeiros 1,2, Aristênio Saraiva 2, Gustavo Campos 2, José Maria Monteiro 3 1 IBM - Brasil agbm@br.ibm.com 2 Departamento de Computação,

Leia mais

Pontifícia Universidade Católica DO RIO DE JANEIRO

Pontifícia Universidade Católica DO RIO DE JANEIRO Pontifícia Universidade Católica DO RIO DE JANEIRO Eduardo Maria Terra Morelli Recriação Automática de Índices em um SGBD Relacional Dissertação de Mestrado Dissertação apresentada ao Programa de Pósgraduação

Leia mais

Arquitetura para Seleção de Índice no SGBD PostgreSQL, utilizando abordagem baseada em custos do Otimizador

Arquitetura para Seleção de Índice no SGBD PostgreSQL, utilizando abordagem baseada em custos do Otimizador ISSN: 1981-8882 Arquitetura para Seleção de Índice no SGBD PostgreSQL, utilizando abordagem baseada em custos do Otimizador Wendel Góes Pedrozo 1, Maria Salete Marcom Gomes Vaz 1,2 1 Departamento de Informática

Leia mais

4 Implementação e Resultados Experimentais

4 Implementação e Resultados Experimentais 4 Implementação e Resultados Experimentais Com o objetivo de fazer a criação automática de visões materializadas, ou seja, prover uma solução on-the-fly para o problema de seleção de visões materializadas,

Leia mais

Uma Abordagem Não-Intrusiva para Sintonia Automática de Consultas SQL

Uma Abordagem Não-Intrusiva para Sintonia Automática de Consultas SQL Uma Abordagem Não-Intrusiva para Sintonia Automática de Consultas SQL Arlino H. Magalhães de Araújo 1, José Maria Monteiro 1, José Antônio F. de Macêdo 1 1 Departamento de Computação Universidade Federal

Leia mais

5 Trabalhos Relacionados

5 Trabalhos Relacionados 5 Trabalhos Relacionados Existem ferramentas (por exemplo, (Morelli et al, 2012), (Bruno et al, 2011), (Rangaswamy et al, 2011), (Monteiro et al, 2012), (Elghandour, 2010) e (Goasdoué et al, 2011)) e abordagens

Leia mais

Tuning e Self-Tuning de Bancos de Dados

Tuning e Self-Tuning de Bancos de Dados Tuning e Self-Tuning de Bancos de Dados Dr. José Maria Monteiro Universidade de Fortaleza (UNIFOR) monteiro@unifor.br Secretaria da Fazenda do Estado do Ceará Sefaz-CE monteiro@sefaz.ce.gov.br 1 Self-Tuning

Leia mais

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Consistem num conjunto de apontadores para instâncias especificas de cada relação. Mecanismo usado para mais fácil e rapidamente aceder à informação existente numa base de dados. Bases de Dados de elevadas dimensões. Consistem num conjunto de apontadores para instâncias especificas de

Leia mais

Marcos Antonio Vaz Salles. em Bancos de Dados. Mestrado em Informática DEPARTAMENTO DE INFORMÁTICA

Marcos Antonio Vaz Salles. em Bancos de Dados. Mestrado em Informática DEPARTAMENTO DE INFORMÁTICA Marcos Antonio Vaz Salles Criação Autônoma de Índices em Bancos de Dados DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós graduação em Mestrado em Informática Rio de Janeiro Julho de

Leia mais

Administração de Banco de Dados

Administração de Banco de Dados Administração de Banco de Dados Adriano J. Holanda http://holanda.xyz 28/8/2015 Índices Para os testes com os índices criaremos uma tabela chamada tteste com o comando teste=> CREATE TABLE tteste (id int4);

Leia mais

Unidade 5 Armazenamento e Indexação

Unidade 5 Armazenamento e Indexação Unidade 5 Armazenamento e Indexação Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José

Leia mais

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos

Leia mais

Uma Abordagem Não-Intrusiva para a Manutenção Automática do Projeto Físico de Bancos de Dados

Uma Abordagem Não-Intrusiva para a Manutenção Automática do Projeto Físico de Bancos de Dados José Maria da Silva Monteiro Filho Uma Abordagem Não-Intrusiva para a Manutenção Automática do Projeto Físico de Bancos de Dados Tese de Doutorado Tese apresentada como requisito parcial para obtenção

Leia mais

Sintonia fina baseada em ontologia: o caso de visões materializadas

Sintonia fina baseada em ontologia: o caso de visões materializadas paper:11 Sintonia fina baseada em ontologia: o caso de visões materializadas Aluno - Rafael Pereira de Oliveira 1 Orientador - Sérgio Lifschitz 1 1 Departamento de Informática Programa de Pós-graduação

Leia mais

Administração de Banco de Dados

Administração de Banco de Dados Administração de Banco de Dados Professora conteudista: Cida Atum Sumário Administração de Banco de Dados Unidade I 1 INTRODUÇÃO A BANCO DE DADOS...1 1.1 Histórico...1 1.2 Definições...2 1.3 Importância

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 06 AT06 Índices 1 Indice INTRODUÇÃO... 3 CLUSTERED INDICES... 4 NONCLUSTERED INDICES... 5 TRANSACT-SQL AND INDICES... 6 COMPOSITE INDEX... 8 ALTERING INDICES...

Leia mais

Tuning em queries em Banco de Dados

Tuning em queries em Banco de Dados Tuning em queries em Banco de Dados Alison K. L. Leite 1, Izabella C. A. M. S. Bosco 1, Juliana M. Massoni 1, Patrícia B. Ribeiro 1 1 Curso de Tecnologia em Banco de Dados - Faculdade de Tecnologia de

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados O modelo relacional Marta Mattoso Sumário Introdução Motivação Serviços de um SGBD O Modelo Relacional As aplicações não convencionais O Modelo Orientado a Objetos Considerações

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

Boas Práticas para Otimização de Consultas a Bancos de. Dados usando SQL Server 2005

Boas Práticas para Otimização de Consultas a Bancos de. Dados usando SQL Server 2005 Boas Práticas para Otimização de Consultas a Bancos de Dados usando SQL Server 2005 LEONARDO FERREIRA SOARES* leo.fsoares@gmail.com IREMAR NUNES DE LIMA** iremar.prof@newtonpaiva.br RESUMO Este trabalho

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 6.1 ARQUIVOS E REGISTROS De um modo geral os dados estão organizados em arquivos. Define-se arquivo como um conjunto de informações referentes aos elementos

Leia mais

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli Banco de Dados I 2007 Módulo V: Indexação em Banco de Dados (Aulas 4) Clodis Boscarioli Agenda: Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; Dicas Práticas. Índice em SQL Sintaxe:

Leia mais

Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados.

Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados. Histórico Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados. Sistemas Integrados: racionalização de processos, manutenção dos

Leia mais

Banco de Dados. Conceitos e Arquitetura de Sistemas de Banco de Dados. Profa. Flávia Cristina Bernardini

Banco de Dados. Conceitos e Arquitetura de Sistemas de Banco de Dados. Profa. Flávia Cristina Bernardini Banco de Dados Conceitos e Arquitetura de Sistemas de Banco de Dados Profa. Flávia Cristina Bernardini Relembrando... Vantagens da Utilização de SGBD Redundância controlada Consistência dos dados armazenados

Leia mais

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction Bases de Dados II 6638: BSc in Information Systems and Technologies Cap. 1 Module Introduction Objectivos O propósito e a origem da arquitectura de base de dados a três níveis. O conteúdo dos níveis externo,

Leia mais

ARQUITETURA PARA SELEÇÃO DE ÍNDICES EM BANCO DE DADOS RELACIONAIS, UTILIZANDO ABORDAGEM BASEADA EM CUSTOS DO OTIMIZADOR

ARQUITETURA PARA SELEÇÃO DE ÍNDICES EM BANCO DE DADOS RELACIONAIS, UTILIZANDO ABORDAGEM BASEADA EM CUSTOS DO OTIMIZADOR WENDEL GÓES PEDROZO ARQUITETURA PARA SELEÇÃO DE ÍNDICES EM BANCO DE DADOS RELACIONAIS, UTILIZANDO ABORDAGEM BASEADA EM CUSTOS DO OTIMIZADOR Dissertação apresentada como requisito à obtenção do grau de

Leia mais

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis.

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis. UNISA Universidade de Santo Amaro http://www.unisa.br Material de Estudo Módulo I: Básico Banco de dados SQL Server http://www.unisa-sis.info Junho/2010 Objetivo do Workshop Compartilhar e apresentar

Leia mais

PostgreSQL Performance

PostgreSQL Performance PostgreSQL Performance André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) PostgreSQL Performance February 24, 2012 1 / 45 Sumário 1 Armazenamento 2 Índices

Leia mais

BANCO DE DADOS CONCEITOS BÁSICOS

BANCO DE DADOS CONCEITOS BÁSICOS Universidade Federal da Paraíba UFPB Centro de Energias Alternativas e Renováveis - CEAR Departamento de Eng. Elétrica DEE BANCO DE DADOS CONCEITOS BÁSICOS Isaac Maia Pessoa Introdução O que é um BD? Operações

Leia mais

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI Fundamentos de Banco de Dados Aula 01 Introdução aos Sistemas de Bancos de Dados Introdução aos Sistemas de BD Objetivo Apresentar

Leia mais

Aula 2 Arquitetura Oracle

Aula 2 Arquitetura Oracle Aula 2 Arquitetura Oracle Instancia Oracle Uma instância Oracle é composta de estruturas de memória e processos. Sua existência é temporária na memória RAM e nas CPUs. Quando você desliga a instância em

Leia mais

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

pggrid: uma Implementação de Fragmentação de Dados para o PostgreSQL

pggrid: uma Implementação de Fragmentação de Dados para o PostgreSQL pggrid: uma Implementação de Fragmentação de Dados para o PostgreSQL Gustavo A. Tonini, Frank Siqueira Departamento de Informática e Estatística Universidade Federal de Santa Catarina Florianópolis SC

Leia mais

PROVA ESPECÍFICA Cargo 04

PROVA ESPECÍFICA Cargo 04 10 PROVA ESPECÍFICA Cargo 04 QUESTÃO 21 Analise as seguintes afirmativas: I. Uma das funções de um DBA é gerenciar os mecanismos de segurança de acesso aos dados armazenados em um SGBD (Sistema Gerenciador

Leia mais

Uma Ferramenta para a Sintonia de Instruções SQL *

Uma Ferramenta para a Sintonia de Instruções SQL * Uma Ferramenta para a Sintonia de Instruções SQL * Arlino H. M. de Araújo 1,2, José Maria Monteiro 2, José A. F. de Macêdo 2, Júlio A. Tavares 3, Ângelo Brayner 3 1 Universidade Federal do Piauí (UFPI)

Leia mais

Prof. Carlos Majer Aplicações Corporativas UNICID

Prof. Carlos Majer Aplicações Corporativas UNICID Este material pertence a Carlos A. Majer, Professor da Unidade Curricular: Aplicações Corporativas da Universidade Cidade de São Paulo UNICID Licença de Uso Este trabalho está licenciado sob uma Licença

Leia mais

TEMPTOOL UMA FERRAMENTA PARA A MODELAGEM TEMPORAL DOS DADOS

TEMPTOOL UMA FERRAMENTA PARA A MODELAGEM TEMPORAL DOS DADOS TEMPTOOL UMA FERRAMENTA PARA A MODELAGEM TEMPORAL DOS DADOS Eugênio de O. Simonetto 1, Cristiano R. Moreira, Duncan D. A. Ruiz 2, Luciano C. Ost 1, Glauco B.V.Santos 1 RESUMO O trabalho apresenta uma ferramenta

Leia mais

14/09/2008. Curso Superior de Tecnologia em Bando de Dados Disciplina: Projeto de Banco de Dados Relacional II Prof.: Fernando Hadad Zaidan

14/09/2008. Curso Superior de Tecnologia em Bando de Dados Disciplina: Projeto de Banco de Dados Relacional II Prof.: Fernando Hadad Zaidan Faculdade INED Curso Superior de Tecnologia em Bando de Dados Disciplina: Projeto de Banco de Dados Relacional II Prof.: Fernando Hadad Zaidan Unidade 2.2 1 2 Material usado na montagem dos Slides Bibliografia

Leia mais

NOME SEXO CPF NASCIMENTO SALARIO

NOME SEXO CPF NASCIMENTO SALARIO Tutorial SQL Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2973 Para começar Os Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDr) são o principal mecanismo de suporte ao armazenamento

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

Prof. Daniela Barreiro Claro

Prof. Daniela Barreiro Claro Prof. Daniela Barreiro Claro SQL, SQL3 e OQL são linguagens declarativas O SGBD deve processar e otimizar estas consultas antes delas serem efetivamente executadas Uma consulta possui muitas estratégias

Leia mais

Self ou Auto-tuning?

Self ou Auto-tuning? Self-Tuning e outros Self-* em SGBDs Tutorial SBBD 2009 Sérgio Lifschitz Departamento de Informática Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio) - Brasil sergio@inf.puc-rio.br Self ou

Leia mais

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 1 1- Bancos de dados compreendem desde agendas telefônicas até sistemas computadorizados. (Sim) 2- Só podemos instalar o SQL Server Express se tivermos

Leia mais

Novidades Oracle 11g. Rio Grande Energia - RGE

Novidades Oracle 11g. Rio Grande Energia - RGE Novidades Oracle 11g Daniel Güths Rio Grande Energia - RGE 1 Agenda Oracle Database 11g new features SQL e PL/SQL new features Performance e gerenciamento de recursos Gerenciamento de mudanças Gerenciamento

Leia mais

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance.

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance. Atualização de Estatísticas Um objeto de estatística pode ser atualizado manualmente pelo usuário, através dos comandos SP_UPDATESTATS e/ou UPDATE STATISTICS. Enquanto que a procedure SP_UPDATESTATS atualiza

Leia mais

!! Conrado Carneiro Bicalho!!!!!

!! Conrado Carneiro Bicalho!!!!! Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM Conrado Carneiro Bicalho Bancos de Dados em Dispositivos Móveis Ouro Preto

Leia mais

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados 1. Conceitos Básicos No contexto de sistemas de banco de dados as palavras dado e informação possuem o mesmo significado, representando uma

Leia mais

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita: SQL Tópicos Especiais Modelagem de Dados Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino de Ciências

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

ESTRATÉGIAS DE OTIMIZAÇÃO NO SGBD MICROSOFT SQL SERVER 2008 R2 IREMAR NUNES DE LIMA 2

ESTRATÉGIAS DE OTIMIZAÇÃO NO SGBD MICROSOFT SQL SERVER 2008 R2 IREMAR NUNES DE LIMA 2 ESTRATÉGIAS DE OTIMIZAÇÃO NO SGBD MICROSOFT SQL SERVER 2008 R2 RAMON FELIPE MOREIRA DIAS DE SOUZA 1 IREMAR NUNES DE LIMA 2 Resumo: Este artigo identifica e discute diversas estratégias que podem ser utilizadas

Leia mais

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão SISTEMAS DE BANCO DE DADOS Prof. Adriano Pereira Maranhão 1 REVISÃO BANCO DE DADOS I O que é banco de dados? Ou seja afinal o que é um SGBD? REVISÃO BD I REVISÃO DE BD I Um Sistema de Gerenciamento de

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados LINGUAGEM SQL Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características

Leia mais

Banco de Dados Oracle. Faculdade Pernambucana - FAPE

Banco de Dados Oracle. Faculdade Pernambucana - FAPE Faculdade Pernambucana - FAPE Visão Geral dos Componentes Principais da Arquitetura Oracle Servidor Oracle É o nome que a Oracle deu ao seu SGBD. Ele consiste de uma Instância e um Banco de Dados Oracle.

Leia mais

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida UFCD 787 Administração de base de dados Elsa Marisa S. Almeida 1 Objectivos Replicação de base de dados Gestão de transacções Cópias de segurança Importação e exportação de dados Elsa Marisa S. Almeida

Leia mais

Treinamento PostgreSQL - Aula 01

Treinamento PostgreSQL - Aula 01 Treinamento PostgreSQL - Aula 01 Eduardo Ferreira dos Santos SparkGroup Treinamento e Capacitação em Tecnologia eduardo.edusantos@gmail.com eduardosan.com 27 de Maio de 2013 Eduardo Ferreira dos Santos

Leia mais

Bancos de Dados Distribuídos. Filipe Gomes Pinto Guilherme Marquesini Reis Ribeiro Matheus Leônidas Silva Pedro Duarte

Bancos de Dados Distribuídos. Filipe Gomes Pinto Guilherme Marquesini Reis Ribeiro Matheus Leônidas Silva Pedro Duarte Bancos de Dados Distribuídos Filipe Gomes Pinto Guilherme Marquesini Reis Ribeiro Matheus Leônidas Silva Pedro Duarte Conceitos Sistema distribuído. Banco de dados distribuído (BDD). Coleção de multiplos

Leia mais

SQL DML. Frederico D. Bortoloti freddb@ltc.ufes.br

SQL DML. Frederico D. Bortoloti freddb@ltc.ufes.br Banco de Dados I SQL DML Frederico D. Bortoloti freddb@ltc.ufes.br SQL - DML Os exemplos da aula serão elaborados para o esquema de dados a seguir: Empregado(matricula, nome, endereco, salario, supervisor,

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com SQL Prof. Márcio Bueno {bd2tarde,bd2noite}@marciobueno.com Material dos professores Ana Carolina Salgado, Fernando Foncesa e Valéria Times (CIn/UFPE) SQL SQL - Structured Query Language Linguagem de Consulta

Leia mais

Laboratório de Banco de Dados II

Laboratório de Banco de Dados II Laboratório de Banco de Dados II Esquema de um banco de dados relacional Em aulas anteriores, vocês implantaram um projeto físico de banco de dados com todos os seus elementos, inclusive tratando do projeto

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

GBD. Introdução PROF. ANDREZA S. AREÃO

GBD. Introdução PROF. ANDREZA S. AREÃO GBD Introdução PROF. ANDREZA S. AREÃO Sistema de arquivos X Sistemas de Banco de Dados Sistema de arquivos Sistema de Banco de Dados Aplicativos Dados (arquivos) Aplicativos SGBD Dados (arquivos) O acesso/gerenciamento

Leia mais

INTRODUÇÃO E CONCEITOS BÁSICOS. Prof. Ronaldo R. Goldschmidt

INTRODUÇÃO E CONCEITOS BÁSICOS. Prof. Ronaldo R. Goldschmidt INTRODUÇÃO E CONCEITOS BÁSICOS Prof. Ronaldo R. Goldschmidt Hierarquia Dado - Informação - Conhecimento: Dados são fatos com significado implícito. Podem ser armazenados. Dados Processamento Informação

Leia mais

Integridade dos Dados

Integridade dos Dados 1 Integridade dos Dados Integridade dos Dados Melissa Lemos melissa@inf.puc-rio.br A integridade dos dados é feita através de restrições, que são condições obrigatórias impostas pelo modelo. Restrições

Leia mais

O que são Bancos de Dados?

O que são Bancos de Dados? SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Implementação de Aspectos Temporais em SGBDs Livres

Implementação de Aspectos Temporais em SGBDs Livres Implementação de Aspectos Temporais em SGBDs Livres Eugênio de Oliveira Simonetto Curso de Sistemas de Informação Centro Universitário Franciscano (UNIFRA) Andradas, 1614 Centro - 97015-032 Santa Maria

Leia mais

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

AUDITORIA EM BANCO DE DADOS COM UTILIZAÇÃO DE REGRAS

AUDITORIA EM BANCO DE DADOS COM UTILIZAÇÃO DE REGRAS REVISTA DE CIÊNCIAS EXATAS E TECNOLOGIA AUDITORIA EM BANCO DE DADOS COM UTILIZAÇÃO DE REGRAS Eder Pazinatto Faculdade Anhanguera de Passo Fundo RESUMO: A busca por mecanismos que implementam segurança

Leia mais

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org Conectando Bancos de Dados Microsoft Access no BrOffice.org Base fornecido pelo Projeto de Documentação do BrOffice.org Índice 1 Introdução...2 1.1 Versão... 2 1.2 Licenciamento...2 1.3 Mensagem do Projeto

Leia mais

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 Banco de Dados Fundamentos de SQL Structured Query Language Aula2 Apresentado por: Robson do Nascimento Fidalgo rdnf@cin.ufpe.br IF685

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

Arquitetura de Computadores. Sistemas Operacionais IV

Arquitetura de Computadores. Sistemas Operacionais IV Arquitetura de Computadores Sistemas Operacionais IV Introdução Multiprogramação implica em manter-se vários processos na memória. Memória necessita ser alocada de forma eficiente para permitir o máximo

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Descoberta de Domínio Conceitual de Páginas Web

Descoberta de Domínio Conceitual de Páginas Web paper:25 Descoberta de Domínio Conceitual de Páginas Web Aluno: Gleidson Antônio Cardoso da Silva gleidson.silva@posgrad.ufsc.br Orientadora: Carina Friedrich Dorneles dorneles@inf.ufsc.br Nível: Mestrado

Leia mais

INF220 - Banco de Dados I

INF220 - Banco de Dados I Banco de Dados - Introdução Bibliografia INF220 - Banco de Dados I Prof. Jugurta Lisboa Filho Departamento de Informática - UFV Notas de Aula (jugurta@dpi.ufv.br) ELMASRI, R; NAVATHE, S. Fundamentals of

Leia mais

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22 Sumário Agradecimentos... 19 Sobre o autor... 20 Prefácio... 21 Capítulo 1 Bem-vindo ao MySQL... 22 1.1 O que é o MySQL?...22 1.1.1 História do MySQL...23 1.1.2 Licença de uso...23 1.2 Utilizações recomendadas...24

Leia mais

Junções e Índices em Tabelas

Junções e Índices em Tabelas Junções e Índices em Tabelas Prof. Fernanda Baião fernanda.baiao@uniriotec.com.br SGBD Considerados MySQL (http://www.mysql.org) SGBD gratuito e simples, sem muitos recursos avançados Fácil de instalar

Leia mais

Uma abordagem prática de tuning em banco de dados, usando PostgreSQL

Uma abordagem prática de tuning em banco de dados, usando PostgreSQL Uma abordagem prática de tuning em banco de dados, usando PostgreSQL Marcelo Josué Telles Universidade Federal do Rio Grande do Sul Instituto de Informática Caixa Postal 15.064 91.501-970 Porto Alegre

Leia mais

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos Objetivos: Criar restrições para atributos, chaves primárias e estrangeiras; Explorar consultas SQL com uso de

Leia mais

Evolução. Tópicos. Bancos de Dados - Introdução. Melissa Lemos. Evolução dos Sistemas de Informação Esquemas Modelos. Características de SGBDs

Evolução. Tópicos. Bancos de Dados - Introdução. Melissa Lemos. Evolução dos Sistemas de Informação Esquemas Modelos. Características de SGBDs 1 Bancos de Dados - Introdução Melissa Lemos melissa@inf.puc-rio.br Tópicos Evolução dos Sistemas de Informação Esquemas Modelos Conceitual Lógico Características de SGBDs 2 Evolução tempo Programas e

Leia mais

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Banco de Dados Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Roteiro Mapeamento de objetos para modelo relacional Estratégias de persistência Persistência JDBC Mapeando Objetos para o Modelo Relacional

Leia mais

Estatística, monitoramento e diagnóstico através do catálogo do PostgreSQL

Estatística, monitoramento e diagnóstico através do catálogo do PostgreSQL Estatística, monitoramento e diagnóstico através do catálogo do PostgreSQL O trabalho Estatística, monitoramento e diagnóstico através do catálogo do PostgreSQL de Fabiano Machado Dias e Eduardo Wolak

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

Leia mais

Disciplina de Banco de Dados Parte V

Disciplina de Banco de Dados Parte V Disciplina de Banco de Dados Parte V Prof. Elisa Maria Pivetta CAFW - UFSM Modelo de Dado Relacional O Modelo Relacional O Modelo ER é independente do SGDB portanto, deve ser o primeiro modelo gerado após

Leia mais

Carga Horária 40 horas. Requisitos Servidor Oracle 10G Ferramenta para interação com o banco de dados

Carga Horária 40 horas. Requisitos Servidor Oracle 10G Ferramenta para interação com o banco de dados Oracle 10g - Workshop de Administração I Objetivos do Curso Este curso foi projetado para oferecer ao participante uma base sólida sobre tarefas administrativas fundamentais. Neste curso, você aprenderá

Leia mais

de dados para o pgcluster

de dados para o pgcluster : Uma implementação de fragmentação de dados para o pgcluster Gustavo Tonini 1 Frank Siqueira (orientador) 1 1 INE - Departamento de Informática e Estatística Universidade Federal de Santa catarina Curso

Leia mais

2008.1 SQL. Autor: Renata Viegas

2008.1 SQL. Autor: Renata Viegas SQL Autor: Renata Viegas A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua

Leia mais

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language) Básico da Linguagem SQL Definição de Esquemas em SQL SQL(Structured Query Language) Desenvolvida como a linguagem de consulta do protótipo de SGBD Sistema R (IBM, 1976). Adotada como linguagem padrão de

Leia mais

Roteiro. Conceitos e Arquitetura de Sistemas de Banco de Dados. Conceitos e Arquiteturas de Sistemas de Banco de Dados. BCC321 - Banco de Dados I

Roteiro. Conceitos e Arquitetura de Sistemas de Banco de Dados. Conceitos e Arquiteturas de Sistemas de Banco de Dados. BCC321 - Banco de Dados I Roteiro Conceitos e Arquitetura de Sistemas de Banco de Dados Luiz Henrique de Campos Merschmann Departamento de Computação Universidade Federal de Ouro Preto luizhenrique@iceb.ufop.br www.decom.ufop.br/luiz

Leia mais