La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Banco de Dados II IMPLEMENTAÇÃO E OPTIMIZAÇÃO DE BANCOS DE DADOS

Presentaciones similares


Presentación del tema: "Banco de Dados II IMPLEMENTAÇÃO E OPTIMIZAÇÃO DE BANCOS DE DADOS"— Transcripción de la presentación:

1 Banco de Dados II IMPLEMENTAÇÃO E OPTIMIZAÇÃO DE BANCOS DE DADOS
Objetivo: Identificar índices en una BD para disminuir el tiempo de respuesta del sistema. Características y aplicación de los triggers y cursores. MsC. Leoder Alemañy Socarrás

2 PL/PgSql É uma linguagem procedural carregável desenvolvida para o sistema de banco de dados PostgreSQL. Criar procedimentos de funções e de gatilhos; Adicionar estruturas de controle à linguagem SQL; Realizar processamentos complexos; Herdar todos os tipos de dado, funções e operadores definidos pelo usuário; Hago una intro de lo que han visto hasta el momento (funciones), refresco un poco los conocimientos hasta ahora de pl/pgsql pues en esta conferencia vamos a ver como resolver estas situaciones planteadas anteriormente pasor ende el objetivo de la clase es indentificar...

3 PL/PgSql CREATE FUNCTION populate() RETURNS integer AS $$ DECLARE
-- declarações BEGIN PERFORM minha_funcao(); END; $$ LANGUAGE plpgsql; Hago una intro de lo que han visto hasta el momento (funciones), refresco un poco los conocimientos hasta ahora de pl/pgsql pues en esta conferencia vamos a ver como resolver estas situaciones planteadas anteriormente pasor ende el objetivo de la clase es indentificar...

4 Preguntas ¿Como conseguimos que se executem funções e procedimentos dentro do banco de dados sem que seja o utente quem os mande a executar? ¿Como podemos tratar filas de maneira independentes no resultado de uma consulta? Hago una intro de lo que han visto hasta el momento (funciones), refresco un poco los conocimientos hasta ahora de pl/pgsql pues en esta conferencia vamos a ver como resolver estas situaciones planteadas anteriormente pasor ende el objetivo de la clase es indentificar...

5 Objetivos: Identificar as estruturas e elementos que compõem os triggers e cursores. po

6 Características e aplicativo dos trigger e cursores.
Contenido: Características e aplicativo dos trigger e cursores. Estruturas e elementos necessários para sua definição.

7 Manuales de referencia de PostgreSQL.
Bibliografía: Manuales de referencia de PostgreSQL. PostgreSQL Documentation. The PostgreSQL Global Development Group.

8 Quando se elimine determinado registro que guarde um relatório.
Introducción Em ocasiões o utente precisa que a BD possa executar tarefas sem que ele as mande a executar. Exemplo: Quando se elimine determinado registro que guarde um relatório.

9 Trigger É uma Acção(função) que se executa de forma automática quando se cumpre uma condição estabelecida ao realizar uma operação sobre o banco de dados. Que começa quando um evento específico ocorre sobre uma tabela específica.

10 ¿Quando entra em vigor um trigger?
Dantes ou depois de uma inserção (INSERT). Dantes ou depois de uma actualização (UPDATE). Dantes ou depois de uma eliminação (DELETE). Dantes ou depois de uma eliminação(TRUNCATE) [postgresql 8.4]. Poner ejemplo del uso (auditoria de tablas)

11 Definição dos triggers:
A definição da função associada ao trigger é a que executa a acção em resposta ao evento(INSERT, UPDATE, DELETE). A definição formal de trigger indicará: a) De que tabela esperar-se os eventos. b) A que tipo de evento responder-se. c) Llamada à função trigger. Poner ejemplo del uso (auditoria de tablas)

12 [ RETURNS trigger ] AS $$ DECLARE Variable; BEGIN sentencia;
CREATE OR REPLACE FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [ RETURNS trigger ] AS $$ DECLARE Variable; BEGIN sentencia; Return null-- Return new o Return old END; $$ LANGUAGE ‘plpgsql’; Poner ejemplo del uso (auditoria de tablas)

13 Trigger CREATE OR REPLACE TRIGGER nombre_trigger [ AFTER | BEFORE ] [ INSERT | UPDATE | DELETE ] ON nombre_tabla FOR EACH [ROW | STATEMENT] EXECUTE PROCEDURE function; Poner ejemplo del uso (auditoria de tablas)

14 Trigger CREATE {OR REPLACE} TRIGGER nombre_disp. [BEFORE|AFTER] [DELETE|INSERT|UPDATE {OF colunas}] [ OR [DELETE|INSERT|UPDATE {OF colunas}]...] ON tablela [FOR EACH ROW [WHEN condição de disparo]] [DECLARE] -- Declaração de variáveis locais BEGIN -- Instruções de execução [EXCEPTION] -- Instruções de execução de excepção END; Poner ejemplo del uso (auditoria de tablas)

15 Variables especiales dos trigger
NEW: aloja os novos valores da tupla que se está a modificar. OLD: aloja os valores antigos da tupla que se está a modificar. TG_OP: Variable tipo string que indica qué tipo de evento está ocurrendo (INSERT, UPDATE, DELETE). EI: otras variables especiales (documentación de postgresql) Poner ejemplo del uso (auditoria de tablas)

16 Ejemplo

17 IF NEW.genero = 'Bolero' THEN NEW.autor:='Ricardo Montes'; end if;
Ejemplo CREATE OR REPLACE FUNCTION "public"."FAutor" () RETURNS trigger AS $body$ BEGIN IF NEW.genero = 'Bolero' THEN NEW.autor:='Ricardo Montes'; end if; Return NEW; END; LANGUAGE 'plpgsql';

18 CREATE TRIGGER "TAutor" BEFORE INSERT OR UPDATE
Definición del Trigger, usando la Función antes definida. CREATE TRIGGER "TAutor" BEFORE INSERT OR UPDATE ON "public"."canciones" FOR EACH ROW EXECUTE PROCEDURE "public"."FAutor"();

19 Ejecución automática del Trigger
INSERT INTO canciones (idcancion,nombre_cancion,genero) VALUES (495017, 'Hasta que te conocí', 'Bolero'); O Trigger executará a função FAutor que completa o último campo da Tabela Canções, com o nome do autor.

20 ¿Que passaria se se retorna NULL ou OLD a função trigger?
Pergunta!!! ¿Que passaria se se retorna NULL ou OLD a função trigger?

21 Trigger que permite Proteger os dados de uma tabela.
Ejemplo Trigger que permite Proteger os dados de uma tabela.

22 Criamos uma Função que devolva NULL
Ejemplo Criamos uma Função que devolva NULL CREATE OR REPLACE FUNCTION "public"."FProteger_Datos" () RETURNS trigger AS $body$ BEGIN Return NULL; END; LANGUAGE 'plpgsql';

23 CREATE TRIGGER "canciones_TProteger_Datos" BEFORE DELETE
Ejemplo Criámos um Trigger que se executa dantes da operação “Eliminar” da Tabela em questão e mandamos a executar a Função “FProteger_Dados” CREATE TRIGGER "canciones_TProteger_Datos" BEFORE DELETE ON "public"."canciones" FOR EACH ROW EXECUTE PROCEDURE "public"."FProteger_Datos"();

24 A operação DELETE sobre a tabela Canções não terá efeito.
Ejemplo A operação DELETE sobre a tabela Canções não terá efeito. DELETE FROM Canciones; As Funções utilizadas por disparadores que se executam uma vez por fila(row-level) e DANTES de executar o comando SQL que o lançou, podem: retornar NULL para saltar-se a operação na fila afectada.

25 Ejemplo Precisa-se levar um registro de todas as mudanças de preço de venda em a tabela PRODUCTO (producto_id, nombre, precio, tipo, cantidad, precio_compra, precio_venta). PRODUCTO_ACTUALIZADO (producto_id, nombre, precio_anterior, precio_actualizado). Poner ejemplo del uso (auditoria de tablas)

26 Ejemplo CREATE FUNCTION producto_actualizado_tri() RETURN trigger AS $$ BEGIN IF (TG_OP = 'UPDATE') THEN IF (NEW.precio_venta<>OLD.precio_venta) THEN INSERT INTO PRODUCTO_ACTUALIZADO VALUES (OLD.producto_id, OLD.nombre, OLD.precio_venta, NEW.precio_venta); END IF; RETURN NULL; END; $$ Language 'plpgsql'; Poner ejemplo del uso (auditoria de tablas)

27 Ejemplo Agora se cria o trigger que chamará a função anterior: CREATE TRIGGER actualizar_producto AFTER UPDATE ON PRODUCTO FOR EACH EXECUTE PROCEDURE producto_actualizado_tri(); Poner ejemplo del uso (auditoria de tablas)

28 O Trigger executará a função
produto_actualizado_tri, depois de actualizar um valor do precio_venta na tabela produto e insere os valores na tabela PRODUTO_ACTUALIZADO.

29 Estudio Independiente
Estudiar como se opera sobre el evento TRUNCATE (cap. sobre trigger en plpgsql, documentación de postgreSQL) Conclusiones

30 Ventajas y Desventajas
Permite executar rotinas sem necessidade que o utentes as invoque. Pode-se utilizar uma mesma função trigger desde diferentes triggers. Podem ser um mecanismo de segurança nas BD. Desventajas: Nunca se pode chamar directamente. Põem lento o servidor quando se executam sobre muitas tuplas. Meter TPI aquí en el asunto de los DBA y sus responsabilidades en una BD. Meter ejemplo de akademos si hacemos un trigger qye si viene tan nombre con 2 le ponemos 3. eso es fraude informatico. Responsable y comprometido

31 Modificar o valor do décimo registro de uma consulta determinada.
Cursores Em ocasiões precisa-se operar sobre um registro determinado do resultado de uma consulta. Exemplo: Modificar o valor do décimo registro de uma consulta determinada. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

32 Cursores Representam consultas SELECT de SQL que se podem operar os registros de modo independente. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

33 Pasos Cursores Declarar o cursor
Abrir o cursor. Depois de abrir o cursor, o ponteiro do cursor assinalará à primeira fila(se existe). Processar o cursor. FETCH obter informação do cursor até que chegue ao final. MOVE permite mover a um lugar determinado do cursor. Fechar o cursor. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

34 DECLARE Nome CURSOR FOR Select…; Nome refcursor;
Cursores Declarar el Cursor DECLARE Nome CURSOR FOR Select…; Nome refcursor; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

35 OPEN nombre_cursor for select …
Cursores Abrir cursor OPEN nombre_cursor OPEN nombre_cursor for select … Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

36 FETCH cursor INTO listaDeVariables FETCH LAST FROM curs3 INTO x;
Cursores A sentença FETCH é a encarregada de percorrer o cursor e ir processando os valores do mesmo: retorna o valor e move o ponteiro do cursor. FETCH cursor INTO listaDeVariables FETCH LAST FROM curs3 INTO x; FETCH RELATIVE -2 FROM curs4 INTO x; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

37 Cursores Open cursorProvincias LOOP FETCH cursorProvincias INTO v_nombre EXIT WHEN... --aquí se pondría la condición de salida... --instrucciones de proceso de los datos del cursor END LOOP; Close cursorProvincias Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

38 Cursores declare temp cursor for select empid from empleado; var integer; Begin open temp; loop fetch temp into var; EXIT WHEN not found ; if var> 4 then return next var; end if; end loop; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

39 MOVE RELATIVE -2 FROM curs3; MOVE FORWARD 2 FROM curs3;
Cursores MOVE 4 from curs1; MOVE LAST FROM curs3; MOVE RELATIVE -2 FROM curs3; MOVE FORWARD 2 FROM curs3; ...FETCH curs3 INTO var1; 

40 Cursores con parametros
DECLARE cur_personas CURSOR (dep NUMBER, pue VARCHAR2 (20)) FOR SELECT nombre, apellidos FROM empleados WHERE departamento=dep AND puesto=pue; BEGIN OPEN cur_personas (12,’administrativo’); CLOSE cur_personas; End; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

41 Permitem situar-se em filas específicas do conjunto de resultados.
Cursores Ventajas: Permitem situar-se em filas específicas do conjunto de resultados. Recuperam uma fila ou bloco de filas da posição atual no conjunto de resultados. Podem utilizar-se em funções. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

42 Cursores: Desventajas Reservam recursos no servidor, como por exemplo processos, armazenamento temporário, etc. Se um cursor não se fecha de maneira correta, o recurso não será libertado até que a sessão SQL (conexão) seja fechada.

43 ¿Sobre que evento se pode definir um trigger?
Conclusiones ¿Sobre que evento se pode definir um trigger? ¿Em quantos passos define-se um trigger em PostgreSQL? ¿Quais são as operações que se realizam sobre os cursores? ¿Sina fecham-se correctamente os cursores pode trazer consumo de cor desnecessário? Perguntas que respondan al cumplimiento del objetivo : Identificar las estructuras y elementos que componen los triggers y cursores


Descargar ppt "Banco de Dados II IMPLEMENTAÇÃO E OPTIMIZAÇÃO DE BANCOS DE DADOS"

Presentaciones similares


Anuncios Google