SlideShare uma empresa Scribd logo
DB2 Express-C 9.5 Sistemas de Bancos de Dados - Univates Bruno Dadalt Zambiazi
DB2 Gerenciador de bancos relacionais com suporte a XML; Lançado em 1983 pela  IBM ; SGBD de grande porte e alto desempenho; Stored Procedures podem ser escritas em diversas linguagens; Versões para servidores Windows, Linux, Unix, Mainframes e PDA’s; Versão gratuita:  Express-C  (2006).
DB2 - Versões
Controle de Transações
Transações “ Executar uma rotina e, durante a mesma, parar o servidor. Iniciar novamente o servidor, verificando se a transação funcionou corretamente.” Método : execução de um rotina responsável pela inserção de 425 registros na tabela  retiradas ; Mensagem : "Erro fatal: [jcc][t4][2055][11259][4.8.87] O gerenciador de banco de dados não está apto a aceitar novos pedidos, todos os pedidos em progresso foram terminados, ou este pedido específico foi terminado devido a condições de erro inesperadas detectadas no sistema de destino. ERRORCODE=-4499, SQLSTATE=58009"; Nº de registros na tabela  antes de parar o servidor :  0 ; Nº de registros na tabela  após parar o servidor :  0 ; Conclusão : passou no teste, pois nenhum registro foi inserido ao ocorrer algum problema durante a transação.
Transações “ Executar duas rotinas de forma simultânea e, quando uma delas indicar que terminou, parar o servidor. Iniciar novamente o servidor e verificar se a transação que terminou teve os dados efetivados e se a outra teve as atualizações desfeitas.” Método : execução de um rotina para inserção de 25 registros na tabela  exemplares  e outra pela pela inserção de 440 registros na tabela  retiradas ; Mensagem : "Erro fatal: [jcc][t4][2055][11259][4.8.87] O gerenciador de banco de dados não está apto a aceitar novos pedidos, todos os pedidos em progresso foram terminados, ou este pedido específico foi terminado devido a condições de erro inesperadas detectadas no sistema de destino. ERRORCODE=-4499, SQLSTATE=58009"; Nº de registros na tabela  exemplares  antes de parar o servidor :  500 ; Nº de registros na tabela  retiradas  antes de parar o servidor :  0 ; Nº de registros na tabela  exemplares  após parar o servidor :  525 ; Nº de registros na tabela  retiradas  após parar o servidor :  0 ; Conclusão : passou no teste, pois a transação que estava aberta no momento da interrupção do servidor não teve as suas atualizações efetivadas.
Controle de Concorrência
Concorrência – Níveis de Isolamento Uncommited Read  (Leitura de dados não finalizados) Menor nível de isolamento, maior nível de concorrência; Não há bloqueios em operações de consultas; Operações de atualizações ocorrem da mesma forma que o Cursor Stability; Também conhecido como Dirty Read (Leitura Suja).   Cursor Stability  (Estabilidade do cursor) É o nível de isolamento padrão do DB2; Oferece o menor nível de bloqueio; Operações de consulta bloqueiam a linha até a captura; Operações de atualização bloqueiam até o fim da transação.
Concorrência – Níveis de Isolamento Read Stability   (Estabilidade da leitura) Todas as linhas que fazem parte da operação são bloqueadas até o fim da transação; Usa um grau moderado de bloqueio. Repeatable Read   (Leitura repetida) Maior nível de isolamento, menor nível de concorrência; O bloqueio é feito em qualquer linha, mesmo que esta não faça parte do resultado final; Nada pode ser feito antes do término da primeira operação em processamento.
Concorrência – Bloqueio Podem ocorrer à nível de tabela ou de linhas; Existem dois tipos: Bloqueios Divididos (Share Locks) Acontecem quando uma aplicação/transação realiza a leitura de dados e impede que os mesmos sofram alterações por outras aplicações/transações. Bloqueios Exclusivos (Exclusive Locks) Acontecem quando uma aplicação/transação quer atualizar, inserir ou remover alguma linha.
Concorrência – Níveis de Isolamento
Concorrência “ Executar duas rotinas simultâneas que alteram dados na tabela  retiradas , para verificar se uma transação interfere em outra.” Método : a primeira rotina consultou as  retiradas  do mês  03/2010 , de dois em dois dias, adicionando um dia à data de retirada e atualizando o registro. A segunda rotina consultou as  retiradas  de  20 usuários  sorteados, subtraindo um dia à data da retirada; Registro : retirada  29780 ; Datas (antiga e nova) da retirada na primeira rotina : 01/03 e 02/03; Horário da atualização : 09:48: 32:609 ; Datas (antiga e nova) da retirada na segunda rotina : 02/03 e 01/03; Horário da atualização : 09:48: 33:484 ; Conclusão : passou no teste, visto que cada processo de consulta e atualização era uma nova transação.
Otimização de Consultas
Otimização de Consultas select  reti.id_retirada ,  usua.nm_usuario ,  aten.nm_atendente ,  reti.id_livro ,  cida.nm_cidade from  user.retiradas reti ,  user.usuarios usua ,  user.atendentes aten ,  user.cidades cida where (  reti.id_usuario  = usua.id_usuario and reti.id_atendente = aten.id_atendente and usua.id_cidade  = cida.id_cidade ) and  (  usua.id_cidade = aten.id_cidade or usua.id_cidade = 1416 ) Tempo decorrido : Sem índices: 0:00: 05:81 Com índices: 0:00: 01:12 Índices criados: reti.id_usuario reti.id_atendente usua.id_cidade aten.id_cidade
Plano – Sem Índices
Plano – Com Índices
Otimização de Consultas select  aten.id_atendente ,  aten.nm_atendente ,  count( reti.id_retirada ) from  user.atendentes aten ,  user.retiradas  reti Where aten.id_atendente = reti.id_atendente group  by aten.id_atendente ,  aten.nm_atendente having  count( reti.id_retirada )  >=  all( select count( reti2.id_retirada ) from  user.retiradas reti2 group  by reti2.id_atendente ) Tempo decorrido : Original:  0:00: 10:39 Alterada: 0:00: 06:57 select aten.id_atendente ,  aten.nm_atendente ,  count( reti.id_retirada ) from  user.atendentes aten ,  user.retiradas  reti where aten.id_atendente = reti.id_atendente group  by aten.id_atendente ,  aten.nm_atendente order  by qt_atendimentos desc fetch  first 1 rows only
Replicação de Dados
Replicação Bidirecional com um mestre Igual ao modelo Master-Slave; Nomenclatura: Source e Target; O source (mestre) precisa ter um Capture rodando para capturar as alterações; Todos os targets (escravos) precisam de um Apply para aplicar as alterações;
Replicação – Master-Slave
Replicação Bidirecional sem um mestre Igual ao modelo Multi-Master; Nomenclatura: Source e Target; Ambas as partes precisam ter um Capture rodando para capturar as alterações; Ambas as partes precisam ter um Apply para aplicar as alterações nos outros servidores; Ocorre de forma assíncrona.
Replicação – Multi-Master
Suporte/recursos XML
XML - Armazenamento XML – Enabled Possui como núcleo o modelo relacional; Modelo  CLOB/Varchar : Armazena uma String não analisada sintaticamente; Na consulta, é necessário analisar a String para trabalhar com os dados; Modelo  Shredding (Fragmentação) : Documento é dividido em pequenas partes que serão armazenadas em tabelas; Mudanças no XML não são aplicadas facilmente.
XML - Armazenamento XML - Enabled
XML - Armazenamento XML Nativo (pureXML) Possui como núcleo o modelo de dados hierárquico; Acesso aos dados:  SQL ,  SQL/X ,  XQuery ,  XPath ; Instruções são processadas nativamente, ao invés de serem convertidas para SQL; DB2 é o único SGBD que dá suporte ao XML Nativo.
XML - Exemplos CREATE TABLE clientes(  id_cliente INT PRIMARY KEY NOT NULL , nm_cliente VARCHAR( 100 ) NOT NULL , xml_contatos XML ); INSERT INTO  clientes( id_cliente, nm_cliente, xml_contatos )  VALUES( 1, ‘Bruno’, ‘<endereco>Rua Sem fim, nº 666</endereco>’ );
XML – Funções e Exemplos SELECT nm_livro FROM livros WHERE XMLEXISTS( ‘$autores/autor[nome=“Bruno”]’ ); SELECT XMLQUERY( ‘$autores/autor’ ) FROM livros WHERE nm_livro = ‘Sistemas de Bancos de Dados’; SELECT nm_usuario, XMLQUERY( ‘for $x in $contatos/emails return <p>{$x}</p>’ ) AS emails FROM usuarios WHERE nm_usuario LIKE ‘Bruno%’; SELECT XMLELEMENT( NAME “id_usuario”, id ), XMLELEMENT( NAME “nm_usuario”, nome ) FROM usuarios;

Mais conteúdo relacionado

Mais procurados

Oracle Data Guard
Oracle Data GuardOracle Data Guard
Oracle Data Guard
Washington Luiz Vaz
 
High Avaiability Architeture with Oracle Data Guard Broker
High Avaiability Architeture with Oracle Data Guard BrokerHigh Avaiability Architeture with Oracle Data Guard Broker
High Avaiability Architeture with Oracle Data Guard Broker
Jonatan Ritter
 
Apostila Oracle 10g
Apostila Oracle 10gApostila Oracle 10g
Apostila Oracle 10g
Andre Nascimento
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
Wagner Bianchi
 
Treinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19cTreinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19c
Douglas Paiva de Sousa
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
Fabrício Catae
 
Oracle OEM Grid Control 11g
Oracle OEM Grid Control 11gOracle OEM Grid Control 11g
Oracle OEM Grid Control 11g
Rodrigo Almeida
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de Dados
Daniela Macedo
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dados
Rodrigo Almeida
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
Eduardo Lopes
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
Cezar Souza
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
Diogo Biazus
 
Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para Exadata
Rodrigo Almeida
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
Matheus Espanhol
 
PostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesPostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicações
Fernando Ike
 
PostgreSQL Conceitos e aplicações
PostgreSQL  Conceitos e aplicaçõesPostgreSQL  Conceitos e aplicações
PostgreSQL Conceitos e aplicações
Fabio Telles Rodriguez
 
Alta Disponibilidade TechEd
Alta Disponibilidade TechEdAlta Disponibilidade TechEd
Alta Disponibilidade TechEd
Viviane_ribeiro
 
Workshop SQL Server 2012
Workshop SQL Server 2012Workshop SQL Server 2012
Workshop SQL Server 2012
Viviane_ribeiro
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
Dirceu Resende
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
Rodrigo Crespi
 

Mais procurados (20)

Oracle Data Guard
Oracle Data GuardOracle Data Guard
Oracle Data Guard
 
High Avaiability Architeture with Oracle Data Guard Broker
High Avaiability Architeture with Oracle Data Guard BrokerHigh Avaiability Architeture with Oracle Data Guard Broker
High Avaiability Architeture with Oracle Data Guard Broker
 
Apostila Oracle 10g
Apostila Oracle 10gApostila Oracle 10g
Apostila Oracle 10g
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
Treinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19cTreinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19c
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
 
Oracle OEM Grid Control 11g
Oracle OEM Grid Control 11gOracle OEM Grid Control 11g
Oracle OEM Grid Control 11g
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de Dados
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dados
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para Exadata
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
PostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesPostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicações
 
PostgreSQL Conceitos e aplicações
PostgreSQL  Conceitos e aplicaçõesPostgreSQL  Conceitos e aplicações
PostgreSQL Conceitos e aplicações
 
Alta Disponibilidade TechEd
Alta Disponibilidade TechEdAlta Disponibilidade TechEd
Alta Disponibilidade TechEd
 
Workshop SQL Server 2012
Workshop SQL Server 2012Workshop SQL Server 2012
Workshop SQL Server 2012
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
 

Semelhante a DB2 Express-C

Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
Glauco Moraes
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
Sandro Freitas
 
Redes de computador
Redes de computadorRedes de computador
Redes de computador
tecnicacomputador
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
taniamaciel
 
Monolith - An epic journey
Monolith - An epic journeyMonolith - An epic journey
Monolith - An epic journey
Fabricio Goncalves
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016
Roberto Fonseca
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
Andre Danelon
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Issac Nolis Ohasi
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de Concorrência
Juliano Padilha
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
Eduardo Legatti
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Marcos William Valentini
 
4_horas_microsoft
4_horas_microsoft4_horas_microsoft
4_horas_microsoft
arthurjosemberg
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
Deep Tech Brasil
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Wagner Bianchi
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Leonardo Pedroso Costa
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um Incidente
Alan Carlos
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto Alegre
Rafael Gomes
 
Mainframe Performance Review
Mainframe Performance ReviewMainframe Performance Review
Mainframe Performance Review
Joao Galdino Mello de Souza
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
Locaweb
 

Semelhante a DB2 Express-C (20)

Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Redes de computador
Redes de computadorRedes de computador
Redes de computador
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 
Monolith - An epic journey
Monolith - An epic journeyMonolith - An epic journey
Monolith - An epic journey
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAP
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de Concorrência
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
4_horas_microsoft
4_horas_microsoft4_horas_microsoft
4_horas_microsoft
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um Incidente
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto Alegre
 
Mainframe Performance Review
Mainframe Performance ReviewMainframe Performance Review
Mainframe Performance Review
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 

Mais de Bruno Dadalt Zambiazi

Análise de ferramentas para gestão de regras de negócio em sistemas de inform...
Análise de ferramentas para gestão de regras de negócio em sistemas de inform...Análise de ferramentas para gestão de regras de negócio em sistemas de inform...
Análise de ferramentas para gestão de regras de negócio em sistemas de inform...
Bruno Dadalt Zambiazi
 
Hadoop
HadoopHadoop
Os porquês do português
Os porquês do portuguêsOs porquês do português
Os porquês do português
Bruno Dadalt Zambiazi
 
Hibernate
HibernateHibernate
Avalição Heurística de aplicativos Desktop e Web
Avalição Heurística de aplicativos Desktop e WebAvalição Heurística de aplicativos Desktop e Web
Avalição Heurística de aplicativos Desktop e Web
Bruno Dadalt Zambiazi
 
[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com
Bruno Dadalt Zambiazi
 
[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com
Bruno Dadalt Zambiazi
 

Mais de Bruno Dadalt Zambiazi (7)

Análise de ferramentas para gestão de regras de negócio em sistemas de inform...
Análise de ferramentas para gestão de regras de negócio em sistemas de inform...Análise de ferramentas para gestão de regras de negócio em sistemas de inform...
Análise de ferramentas para gestão de regras de negócio em sistemas de inform...
 
Hadoop
HadoopHadoop
Hadoop
 
Os porquês do português
Os porquês do portuguêsOs porquês do português
Os porquês do português
 
Hibernate
HibernateHibernate
Hibernate
 
Avalição Heurística de aplicativos Desktop e Web
Avalição Heurística de aplicativos Desktop e WebAvalição Heurística de aplicativos Desktop e Web
Avalição Heurística de aplicativos Desktop e Web
 
[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com
 
[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com
 

DB2 Express-C

  • 1. DB2 Express-C 9.5 Sistemas de Bancos de Dados - Univates Bruno Dadalt Zambiazi
  • 2. DB2 Gerenciador de bancos relacionais com suporte a XML; Lançado em 1983 pela IBM ; SGBD de grande porte e alto desempenho; Stored Procedures podem ser escritas em diversas linguagens; Versões para servidores Windows, Linux, Unix, Mainframes e PDA’s; Versão gratuita: Express-C (2006).
  • 5. Transações “ Executar uma rotina e, durante a mesma, parar o servidor. Iniciar novamente o servidor, verificando se a transação funcionou corretamente.” Método : execução de um rotina responsável pela inserção de 425 registros na tabela retiradas ; Mensagem : &quot;Erro fatal: [jcc][t4][2055][11259][4.8.87] O gerenciador de banco de dados não está apto a aceitar novos pedidos, todos os pedidos em progresso foram terminados, ou este pedido específico foi terminado devido a condições de erro inesperadas detectadas no sistema de destino. ERRORCODE=-4499, SQLSTATE=58009&quot;; Nº de registros na tabela antes de parar o servidor : 0 ; Nº de registros na tabela após parar o servidor : 0 ; Conclusão : passou no teste, pois nenhum registro foi inserido ao ocorrer algum problema durante a transação.
  • 6. Transações “ Executar duas rotinas de forma simultânea e, quando uma delas indicar que terminou, parar o servidor. Iniciar novamente o servidor e verificar se a transação que terminou teve os dados efetivados e se a outra teve as atualizações desfeitas.” Método : execução de um rotina para inserção de 25 registros na tabela exemplares e outra pela pela inserção de 440 registros na tabela retiradas ; Mensagem : &quot;Erro fatal: [jcc][t4][2055][11259][4.8.87] O gerenciador de banco de dados não está apto a aceitar novos pedidos, todos os pedidos em progresso foram terminados, ou este pedido específico foi terminado devido a condições de erro inesperadas detectadas no sistema de destino. ERRORCODE=-4499, SQLSTATE=58009&quot;; Nº de registros na tabela exemplares antes de parar o servidor : 500 ; Nº de registros na tabela retiradas antes de parar o servidor : 0 ; Nº de registros na tabela exemplares após parar o servidor : 525 ; Nº de registros na tabela retiradas após parar o servidor : 0 ; Conclusão : passou no teste, pois a transação que estava aberta no momento da interrupção do servidor não teve as suas atualizações efetivadas.
  • 8. Concorrência – Níveis de Isolamento Uncommited Read (Leitura de dados não finalizados) Menor nível de isolamento, maior nível de concorrência; Não há bloqueios em operações de consultas; Operações de atualizações ocorrem da mesma forma que o Cursor Stability; Também conhecido como Dirty Read (Leitura Suja). Cursor Stability (Estabilidade do cursor) É o nível de isolamento padrão do DB2; Oferece o menor nível de bloqueio; Operações de consulta bloqueiam a linha até a captura; Operações de atualização bloqueiam até o fim da transação.
  • 9. Concorrência – Níveis de Isolamento Read Stability (Estabilidade da leitura) Todas as linhas que fazem parte da operação são bloqueadas até o fim da transação; Usa um grau moderado de bloqueio. Repeatable Read (Leitura repetida) Maior nível de isolamento, menor nível de concorrência; O bloqueio é feito em qualquer linha, mesmo que esta não faça parte do resultado final; Nada pode ser feito antes do término da primeira operação em processamento.
  • 10. Concorrência – Bloqueio Podem ocorrer à nível de tabela ou de linhas; Existem dois tipos: Bloqueios Divididos (Share Locks) Acontecem quando uma aplicação/transação realiza a leitura de dados e impede que os mesmos sofram alterações por outras aplicações/transações. Bloqueios Exclusivos (Exclusive Locks) Acontecem quando uma aplicação/transação quer atualizar, inserir ou remover alguma linha.
  • 11. Concorrência – Níveis de Isolamento
  • 12. Concorrência “ Executar duas rotinas simultâneas que alteram dados na tabela retiradas , para verificar se uma transação interfere em outra.” Método : a primeira rotina consultou as retiradas do mês 03/2010 , de dois em dois dias, adicionando um dia à data de retirada e atualizando o registro. A segunda rotina consultou as retiradas de 20 usuários sorteados, subtraindo um dia à data da retirada; Registro : retirada 29780 ; Datas (antiga e nova) da retirada na primeira rotina : 01/03 e 02/03; Horário da atualização : 09:48: 32:609 ; Datas (antiga e nova) da retirada na segunda rotina : 02/03 e 01/03; Horário da atualização : 09:48: 33:484 ; Conclusão : passou no teste, visto que cada processo de consulta e atualização era uma nova transação.
  • 14. Otimização de Consultas select reti.id_retirada , usua.nm_usuario , aten.nm_atendente , reti.id_livro , cida.nm_cidade from user.retiradas reti , user.usuarios usua , user.atendentes aten , user.cidades cida where ( reti.id_usuario = usua.id_usuario and reti.id_atendente = aten.id_atendente and usua.id_cidade = cida.id_cidade ) and ( usua.id_cidade = aten.id_cidade or usua.id_cidade = 1416 ) Tempo decorrido : Sem índices: 0:00: 05:81 Com índices: 0:00: 01:12 Índices criados: reti.id_usuario reti.id_atendente usua.id_cidade aten.id_cidade
  • 15. Plano – Sem Índices
  • 16. Plano – Com Índices
  • 17. Otimização de Consultas select aten.id_atendente , aten.nm_atendente , count( reti.id_retirada ) from user.atendentes aten , user.retiradas reti Where aten.id_atendente = reti.id_atendente group by aten.id_atendente , aten.nm_atendente having count( reti.id_retirada ) >= all( select count( reti2.id_retirada ) from user.retiradas reti2 group by reti2.id_atendente ) Tempo decorrido : Original: 0:00: 10:39 Alterada: 0:00: 06:57 select aten.id_atendente , aten.nm_atendente , count( reti.id_retirada ) from user.atendentes aten , user.retiradas reti where aten.id_atendente = reti.id_atendente group by aten.id_atendente , aten.nm_atendente order by qt_atendimentos desc fetch first 1 rows only
  • 19. Replicação Bidirecional com um mestre Igual ao modelo Master-Slave; Nomenclatura: Source e Target; O source (mestre) precisa ter um Capture rodando para capturar as alterações; Todos os targets (escravos) precisam de um Apply para aplicar as alterações;
  • 21. Replicação Bidirecional sem um mestre Igual ao modelo Multi-Master; Nomenclatura: Source e Target; Ambas as partes precisam ter um Capture rodando para capturar as alterações; Ambas as partes precisam ter um Apply para aplicar as alterações nos outros servidores; Ocorre de forma assíncrona.
  • 24. XML - Armazenamento XML – Enabled Possui como núcleo o modelo relacional; Modelo CLOB/Varchar : Armazena uma String não analisada sintaticamente; Na consulta, é necessário analisar a String para trabalhar com os dados; Modelo Shredding (Fragmentação) : Documento é dividido em pequenas partes que serão armazenadas em tabelas; Mudanças no XML não são aplicadas facilmente.
  • 25. XML - Armazenamento XML - Enabled
  • 26. XML - Armazenamento XML Nativo (pureXML) Possui como núcleo o modelo de dados hierárquico; Acesso aos dados: SQL , SQL/X , XQuery , XPath ; Instruções são processadas nativamente, ao invés de serem convertidas para SQL; DB2 é o único SGBD que dá suporte ao XML Nativo.
  • 27. XML - Exemplos CREATE TABLE clientes( id_cliente INT PRIMARY KEY NOT NULL , nm_cliente VARCHAR( 100 ) NOT NULL , xml_contatos XML ); INSERT INTO clientes( id_cliente, nm_cliente, xml_contatos ) VALUES( 1, ‘Bruno’, ‘<endereco>Rua Sem fim, nº 666</endereco>’ );
  • 28. XML – Funções e Exemplos SELECT nm_livro FROM livros WHERE XMLEXISTS( ‘$autores/autor[nome=“Bruno”]’ ); SELECT XMLQUERY( ‘$autores/autor’ ) FROM livros WHERE nm_livro = ‘Sistemas de Bancos de Dados’; SELECT nm_usuario, XMLQUERY( ‘for $x in $contatos/emails return <p>{$x}</p>’ ) AS emails FROM usuarios WHERE nm_usuario LIKE ‘Bruno%’; SELECT XMLELEMENT( NAME “id_usuario”, id ), XMLELEMENT( NAME “nm_usuario”, nome ) FROM usuarios;