Sistemas de Base de Dados

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

Download "Sistemas de Base de Dados"

Transcrição

1 Sistemas de Base de Dados Comparação entre PostgreSQL, Oracle e Microsoft SQL Server dos mecanismos para processamento e optimização de perguntas Grupo 17 Elaborado por: Diogo Brito, nº37739 João Costa, nº Pedro Pires, nº25806 Dezembro 2011

2 Índice: 1. Introdução Microsoft SQL Server Oracle PostgreSQL Comparação Linguagem Intermédia Implementação de operações básicas Algoritmos suportados Mecanismos para consultar planos Paralelização de Queries Optimização Estimativa de Custos Comandos para parâmetrizar a construção e uso de estimativas Transformações Conclusão Bibliografia... 38

3 Índice de imagens Figura Pipelining base de uma query... 9 Figura Representação de uma query Figura 2.3 Operadores Figura Hash Join Figura Funcionamento do Hash Join Figura Processamento de uma query Figura Árvore derivada Figura Cálculo do custo... 25

4 1. Introdução A análise do processamento de perguntas num sistema de gestão de base de dados (SGBD) surge pela necessidade de optimização das mesmas. Apesar de numa base de dados de pequena escala a optimização poder não ter grande impacto, numa base de dados de grande escala a forma como as perguntas são particionadas internamente pode reduzir o tempo de resposta a uma dada pergunta. Geralmente as SGBDs estão divididas em duas partes. Uma que gere e controla os dados guardados, sendo responsável pela gestão destes. A segunda é responsável por receber uma query e produzir o output da mesma. Para isto primeiro é criado um plano de execução e, após o plano estar completo, este é executado. Este plano é feito através da transformação da operação lógica original em operações físicas. Uma operação lógica pode estar associada a apenas operação física, como é o caso da ordenação, ou pode estar associada a mais, por exemplo, transformar um join num nested loop join, merge join ou hash join. Para a elaboração dos planos são usadas estatísticas, para que seja possível calcular qual a melhor forma de produzir os resultados esperados, e, dependendo do custo de cada plano, é escolhido um que irá ser levado adiante. É sobre esta segunda parte das SGBDs que este relatório vai recair. Como são elaborados planos e como estes podem ser optimizados. Para a elaboração deste trabalho foram escolhidas, para além de Oracle, as SGBDs Microsoft SQL Server 2008 e PostgreSQL, sendo que esta escolha baseou-se nas funcionalidades oferecidas por cada uma das SGBDs, e pela documentação existente sobre as mesmas.

5 1.1. Microsoft SQL Server Desenvolvido pela Microsoft em parceria com a Sybase em 1988 aparece como um produto complementar do Windows NT. A versão mais actual é o SQL Server 2008 R2 mas espera-se já uma nova versão em As principais linguagens que aceita são Transact SQL (T-SQL) e ANSI SQL. É um sistema de gestão de bases de dados que pode funcionar tanto localmente apenas num computador como em vários ao mesmo tempo, mesmo pela internet Oracle Lançada em 1979 por uma empresa criada por Larry Ellison (actualmente CEO da Oracle Corporation) e dois colegas, foi a primeira base de dados relacional a estar disponível comercialmente. Os objectos e funções guardados podem ser invocados pela linguagem PL/SQL, linguagem proprietatia da Oracle Coorperation, ou por Java. A última versão é Oracle 11g PostgreSQL O PostgresSQL é uma SGBD desenvolvida na Universidade da Califórnia no Berkeley Computer Science Department. Esta SGBD foi pioneira em diversos conceitos que só foram implementados em SGBDs comerciais vários anos mais tarde.

6 Esta SGBD é open-source que nasceu no final dos anos 70 a partir de um projecto académico. Antes do nome Postgres ser adoptado este tinha como nome INGRES (INteractive Graphics REtrieval System). São suportadas vários standards do SQL bem como novas operações: Queries complexas; Chaves externas; Triggers; Vistas; Integridade de transacções; Controlo de concorrência; No ano de 1986, o Professor Michael Stonebraker, patrocinado pela Defense Advanced Research Projects Agency (DARPA), Army Research Office (ARO), National Science Foundation (NSF) e ESL, Inc, liderou o projecto com uma vasta equipa por trás conseguindo implementar um largo número de operações sendo que a primeira versão, ainda que não finalizada, surgiu em Em 1990 o sistema foi redesenhado com um novo sistema de regras e, em 1991, surgiu uma versão melhorada suportando múltiplos gestores de armazenamento, um executante de queries melhorado e o sistema de regras foi reescrito. Como podemos constatar através dos factos referidos atrás, o PostgreSQL evoluiu de uma maneira acelerada, no entanto, em 1994 surgiu uma versão que revolucionou o projecto. Esta versão é a chamada POSTGRES95 e foi desenvolvida por dois alunos, Andrew Yu e Jolly Chen. O que se destaca esta versão é o facto de ter um interpretador da linguagem SQL. Esta versão foi disponibilizada na internet numa versão opensource, juntamente com um tutorial o que facilitou e impulsionou o desenvolvimento da SGBD. O Posrgres possibilita também a adição de novos tipos de dados, funções, operadores, funções agregadas, métodos de index e linguagens procedimentais (PL/pgSQL, PL/Perl, PL/Java, PL/Ruby, etc.).

7 O facto de o Posrgres ser open-source torna possível e gratuita a sua modificação quer seja por privados, comerciais ou com objectivos académicos, e é de realçar que várias empresas usam esta SGBD para gerir os seus dados, como por exemplo o MySpace, Skype, IMDB, Yahoo, chegando a albergar dados na ordem dos petabytes neste último caso.

8 2. Comparação 2.1. Linguagem Intermédia Uma linguagem intermédia é a linguagem desenhada para correr numa máquina abstracta e é usada muitas vezes pelos compiladores como, tal o nome indica, uma linguagem intermédia antes de passar para a linguagem máquina. Isto existe pois é uma linguagem que pode ser independente do CPU e ao mesmo tempo da linguagem de programação em si. Um exemplo disso é, dentro da plataforma.net, todas as linguagens (C#, vb.net, etc) serem traduzidas para MSIL (Microsoft Intermediate Language) e apenas depois para linguagem máquina. Este tipo de linguagens intermédias são utilizadas pelos compiladores e também por outras ferramentas. O Oracle e o PostgreSQL, por utilizarem o PL/SQL, que é baseado em Ada utilizam uma variante do Desciriptive Intermediate Attributed Notation for Ada (DIANA). Para estes dois últimos, o funcionamento é o seguinte: no momento de compilar o PL/SQL é traduzido em código de sistema e é formado um pacote que é gravado na base de dados; no momento de execução estes são carregados para a memória partilhada e o código é executado. Na memória partilhada um pacote está limitado a 2^26 nós de DIANA o que corresponde a cerca de 6 milhões de linhas de código. O SQL Server utiliza o MSIL, como referido anteriormente. O MSIL: Microsoft Intermediate Language mas actualmente denominada por Common Intermediate Language. Esta linguagem é também utilizada por todas as outras.net Languages (C#, VB.NET, ASP.NET).

9 2.2. Implementação de operações básicas Figura Pipelining base de uma query Quando uma query é compilada o código é primeiro traduzido para uma representação equivalente em árvore. Depois, e caso a query tenha uma sintaxe SQL válida, um conjunto de verificações é efectuado para verificar se o utilizador tem acesso às tabelas e colunas pertencentes à arvore, tal como é verificado se estas existem. É ainda neste passo que são efectuadas verificações de semântica para garantir que são válidas e que, por exemplo, as colunas enumeradas num GROUP BY são válidas no caso em questão. Quando é completa a árvore da query e se verificou que a query está totalmente correcta então entra em acção a optimização. Neste passo o optimizador de query verifica diferentes tipos de planos, escolhendo a melhor a ser executada para o caso e entrega ao sistema para o plano escolhido para que este execute a query. Ao construir a representação da query em árvore é atribuído a cada operação um nó da árvore distinto. Vejamos o exemplo de como SELECT * FROM Customers C INNER JOIN Orders O in C.cid = O.cid WHERE O.date= poderá ser representado internamente.

10 Figura Representação de uma query O processador de queries utiliza diferentes árvores durante o processo. Um caso onde tal pode ser verificado é quando o Optimizador de Queries transforma uma operação lógica numa física, como exemplo, transforma um JOIN lógico (neste caso um INNER JOIN) num JOIN físico (Hash, merge ou nested). SQL Server tem cerca de 40 operadores lógicos e ainda mais operadores físicos. Alguns dos mais comuns irão ser focados, como o JOIN ou SELECT e outros mais específicos, como UDX ou Segment, não serão abordados. Operadores: Todos os operadores, em SQL Server, funcionam por pedidos de linhas aos seus nós filhos e, depois, retornando linhas aos nós que o chamam (pais), como no exemplo a seguir.

11 Figura 2.3 Operadores Cada operador retorna uma linha de cada vez, por isso, um caller terá de fazer vários pedidos para obter várias linhas. O nó caller poderá ser um operador pai ou o utilizador, que irá receber a resposta da query. Existem três tipos de join físico: HASH JOIN MERGE JOIN NESTED LOOP JOIN Em queries pequenas, que afectam um número reduzido de valores, o nested loop join é muito superior em relação aos demais, porem em queries com muitos valores as duas primeiras podem ser melhores. A escolha de qual usar é feita dinamicamente pelo optimizador. Hash Join Vejamos o seguinte exemplo, relativo ao seguinte código SQL:

12 Figura Hash Join Um hash join utiliza duas entradas, uma de construção e uma de indicação. A entrada de construção é mostrada no topo enquanto a de indicação, é mostrada em baixo. A mais pequena das duas entradas é escolhida para ser a de construção. A operação é feita em duas fases: a de construção e a de indicação. O caso mais comum de hash join é o in-memory hash join, onde na primeira fase, o conjunto de entrada de construção é totalmente consultado e, depois, uma tabela de hash é escrita em memória. Cada linha é, de seguida, inserida num conjunto de hash (denominado hash bucket) dependendo do valor de hash computado para a sua chave de hash. Esta fase é seguida da de indicação onde, para cada linha na entrada de indicação, é gerada uma chave de hash. Então, no correspondente conjunto de hash para aquela chave, é pesquisada a chave da entrada de indicação e são gerados os valores comuns. A figura seguinte ilustra bem como é feito.

13 Figura Funcionamento do Hash Join Este tipo de pesquisa é usado maioritariamente quando existem um grande número de dados, tipicamente não ordenados e não indexados. Merge Join Neste tipo de query é necessário que ambas as entradas estejam ordenadas nas colunas que estão a ser misturadas. Se houver índices disponíveis em ambas as colunas de entrada então é obtida uma linha de cada uma, são comparados os valores e, se coincidirem, é adicionada essa linha ao resultado final. Este processo é executado para todas as entradas. Nested Loop Join O nested loop join usa uma das entradas dos join como entrada exterior da tabela e a outra como entrada interior da tabela. Basicamente existem dois ciclos sendo que um

14 deles está dentro do outro. O ciclo exterior vai consumindo a entrada exterior linha por linha à medida que o interior verifica entradas na entrada interior. Este tipo de join é muito eficiente quando a entrada exterior é relativamente pequena e a entrada interior é grande mas indexada. Em muitos tipos de query onde existem apenas um conjunto pequeno de entradas este é muito superior aos dois tipos de join referidos anteriormente. Caso a tabela interior não esteja indexada na coluna em questão é, então, necessário usar um hash join Algoritmos suportados Os índices são a base da melhoria de performance das queries. Um índice bem feito poderá melhorar substancialmente o tempo de resposta de uma query, no entanto, um índice incorrecto ou colocado na coluna errada pode ter o efeito contrário podendo aumentar o tempo de resposta. Sendo uma das melhores formas de reduzir as leituras/escritas do disco permite encontrar informação numa tabela sem ter que a percorrer por completo; pode até ser comparada a um índice de um livro: se o consultarmos e encontrarmos a informação necessária podemos ir directamente para a página que nos interessa. Há duas operações básicas que podem ser aplicadas através do índice: Pesquisa (por um valor ou um conjunto de valores na chave do índice); Percorrer o índice (para a frente ou para trás); Para a pesquisa, o operador inicial começa na raiz da árvore B+ e navega em profundidade até ao local desejado, baseado nas chaves dos índices. Uma vez completo é então possível para o processador de query iterar sobre todas as linhas que verificam um certo predicado ou até que o último valor pertencente ao predicado seja encontrado.

15 Uma vez que os nós de folha numa árvore B+ (usada pelo SQL Server) estão ligados então é possível consultar linhas ordenadamente à medida que se navega por esses mesmos nós. Uma das tarefas com Optimizador de Query é o de assimilar quais predicados poderão ser aplicados a um certo índice para retornar linhas o mais rápido possível; alguns podem ser aplicados a um índice enquanto outros não. Os predicados que podem ser convertidos em índices são muitas vezes denominados sargable, de significado Search-ARGument-able, enquanto os que não podem são denominados non-sargable. Estes últimos seriam normalmente aplicados depois de uma pesquisa ao índice ou após percorrer este; isto para que a pesquisa retornasse todos os valores que verificam todos os predicados. No entanto, no SQL Server verifica normalmente os non-sargable dentro da pesquisa/percorrer índice na árvore da query, por questões de optimização. Caso não o fizesse os passos seriam: 1. Operador de pesquisa: Pesquisar uma chave no índice da árvore B+; 2. Trancar a página; 3. Ler a linha; 4. Libertar a página; 5. Retornar a linha ao operador de filtro; 6. Filtro: testar se a linha verifica o predicado non-sargable. Se sim, passar a linha para o operador pai. Se não, voltar a 2; No entanto, esta opção é mais lenta que a óptima pois retornar a linha para um outro operador exige carregar um novo conjunto de instruções e dados para o CPU. Se o conjunto da operação for mantido apenas num sítio, o custo geral de CPU irá baixar. Os passos são: 1. Operador de pesquisa: Pesquisar uma chave no índice da árvore B+; 2. Trancar a página; 3. Ler a linha; 4. Aplicar o filtro non-sargable. Se não passar o filtro ir para o passo 3, se não ir para 5;

16 5. Libertar a página 6. Retornar a linha Isto é chamado de injectar predicados non-sargable, pois o predicado passa duma operação exterior para dentro da pesquisa/percorrer. É uma optimização física mas pode aparecer em queries que processem muitas entradas. No entanto nem todos os predicados podem ser avaliados desta forma pois, como trancar uma página bloqueia até o acesso de outros utilizadores a consultarem, então esta operação está reservada apenas a predicados que não sejam muito pesados em termos de custo. São os chamados predicados non-pushable, non-sargable Mecanismos para consultar planos Quando se trabalha com sistemas com um tamanho considerável e que exijam resultados rápidos/consistentes, muitas vezes é necessário recorrer a ferramentas que permitam verificar se as queries estão correctas, o que se está a passar por detrás da black-box. Para isso os sistemas muitas vezes disponibilizam tais ferramentas para que um administrador de bases de dados possa cumprir o seu papel. Estes mecanismos mostram também os planos que estão por detrás das chamadas que são feitas, podendo verificar-se as decisões do optimizador de query, como verificar se se optou por um nested loop join ou um hash join, etc. Em SQL Server a ferramenta existente é o SQL Profiler Tool. O SQL Profiler tool é um ambiente gráfico que permite ao utilizador fazer variados tipos de consulta sobre uma base de dados sem SQL Server, como por exemplo: Monitorizar graficamente SQL Server queries Guardar informação sobre queries em background Analisar a performance do sistema Diagnosticar problemas como deadlocks Fazer debug a uma sintaxe T-SQL

17 Permite também criar SQL Traces Em Oracle existe o Explain Plan que permite verificar os planos para operadores de SELECT, UPDATE, INSERT e DELETE. É mostrada uma árvore com o conjunto de chamadas que o Oracle executa para uma determinada chamada. Nessa árvore podese ver: Conjunto de tabelas que são referenciadas no pedido; Método de acesso por cada tabela mencionada; Método de join para cada tabela afecta a um operador de join; Operadores de dados como filter, sort ou aggregation; Para além da informação na árvore é ainda possível ver informação sobre: Optimização, como o custo e cardinalidade de cada operação; Particionamento, como o conjunto de partições a que se acedeu; Execuções paralelas, como a distribuição de métodos de entrada de join; Em PostgreSQL a ferramenta utilizada chama-se EXPLAIN e tem a seguinte sintaxe: EXPLAIN [ ( option [,...] ) ] statement EXPLAIN [ ANALYZE ] [ VERBOSE ] statement where option can be one of: ANALYZE [ boolean ] VERBOSE [ boolean ] COSTS [ boolean ] BUFFERS [ boolean ]

18 FORMAT { TEXT XML JSON YAML } Este comando permite fazer consultas semelhantes à ferramenta anterior, do Oracle. Para além desta ferramenta existe ainda outra que é a tkprof Paralelização de Queries Paralelização de queries é a tecnologia usada para dividir um comando SQL em vários e distribui-los por dois ou mais processadores. Funções como full-table scans, sorts, etc. podem ter um aumento de performance ao serem paralelizadas. Apesar de em 1987 a Ingres, predecessora do PostgreSQL, ter começado a desenvolver paralelização de queries, o projecto foi abandonado pouco tempo depois. Como tal, apesar de ser uma das features mais comuns vistas em SGBDs, o PostgreSQL não tem esta função implementada. É considerada algo útil em apenas poucas situações e como tal não é algo urgente para implementar. Essa tecnologia é no entanto implementada tanto pela Microsoft como pela Oracle. No caso da Oracle, a query SQL é dividida em unidades mais pequenas, cada uma executada por um processo. Ao ser usada paralelização, o processo principal torna-se o coordenador da paralelização, com as seguintes responsabilidades: Divide o trabalho em unidades mais pequenas; Cria um número suficiente de processos paralelos que possam executar os subtrabalhos; Atribui os sub-trabalhos aos processos; Liberta os processos após o fim do processamento do trabalho; Vai atribuindo novos sub-trabalhos aos processos livres até a execução da query finalizar;

19 Para que haja paralelização num comando do tipo Select, é necessário que este cumpra alguns requisitos: Pelo menos uma das tabelas é acedida através de um full-table scan ou um índex range scan; Se a execução envolver um full-table scan (respectivamente, índex range scan), é necessário indicar a tabela correspondente ou definir a tabela com uma indicação de paralelização (respectivamente, indicar o índex correspondente ou declarar o índex com indicação de paralelização); A paralelização pode ser activada usando o comando: ALTER TABLE nome_da_tabela PARALLEL (DEGREE 8); E pode ser desactivada usando o comando: ALTER TABLE nome_da_tabela NOPARALLEL; A Oracle permite ainda controlar parâmetros como o número mínimo e máximo de processos em paralelos, ou fazer com que estes parâmetros sejam controlados automaticamente. O valor tanto do número máximo de processos paralelos como do valor mínimo tem de ser balanceado. O número mínimo de processos paralelos tem de ser alto o suficiente para evitar seja necessário estar sempre a criar processos novos. O valor por defeito é 0. Por seu lado, o valor máximo, se for muito alto, irá tentar consumir mais recursos do que os disponíveis, acabando por prejudicar na performance da execução. É também possível indicar o número de processos associados com uma determinada operação. Tal operação é feita com o seguinte comando: SELECT /*+ PARALLEL(orders,4,1) */ ; Em Oracle operações como inserções, actualizações e deletes também pode beneficiar de paralelização. Para paralelizar updates e deletes é necessário que as tabelas estejam particionadas, e que diferentes partições sejam usadas. Ou seja, tem-se diferentes processos a fazerem pesquisas em diferentes partições.

20 Em SQL Server, a paralelização é feita automaticamente, apesar de não ser usada caso aconteça uma das seguintes situações: O custo de execução da query não é alto o suficiente para que seja considerado uma alternativa em que seja usado algum tipo de paralelismo; O plano de execução paralelizado tem um custo maior que um nãoparalelizado; A query contém instruções que não podem ser paralelizadas. Dependendo da instrução, isto pode causar que parte do plano, ou o plano na sua totalidade, não seja paralelizado. Durante a criação do plano de execução, o SQL Server vai colocando operadores para preparar a query para ser executada em paralelo. Este operador faz a gestão dos processos e gestão dos dados. Existem três tipos de operadores, sendo que um ou mais podem aparecer no plano de execução: distributed streams, repartition streams e gather streams. O primeiro recebe como parâmetro uma lista e divide-a em múltiplas listas. Estas sub-listas mantêm o mesmo formato, conteúdo e ordem que a lista original, apesar de uma entrada poder aparecer em mais que uma sub-lista. O segundo operador, repartition stream, recebe múltiplas listas e devolve múltiplas listas após estas serem filtradas. Por fim, o operador gather streams recebe várias listas e junta-as numa única lista. Todos os operadores mantêm o formato e conteúdo da lista original. Após a inserção de todos os operadores necessários, o resultado é um plano de execução que usa a paralelização, e, consequentemente, vários processos. O número de processos usados é determinado pelo plano em si, nomeadamente pela complexidade do mesmo e pelo grau de paralelismo, ou seja, o número máximo de processos usados. O procedimento sp_configure permite configurar o grau de paralelismo, através das chamadas query hints. Estas permitem especificar quais os algoritmos usados no processamento da query. É possível definir entre muitos outros, o número máximo de paralelismo, se é usado loop join, merge join, hash join, hash group order group.

21 2.6. Optimização Em relação à optimização de queries, isto é feito pelas três SGBDs estudadas. Em SQL Server, quando uma query é submetida, esta passa por quatro passos (Figura 2.1). Figura Processamento de uma query Nos dois primeiros passos, verifica-se se a query é válida, e é criado uma árvore, em que cada nó representa uma operação lógica, como ler uma determinada tabela ou efectuar um inner join. Por exemplo, caso seja introduza a query: SELECT c.customerid, COUNT(*) FROM Sales.Customer c JOIN Sales.SalesOrderHeader o ON c.customerid = o.customerid WHERE c.territoryid = 4 GROUP BY c.customerid

22 Esta é transformada na seguinte árvore(figura 2.2): Figura Árvore derivada A árvore é recebida pelo query optimizer, responsável pela optimização, e é nesse passo que são criados os diversos planos possíveis. Ainda que não seja possível gerar todos os planos possíveis para uma dada query, são avaliados os custos dos planos gerados e é escolhido um dos gerados, normalmente é escolhido o de menor custo. De forma a explorar o conjunto de planos possíveis, são usadas heurísticas, para que o número de planos gerados seja limitado, limitando desta forma a quantidade de recursos e tempo usados para a geração dos mesmos, tendo em conta que independentemente do plano escolhido, o resultado terá de ser invariavelmente o mesmo. A heurística usada determina que irá ser procurado um plano de execução com um custo menor ao encontrado até ao momento desde que esse custo seja alto o suficiente que compense essa pesquisa. Para estimar o plano mais eficiente é estimado o custo de cada operação física nesse plano, usando formulas que têm em conta o uso de recursos como RAM, CPU e I/O. Este custo vai então variar conforme o algoritmo usado e pelo número de entradas que terão de ser processadas. O custo de obter estas entradas é calculado recorrendo

23 ao uso de estatísticas que descrevem a distribuição dos valores nas tabelas existentes. Após o cálculo dos custos, estes são somados para obter o custo total do plano. Este plano é então guardado numa estrutura chamado memo para que mais tarde se possa comparar os vários planos e escolher o melhor. Este plano é então passado para a execution engine para ser executado, e possivelmente é guardado em memória para ser mais tarde usado. Em PostgreSQL a estrutura do plano é uma árvore em que nós nos níveis mais baixos representam operações de mais baixo nível, como scans em tabelas. Os custos das operações mais acima na árvore inclui o custo dos seus descendentes, e não é tido em conta os custos de operações como mostrar os resultados por serem independentes do plano escolhido. Os custos destas operações são medidos em unidades de disco lidas, sendo que 1.0 representa uma leitura sequencial. O custo do CPU também é tido em conta, mas é convertido para as mesmas unidades. Por exemplo, o custo duma query em comparação de a mesma query mas com uma cláusula WHERE vai ser menor, pois a segunda vai necessitar verificar essa condição em todas as entradas da tabela. Esta cláusula, WHERE, vai ter impacto no algoritmo escolhido para ler os dados. Se a cláusula for restrita o suficiente, é usado um índex scan. Isto torna mais dispendioso ler os dados pois eles não são lidos de forma sequencial, mas devido ao seu reduzido número o custo acaba por ser compensado. Este tipo de scan é também usado com cláusulas do tipo ORDER BY. No caso de serem usadas cláusulas WHERE sobre diferentes colunas da mesma tabela, dependendo de como a condição é feita, o algoritmo escolhido irá ser diferente. Para isto são utilizadas estatísticas. Estas estatísticas não são constantemente actualizadas, mas tendem a reflectir o número de entradas numa dada tabela, e o número blocos ocupados em disco.

24 Para queries complexas que usem o operador join o PostgreSQL usa algoritmos genéticos para ajudar a diminuir a complexidade das mesmas. Este algoritmo escolhe algumas possíveis sequências de joins aleatoriamente, e sequências com menor custo são consideradas mais adequadas que as de maior custo. São então geradas novas combinações tendo em conta as sequências de menor custo encontradas até ao momento. Isto repete-se um número pré-definido de vezes, e a sequência de menor custo até ao momento é a escolhida para o plano de execução. Por este algoritmo ser não-determinista, existem parâmetros de controlo que garantem que a mesma query produz sempre o mesmo resultado. Em Oracle existem duas possibilidades sobre o modo como é feita a optimização. Pode ser dada mais importância ao tempo de resposta total, como em aplicações em que o importante é o resultado final, ou pode ser dada mais importância ao tempo que demora até começarem a surgir resultados, como em aplicações interactivas em que o utilizador apenas está interessado nos primeiros resultados. Esta possibilidade é definida no parâmetro OPTIMIZER_MODE. Para calcular qual o melhor custo são usadas estatísticas, guardadas num dicionário. É guardada informação sobre a forma como os dados estão guardados em disco e a distribuição de dados nas diferentes tabelas.

25 Figura Cálculo do custo Query Transformer recebe como entrada um conjunto de sub-queries, sendo que a estrutura da query original vai definir qual a estrutura destas sub-queries, e tenta determinar se esta estrutura é a óptima ou se compensa muda-la. Após isso, são geradas três tipos diferentes de medidas, relacionadas entre si, e são estas medidas que vão estimar o custo de um determinado plano. Estas medidas são: Selectividade; Cardinalidade; Custo; A primeira representa uma fracção das entradas de uma determinada lista. Esta lista pode ser uma tabela, uma vista, o resultado de um join ou de um operador GROUP BY. Pode estar também associado a um predicado WHERE, que irá actuar como um filtro, sendo que este filtro vai determinar quantas entradas vão ser seleccionadas. O valor da selectividade pode variar entre 0.0 e 1.0, em que 0.0 significa que que não existem entradas resultantes do filtro, e 1.0 indica que nenhuma entrada foi eliminada. Caso não existam estatísticas disponíveis para o cálculo da selectividade, são usados valores por defeito que vão ajudar no calculo.

26 Cardinalidade representa o número de entradas de uma determinada lista, após serem efectuadas todas as operações. O custo representa uma estimativa das unidades de trabalho necessárias para produzir o resultado final. Por exemplo, no caso de uma B-Tree, o custo vai depender do número de níveis, número de folhas e entradas lidas. O plan generator irá gerar vários planos de execução possíveis e escolher o plano com o menor custo. Inicialmente são gerados sub-planos para cada uma das sub-queries, estes planos são então usados para gerar os planos das queries de mais alto nível. A query original é então a última a ser optimizada. O número de planos possíveis tende a ser proporcional aos números de joins existentes na query, tendendo a crescer exponencialmente. É por isso imperativo tentar controlar esse número. O PostgreSQL tenta obter algoritmos genéticos, e o Oracle usa parâmetros internos que limitam o número de planos gerados. Este parâmetro é calculado automaticamente, conforme o plano de menor custo encontrado até ao momento. Caso o custo desse plano seja elevado, são criados vários planos alternativos para as várias possibilidades de calcular os joins. Caso o custo seja reduzido, então não é necessário calcular alternativas pois gastaria-se recursos a tentar reduzir algo que já é relativamente reduzido. O primeiro join a ser calculado é o mais importante, pois é esse que irá determinar o número de planos gerados. Por esse motivo é usada uma heurística simples que calcula primeiro os joins com menor cardinalidade e a partir daí irá calcular os com maior cardinalidade Estimativa de Custos Oracle É recomendado estimar o espaço de uma tabela antes da sua criação e recomenda-se também que tal estimativa faça parte do planeamento da base de dados. Os tamanhos estimados de tabelas, índices, undo, space e redo log files podem ser

Tarefa Orientada 16 Vistas

Tarefa Orientada 16 Vistas Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um

Leia mais

Tarefa Orientada 14 Subconsultas

Tarefa Orientada 14 Subconsultas Tarefa Orientada 14 Subconsultas Objectivos: Subconsultas não correlacionadas Operadores ALL, SOME e ANY Subconsultas correlacionadas Operador EXISTS Subconsultas incluídas na cláusula FROM de uma consulta

Leia mais

Tarefa Orientada 15 Manipulação de dados

Tarefa Orientada 15 Manipulação de dados Tarefa Orientada 15 Manipulação de dados Objectivos: Criação de tabelas teste Comando INSERT INTO Inserção de dados Comando INSERT Actualização de dados Comando UPDATE Eliminação de dados Comando DELETE

Leia mais

Tarefa Orientada 19 Triggers

Tarefa Orientada 19 Triggers Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente

Bases de Dados. Lab 1: Introdução ao ambiente Departamento de Engenharia Informática 2010/2011 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

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

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Tarefa Orientada 12 Junção Externa, Auto-Junção e União Tarefa Orientada 12 Junção Externa, Auto-Junção e União Objectivos: Junção externa (Outer JOIN) Junção externa à esquerda (LEFT Outer JOIN) Junção externa à direita (RIGHT Outer JOIN) Junção externa completa

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

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO CONCEITOS BÁSICOS 1 Necessidade das base de dados Permite guardar dados dos mais variados tipos; Permite

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

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 13 Agrupamento e sumário de dados Tarefa Orientada 13 Agrupamento e sumário de dados Objectivos: Funções de agregação Agrupamento e sumário de dados Funções de agregação Nesta tarefa orientada iremos formular consultas que sumariam os

Leia mais

Utilização do SOLVER do EXCEL

Utilização do SOLVER do EXCEL Utilização do SOLVER do EXCEL 1 Utilização do SOLVER do EXCEL José Fernando Oliveira DEEC FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MAIO 1998 Para ilustrar a utilização do Solver na resolução de

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

Hugo Pedro Proença, 2007

Hugo Pedro Proença, 2007 Stored Procedures À medida que a complexidade dos sistemas aumenta, torna-se cada vez mais difícil a tarefa de integrar o SQL com as aplicações cliente. Além disto, é necessário que todas as aplicações

Leia mais

Acronis Servidor de Licença. Manual do Utilizador

Acronis Servidor de Licença. Manual do Utilizador Acronis Servidor de Licença Manual do Utilizador ÍNDICE 1. INTRODUÇÃO... 3 1.1 Descrição geral... 3 1.2 Política de licenças... 3 2. SISTEMAS OPERATIVOS SUPORTADOS... 4 3. INSTALAR O SERVIDOR DE LICENÇA

Leia mais

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado Escola Básica e Secundária de Velas Planificação de TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC Curso Profissional de Técnico de Secretariado 10º C MÓDULO 1 FOLHA DE CÁLCULO Microsoft Excel Conteúdos

Leia mais

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO DOMINE A 110% ACCESS 2010 A VISTA BACKSTAGE Assim que é activado o Access, é visualizado o ecrã principal de acesso na nova vista Backstage. Após aceder ao Access 2010, no canto superior esquerdo do Friso,

Leia mais

Manual do Gestor da Informação do Sistema

Manual do Gestor da Informação do Sistema Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Automatização de Horários Manual do Gestor da Informação do Sistema João Braga

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II O seguinte exercício contempla um processo com três estágios. Baseia-se no Inquérito de Satisfação Fase II, sendo, por isso, essencial compreender primeiro o problema antes de começar o tutorial. 1 1.

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Escola Secundária de Camarate

Escola Secundária de Camarate Escola Secundária de Camarate Ano Lectivo 2014/2015 Planificação da Disciplina de Tecnologias da Informação e Comunicação Curso Profissional de Técnico Auxiliar de Saúde e Técnico de Restauração e Bar

Leia mais

Tarefa Orientada 11 Junção Interna

Tarefa Orientada 11 Junção Interna Tarefa Orientada 11 Junção Interna Objectivos: Junção Interna (INNER JOIN) Junção Interna A operação de junção interna (INNER JOIN) é utilizada para combinar colunas de duas ou mais tabelas. O resultado

Leia mais

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1. Departamento de Engenharia Informática 2008/2009 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

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

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução à gestão de memória Programação de Sistemas Gestão de memória : 1/16 Introdução (1) A memória central de um computador é escassa. [1981] IBM PC lançado com 64KB na motherboard,

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

PROGRAMA. Objectivos Gerais :

PROGRAMA. Objectivos Gerais : PROGRAMA ANO LECTIVO : 2005/2006 CURSO : ENGENHARIA MULTIMÉDIA ANO: 2.º DISCIPLINA : SISTEMA DE GESTÃO DE BASE DE DADOS DOCENTE RESPONSÁVEL PELA REGÊNCIA : Licenciado Lino Oliveira Objectivos Gerais :

Leia mais

DEMONSTRAÇÕES FINANCEIRAS COMBINADAS

DEMONSTRAÇÕES FINANCEIRAS COMBINADAS 24 DEMONSTRAÇÕES FINANCEIRAS COMBINADAS Os mercados de capitais na Europa e no mundo exigem informações financeiras significativas, confiáveis, relevantes e comparáveis sobre os emitentes de valores mobiliários.

Leia mais

Base de Dados para Administrações de Condomínios

Base de Dados para Administrações de Condomínios Base de Dados para Administrações de Condomínios José Pedro Gaiolas de Sousa Pinto: ei03069@fe.up.pt Marco António Sousa Nunes Fernandes Silva: ei03121@fe.up.pt Pedro Miguel Rosário Alves: alves.pedro@fe.up.pt

Leia mais

Organização. Trabalho realizado por: André Palma nº 31093. Daniel Jesus nº 28571. Fábio Bota nº 25874. Stephane Fernandes nº 28591

Organização. Trabalho realizado por: André Palma nº 31093. Daniel Jesus nº 28571. Fábio Bota nº 25874. Stephane Fernandes nº 28591 Organização Trabalho realizado por: André Palma nº 31093 Daniel Jesus nº 28571 Fábio Bota nº 25874 Stephane Fernandes nº 28591 Índice Introdução...3 Conceitos.6 Princípios de uma organização. 7 Posição

Leia mais

Structured Query Language (SQL)

Structured Query Language (SQL) SQL Histórico Structured Query Language (SQL) Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec SQL Curso Prático Celso Henrique Poderoso de Oliveira Novatec 1 Introdução Desde o início da utilização dos computadores, sabemos que um sistema é feito para aceitar entrada de dados, realizar processamentos

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Administração e Optimização de BDs

Administração e Optimização de BDs Departamento de Engenharia Informática 2010/2011 Administração e Optimização de BDs Mini-Projecto 1 2º semestre A resolução deve ser claramente identificada com o número de grupo e entregue sob a forma

Leia mais

Direcção Regional de Educação do Algarve

Direcção Regional de Educação do Algarve MÓDULO 1 Folha de Cálculo 1. Introdução à folha de cálculo 1.1. Personalização da folha de cálculo 1.2. Estrutura geral de uma folha de cálculo 1.3. O ambiente de da folha de cálculo 2. Criação de uma

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO 4 CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO CONCEITOS BÁSICOS MS-DOS MICROSOFT DISK OPERATION SYSTEM INSTALAÇÃO E CONFIGURAÇÃO DE UM SISTEMA OPERATIVO LIGAÇÕES À INTERNET O que é um sistema operativo?

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

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

Processamento e Otimização de Consultas

Processamento e Otimização de Consultas Introdução Processamento e Banco de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM 1 Processamento

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

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento e Indexação Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento Banco de Dados são armazenados fisicamente como arquivos de registro, que em geral ficam em discos

Leia mais

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação Ministério das Finanças Instituto de Informática Departamento de Sistemas de Informação Assiduidade para Calendários Específicos Junho 2010 Versão 6.0-2010 SUMÁRIO 1 OBJECTIVO 4 2 ECRÃ ELIMINADO 4 3 NOVOS

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

Aplicação Prática de Lua para Web

Aplicação Prática de Lua para Web Aplicação Prática de Lua para Web Aluno: Diego Malone Orientador: Sérgio Lifschitz Introdução A linguagem Lua vem sendo desenvolvida desde 1993 por pesquisadores do Departamento de Informática da PUC-Rio

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Tarefa Orientada 10 Obter informação a partir de uma tabela

Tarefa Orientada 10 Obter informação a partir de uma tabela Tarefa Orientada 10 Obter informação a partir de uma tabela Objectivos: Consultar dados de uma tabela Utilizar operadores aritméticos, relacionais, lógicos, de concatenação de cadeias de caracteres, LIKE

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Professor: João Fábio de Oliveira jfabio@amprnet.org.br (41) 9911-3030 Objetivo: Apresentar o que são os Sistemas Operacionais, seu funcionamento, o que eles fazem,

Leia mais

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores Trabalhos Práticos Programação II Curso: Engª Electrotécnica - Electrónica e Computadores 1. Objectivos 2. Calendarização 3. Normas 3.1 Relatório 3.2 Avaliação 4. Propostas Na disciplina de Programação

Leia mais

Diagrama de transição de Estados (DTE)

Diagrama de transição de Estados (DTE) Diagrama de transição de Estados (DTE) O DTE é uma ferramenta de modelação poderosa para descrever o comportamento do sistema dependente do tempo. A necessidade de uma ferramenta deste tipo surgiu das

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

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

Persistência e Banco de Dados em Jogos Digitais

Persistência e Banco de Dados em Jogos Digitais Persistência e Banco de Dados em Jogos Digitais Prof. Marcos Francisco Pereira da Silva Especialista em Engenharia de Software Jogos Digitais - Computação Gráfica 1 Agenda Vantagens de usar a abordagem

Leia mais

Novo Order Manager para o Software NobelProcera

Novo Order Manager para o Software NobelProcera Novo Order Manager para o Software NobelProcera Guia Rápido Versão 1 O novo Order Manager facilita mais os processos e procedimentos envolvidos nas encomendas através do sistema NobelProcera. Isto inclui

Leia mais

Sistema dinâmico de impressão da tabela de detalhes das facturas

Sistema dinâmico de impressão da tabela de detalhes das facturas Sistema dinâmico de impressão da tabela de detalhes das facturas M1.MAN.M1.120215.AS01 Criado em: Thursday, February 16, 2012 Copyright 1989-2011 MedicineOne, life sciences computing SA MedicineOne copyright

Leia mais

MANUAL DO UTILIZADOR

MANUAL DO UTILIZADOR MANUAL DO UTILIZADOR Versão 1.6 PÁGINA DE PESQUISA A página principal do PacWeb permite a realização de um número muito variado de pesquisas, simples, ou pelo contrário extremamente complexas, dependendo

Leia mais

Rock In Rio - Lisboa

Rock In Rio - Lisboa Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem

Leia mais

Módulo 4. Construindo uma solução OLAP

Módulo 4. Construindo uma solução OLAP Módulo 4. Construindo uma solução OLAP Objetivos Diferenciar as diversas formas de armazenamento Compreender o que é e como definir a porcentagem de agregação Conhecer a possibilidade da utilização de

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS Planificação Anual da Disciplina de TIC Módulos 1,2,3-10.ºD CURSO PROFISSIONAL DE TÉCNICO DE APOIO À GESTÃO DESPORTIVA Ano Letivo 2015-2016 Manual adotado:

Leia mais

Gestão dos Níveis de Serviço

Gestão dos Níveis de Serviço A Gestão dos Níveis de Serviço (SLM) Os sistemas e tecnologias de informação e comunicação têm nas empresas um papel cada vez mais importante evoluindo, hoje em dia, para níveis mais elevados de funcionamento

Leia mais

RANGE-HASH e RANGE-LIST

RANGE-HASH e RANGE-LIST RANGE-HASH e RANGE-LIST O COMPOSITE PARTITION é um método de particionamento composto, unindo os três métodos discutidos anteriormente. Como os métodos Range, Hash e List Partition. Existem dois tipos

Leia mais

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO ACCESS 2010 Conceitos Básicos Ficha Informativa Professor : Vanda Pereira módulo didáctico Conceitos Básicos Necessidade das base de dados Permite guardar dados

Leia mais

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X Índice Traduzindo e iniciando uma aplicação Compiladores Assembladores Linkers Loaders DLLs Iniciando um programa em Java Após toda a matéria abordada nesta

Leia mais

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 CURSO/CICLO DE FORMAÇÃO Técnico de Eletrotecnia e Técnico de Gestão de Equipamentos Informáticos / 2015/2018 DISCIPLINA: Tecnologias da Informação e Comunicação

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo Departamento de Engenharia Informática 2012/2013 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real. PROGRAMA ANO LECTIVO: 2005/2006 CURSO: LICENCIATURA BI-ETÁPICA EM INFORMÁTICA ANO: 2.º DISCIPLINA: BASE DE DADOS DOCENTE RESPONSÁVEL PELA REGÊNCIA: Licenciado Lino Oliveira Objectivos Gerais: Aquisição

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS (GRUPO INFORMÁTICA) Ano Letivo de 2014/2015 MÓDULO 1 FOLHA DE CÁLCULO

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS (GRUPO INFORMÁTICA) Ano Letivo de 2014/2015 MÓDULO 1 FOLHA DE CÁLCULO Ensino Regular Diurno Disciplina: T.I.C. Professores: Margarida Afonso Curso Profissional - Técnico de Auxiliar de Saúde Ano: 10.º Turma(s): TAS MÓDULO 1 FOLHA DE CÁLCULO OBJECTIVOS Indicar as principais

Leia mais

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco Escola Superior de Tecnologia Instituto Politécnico de Castelo Branco Departamento de Informática Curso de Engenharia Informática Disciplina de Projecto de Sistemas Industriais Ano Lectivo de 2005/2006

Leia mais

Pesquisa e organização de informação

Pesquisa e organização de informação Pesquisa e organização de informação Capítulo 3 A capacidade e a variedade de dispositivos de armazenamento que qualquer computador atual possui, tornam a pesquisa de informação um desafio cada vez maior

Leia mais

Índice. Introdução 31. Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais 35

Índice. Introdução 31. Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais 35 Introdução 31 1. Bases de Dados Relacionais 31 2. Modelação de Bases de Dados 31 3. Modelo de Classes UML 32 4. Linguagem SQL 32 5. Sobre o Microsoft" Access" 32 Tutorial 1: O Microsoft Access como Sistema

Leia mais

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção Este procedimento corresponde ao fluxo de trabalho de Indexação de OCR com separação de código de correção no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se na

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Novo Formato de Logins Manual de Consulta

Novo Formato de Logins Manual de Consulta Gestão Integrada de Acessos Novo Formato de Logins Manual de Consulta Gestão Integrada de Acessos Histórico de Alterações Versão Descrição Autor Data 1.0 Versão inicial DSI/PPQ 2014-07-11 Controlo do documento

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

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL SQL APOSTILA INTRODUÇÃO Uma linguagem de consulta é a linguagem por meio da qual os usuários obtêm informações do banco de dados. Essas linguagens são, tipicamente, de nível mais alto que as linguagens

Leia mais

Optimização de um Mundo Virtual

Optimização de um Mundo Virtual secção 3.2 Optimização de um Mundo Virtual Dadas as limitações impostas pela actual tecnologia, um mundo virtual que não seja cuidadosamente optimizado torna-se necessariamente demasiado lento para captar

Leia mais

AMBIENTE DE PROGRAMAÇÃO PYTHON

AMBIENTE DE PROGRAMAÇÃO PYTHON Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2003/2004 FICHA 1 AMBIENTE DE PROGRAMAÇÃO PYTHON 1.1. Objectivos

Leia mais

Tarefa Orientada 18 Procedimentos armazenados

Tarefa Orientada 18 Procedimentos armazenados Tarefa Orientada 18 Procedimentos armazenados Objectivos: Criar Procedimentos armazenados Chamar procedimentos armazenados Utilizar parâmetros de entrada e de saída Um procedimento armazenado representa

Leia mais

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br BANCO DE DADOS info 3º ano Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br BANCO DE DADOS Unidade 1 - Introdução Dados; Banco de Dados; Base de Dados; Projeto de Banco de Dados.

Leia mais

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. MySQL 101 Recapitulando Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. As bases de dados são úteis quando necessitamos

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente: Trabalho elaborado por: Carlos Palma nº5608 Curso de Eng. Informática Linguagens de Programação C Sharp University Data Processing (C Sharp Universidade de Processamento de Dados) Docente: José Jasnau

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