{"id":384,"date":"2018-02-16T16:45:38","date_gmt":"2018-02-16T16:45:38","guid":{"rendered":"http:\/\/bufallos.com.br\/bg_br\/?p=384"},"modified":"2018-02-24T12:30:54","modified_gmt":"2018-02-24T12:30:54","slug":"como-melhorar-performance-com-odi-12c","status":"publish","type":"post","link":"http:\/\/bufallos.com.br\/bg_br\/como-melhorar-performance-com-odi-12c\/","title":{"rendered":"Veja como melhorar a performance na carga de dados com ODI 12c"},"content":{"rendered":"<p style=\"text-align: justify;\">Hoje em dia, qualquer projeto que voc\u00ea desenvolver deve ser feito com olho na performance de sua infraestrutura.\u00a0Isso, por que n\u00e3o adianta voc\u00ea desenvolver um baita de um projeto e ele ser custoso pra sua empresa.<\/p>\n<p style=\"text-align: justify;\">Pensando nisso, decidi escrever <strong>2 artigos<\/strong> no qual falarei sobre <strong>Melhoria de Performance com o Oracle Data Integrator 12c.<\/strong><\/p>\n<p style=\"text-align: justify;\">O primeiro tema a ser abordado ser\u00e1 o <strong>Paralelismo na Sess\u00e3o de execu\u00e7\u00e3o do ODI 12c<\/strong> e o segundo falarei sobre o\u00a0<strong>Controle de Sess\u00f5es e Threads pelo ODI 12c<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Com a nova vers\u00e3o do ODI 12c, a Oracle implementou uma camada de intelig\u00eancia onde o <strong>ODI<\/strong> identifica automaticamente as sess\u00f5es que podem ser executadas simultaneamente e gera o c\u00f3digo pra sua <strong>execu\u00e7\u00e3o paralela<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Por exemplo, na camada de ORIGEM (SOURCE) voc\u00ea precisa buscar dados de fontes totalmente distintas. Acontece que essas fontes ir\u00e3o alimentar o mesmo destino. <strong>O que o ODI faz?<\/strong> Ele junta as duas fontes (que est\u00e3o em servidores diferentes) <strong>na mesma sess\u00e3o<\/strong>, conforme imagem abaixo.<\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-386\" src=\"http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/tabelas.jpg\" alt=\"\" width=\"567\" height=\"309\" srcset=\"http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/tabelas.jpg 567w, http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/tabelas-300x163.jpg 300w\" sizes=\"(max-width: 567px) 100vw, 567px\" \/><\/p>\n<p style=\"text-align: justify;\">Desta forma, ele executa o processamento da carga fazendo <strong>paralelismo<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Bom, o que pra muitos isto pode parecer como algo muito bom j\u00e1 que tudo ser\u00e1 executado ao mesmo tempo e pode parecer um processo otimizado,<em><strong> eu vejo como algo delicado.<\/strong><\/em>\u00a0 Por que o uso de paralelismo, <strong>nessas condi\u00e7\u00f5es onde as FONTES est\u00e3o em lugares distintos<\/strong>, \u00e9 justamente um dos motivos que fazem com que sua performance caia.<\/p>\n<p style=\"text-align: justify;\">Imagine se voc\u00ea tiver que fazer v\u00e1rios mapeamentos semelhantes ao que foi mostrado na imagem e al\u00e9m disso este mapeamento estiver em modo de execu\u00e7\u00e3o autom\u00e1tica ( obedecendo alguma regra de neg\u00f3cio \/ schedule \/ cen\u00e1rio ) que deve execut\u00e1-lo de hora em hora. <strong>Seu servidor n\u00e3o vai guentar<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Para solucionar isso, recomendo que (<em><strong>como boa pr\u00e1tica<\/strong><\/em>), voc\u00ea separe as FONTES (Tabelas) para que cada uma tenha sua pr\u00f3pria unidade na sess\u00e3o, como na imagem abaixo .<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-385\" src=\"http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/tabelas2.jpg\" alt=\"\" width=\"558\" height=\"353\" srcset=\"http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/tabelas2.jpg 558w, http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/tabelas2-300x190.jpg 300w\" sizes=\"(max-width: 558px) 100vw, 558px\" \/><\/p>\n<p style=\"text-align: justify;\">Desta foram, o ODI ir\u00e1 entender o que voc\u00ea est\u00e1 querendo fazer. Ele ir\u00e1 executar os processos de forma sequencial analisando qual deve rodar primeiro. Assim, <strong>seu processo ficar\u00e1 muito mais leve e r\u00e1pido<\/strong> sem degradar a performance de sua infraestrutura.<\/p>\n<p style=\"text-align: justify;\">Al\u00e9m disso, <strong>existe um ponto interessante a ser abordado<\/strong> nesta quest\u00e3o do paralelismo que \u00e9 o <strong>&#8220;Gerenciamento das Conex\u00f5es&#8221;<\/strong>.<\/p>\n<p style=\"text-align: justify;\"><strong>Por que estamos abordando que manter o paralelismo nos mapeamentos prejudica sua performance ?<\/strong><\/p>\n<p style=\"text-align: justify;\">Cada mapeamento quando est\u00e1 em modo de execu\u00e7\u00e3o paralela, assume que cada tarefa ter\u00e1 sua pr\u00f3pria conex\u00e3o a partir do Pool de Conex\u00f5es. Por isso, se voc\u00ea tiver mapeamentos altamente paralelos, o tamanho do pool de conex\u00f5es deve ser de acordo com o n\u00edvel de paralelismo. Ou seja, <strong>voc\u00ea ir\u00e1 ter mais de uma conex\u00e3o <\/strong>para executar o mesmo mapeamento<strong> ( carga de dados).<\/strong><\/p>\n<p style=\"text-align: justify;\">Existem tr\u00eas pontos que podemos citar como candidatos ao Paralelismo ( que voc\u00ea pode evitar) que s\u00e3o:<br \/>\n1 &#8211; Quando os dados de Origem s\u00e3o carregados na \u00e1rea de teste;<br \/>\n2 &#8211; Quando os dados est\u00e3o em Origens distintas;<br \/>\n<span style=\"color: #ff0000;\"><strong>Sacada<\/strong> <\/span>: Voc\u00ea pode criar uma <a href=\"http:\/\/bufallos.com.br\/bg_br\/staging-area\/\" target=\"_blank\" rel=\"bookmark noopener\">Staging Area<\/a>\u00a0pra carregar os dados que precisa e executar a carga em uma estrutura s\u00f3.<br \/>\n3 &#8211; Quando os dados precisam alimentar v\u00e1rios Destinos;<\/p>\n<p style=\"text-align: justify;\">Acredito que adotando essas boas pr\u00e1ticas voc\u00ea ter\u00e1 um excelente mapeamento e uma otimiza\u00e7\u00e3o de processamento muito satisfat\u00f3ria.<\/p>\n<p style=\"text-align: justify;\">Pessoal, fico por aqui.<\/p>\n<p style=\"text-align: justify;\">Tendo alguma d\u00favida, entre em contato.<\/p>\n<p style=\"text-align: justify;\">Forte abra\u00e7o.<\/p>\n<p style=\"text-align: justify;\">Eduardo Santana<br \/>\nbufallos@bufallos.com.br<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoje em dia, qualquer projeto que voc\u00ea desenvolver deve ser feito com olho na performance de sua infraestrutura.\u00a0Isso, por que<\/p>\n","protected":false},"author":1,"featured_media":387,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[42,41,35,40],"_links":{"self":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts\/384"}],"collection":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/comments?post=384"}],"version-history":[{"count":1,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts\/384\/revisions"}],"predecessor-version":[{"id":388,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts\/384\/revisions\/388"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/media\/387"}],"wp:attachment":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/media?parent=384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/categories?post=384"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/tags?post=384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}