SlideShare uma empresa Scribd logo
PentahoDay2017
Design Patterns para Tuning
Pentaho com Ctools
Eduardo Alves de Carvalho
1
Objetivo
Em primeiro lugar, o título do curso é
ambicioso, mas não tem a intenção de elencar
<todas> as melhorias possíveis e/ou necessárias
para uma solução Pentaho. Mas sim, em
ajudar a lembrar de pontos importantes, que
às vezes podem passar desapercebidos .
2
PentahoDay2017
Eduardo Alves
de Carvalho
Consultor Sênior na e-
Setorial Business
Analytics
www.e-Setorial.com.br
3
Palestrante
Warm Up
Colocando o Pentaho para funcionar
• Para nossos estudos, vamos criar um plugin Pentaho
simples, com apenas um filtro e um gráfico;
• Pelo menu Tools/AppBuider, crie um plugin com o
nome “DesignPatternsPentaho" e um Dashboard
com o nome “pentahoday”;
• Aplique um template, por exemplo o "Filter
Template”;
• Crie um Simple Parameter com o nome “anoParam"
e valor “All Years”;
4
Warm Up - 2
Crie dois data sources do tipo
mdx over mondrianJndi
Name dsFiltroAno
Jndi SampleData
Mondrian Schema SteelWheels
Output Columns 0
Query WITH
SET [~COLUMNS] AS
{[Product].[All Products]}
SET [~ROWS] AS
Hierarchize({{[Time].[All Years]}, {[Time].
[Years].Members}})
SELECT
NON EMPTY [~COLUMNS] ON COLUMNS,
NON EMPTY [~ROWS] ON ROWS
FROM [SteelWheelsSales]
5
Warm Up - 3
Name dsVendasPaisLinhaAno
Jndi SampleData
Mondrian Schema SteelWheels
Query
with set [~FILTER] as '{[Time].[${anoParam}]}'
set [~COLUMNS] as '{[Product].[Line].Members}'
set [~ROWS] as '{[Markets].[Country].Members}'
select NON EMPTY Crossjoin([~COLUMNS], {[Measures].
[Sales]}) ON COLUMNS,
NON EMPTY [~ROWS] ON ROWS
from [SteelWheelsSales]
where [~FILTER]
Parameters anoParam anoParam
6
Crie dois data sources do tipo
mdx over mondrianJndi
Warm Up - 4
7
Inclua um componente do tipo
Radiobutton Component
Warm Up - 5
8
Inclua um componente do tipo
CCC Sunburst Chart
Warm Up - 6
9
Dashboard
Pentaho Design
Patterns
10
Dicas importantes
Pentaho Design Patterns
1 - Ajuste a Inicialização do Pentaho
Server
• No Linux, edite o arquivo:
./pentaho-server/start-pentaho.sh;
ou, no windows
.pentaho-serverstart-pentaho.bat
• Servidor Headless
Se o seu servidor não utiliza interface gráfica, adicione a
opção
-Djava.awt.headless = true
11
• Memória
Edite os parâmetros que limitam o uso de memória pela JVM. O
primeiro parâmetro indica a quantidade de memória inicial e o
segundo o máximo de memória disponível para o java.
-Djava.awt.headless=true -Xms1024m –Xmx16G -
XX:MaxPermSize=256m
• Encode
Adicione/Verifique -> no pentaho 7, finalmente, já vem como default
-Dfile.encoding=utf8
• Timezone
-Duser.timezone=America/Sao_Paulo
12
1 - Ajuste a Inicialização do Pentaho Server
• Exemplo de configuração
CATALINA_OPTS="-Djava.awt.headless = true -
Xms2048m –Xmx16G -XX:MaxPermSize=256m -
Dsun.rmi.dgc.client.gcInterval=3600000 -
Dsun.rmi.dgc.server.gcInterval=3600000 -
Dfile.encoding=utf8 -Duser.timezone=America/
Sao_Paulo -DDI_HOME="$DI_HOME""
13
1 - Ajuste a Inicialização do Pentaho Server
Pentaho Design Patterns
2 - Utilize os Logs Pentaho
• Os logs do BI Server são gerados por uma API
Java chamada Log4J, do projeto Apache e
armazena informações importantes da
plataforma na pasta
./pentaho-server/tomcat/logs.
14
Mude o Delimitador para “tab” ou para “;”
Para facilitar a visualização dos dados Mude o Delimitador para “tab” ou para “;”
Tab ajuda a leitura no console e editores de texto. O ponto e vírgula facilita
leitura em planilhas de calculo
1. Abra o arquivo
tomcat/webapps/pentaho/WEB-INF/classes/log4j.xml
2. Procure a linha que formata a saída das informações
<param name="ConversionPattern" (linha 38)
3. Troque o separador, de espaço, para “tab” (t) ou para “;” alterando a string
“%d %-5p [%c] %m%n” para "%dt%-5pt[%c]t %m%n"
4. Salve. Se o BI Server estiver rodando, pare-o, apague os arquivos do log e
suba o serviço novamente.
15
2 - Utilize os Logs Pentaho
Habilite mais logs somente para testes e debug
1. Para configurar o nível de alerta para os logs do pentaho, ajuste o valor
da tag "Threshold" (linha 53) para um dos possíveis valores: ALL, DEBUG,
ERROR, FATAL, INFO, OFF, TRACCE ou WARN https://logging.apache.org/
log4j/1.2/apidocs/org/apache/log4j/Level.html
<param name="Threshold" value="DEBUG"/>
2. Conforme a necessidade, descomente o intervalo de linhas abaixo, para
habilitar os logs do Mondrian, das Consultas MDX e o das Consultas SQL.
Em cada categoria pode-se ajustar o nível do log, ajustando a tag <priority
value="DEBUG"/>
• mondrian.log: linhas 145 e 166;
• mondrian_mdx.log: linhas 172 e 187;
• mondrian_sql.log: linhas 193 e 208.
16
2 - Utilize os Logs Pentaho
Outros arquivos possuem
configuração para seus logs
• pentaho-solutions/system/cda/log4j.xml
• pentaho-solutions/system/karaf/etc/
org.ops4j.pax.logging.cfg
• pentaho-solutions/system/osgi/log4j.xml
17
2 - Utilize os Logs Pentaho
Analise os Logs de Auditoria
./pentaho-server/pentaho-solutions/system/logs/
audit/PentahoAuditLog.log
• Quem é o maior usuário em quantidade de acessos?
• Quem é o maior em tempo de execução?
• Quais comandos geraram erros durante a última
semana?
• Quais as queries mais demoradas?
18
2 - Utilize os Logs Pentaho
Como utilizar estes logs
Logs do Tomcat não são afetados pelas configurações tratadas aqui
• catalina.aaaa-mm-dd.log
• catalina.out log do dia atual
Log do Pentaho
• pentaho.log
Logs do Mondrian
• mondrian.log
• mondrian_sql.log
• mondrian_mdx.log
Logs de Auditoria
• pentaho-solutions/system/logs/audit/PentahoAuditLog.log
19
2 - Utilize os Logs Pentaho
Leia os logs e encontre as informações
relevantes
• Leia no terminal Linux tail –f pentaho.log
• Importe para o Excel ou LibreOffice Calc utilizando os
delimitadores configuradoss
• Abra com um editor de Textos com realce de sintaxe. Procure por
Verilog, Python ou alguma sintaxe que facilite a leitura dos
diferentes tipos de dados em um log.
• Plugin Pentaho CE Audit, do nosso amigo Caio, se utiliza dessas
informações para alimentar um cubo de estatísticas dos usuários.
Vale verificar se roda no pentaho 7 e também se evoluiu e funciona
com todos os bancos de dados (além do HsqlDb e PostgreSQL)
https://github.com/it4biz/pentaho-ce-audit/releases/tag/2016.05.19
20
2 - Utilize os Logs Pentaho
Verifique:
a) Se as queries SQL são coerentes
b) Se as queries estão usando o índice que você
espera
c) Se o seu database é coerente
d) Se os metadados do cubo são coerentes
e) Se as consultas MDX estão coerentes
21
2 - Utilize os Logs Pentaho
Query Showplan
22
2 - Utilize os Logs Pentaho
SGBDR Exemplo de Comando Referência
MySQL EXPLAIN {Select ...} https://dev.mysql.com/doc/workbench/en/wb-tutorial-visual-
explain-dbt3.html
PostgreSQL Explain Select xpto from dual; https://www.postgresql.org/docs/9.5/static/using-explain.html
SQL Server USE AdventureWorks2012;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.Product
WHERE ProductID = 905;
GO
SET SHOWPLAN TEXT OFF;
https://technet.microsoft.com/en-us/library/ms176005(v=sql.
105).aspx
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-
showplan-text-transact-sql
Oracle EXPLAIN PLAN FOR
SELECT last_name FROM employees;
https://docs.oracle.com/cd/B10501_01/server.920/a96533/
ex_plan.htm
Sybase set showplan on
go
exec proc A
go
http://infocenter.sybase.com/help/index.jsp?topic=/
com.sybase.infocenter.dc00743.1502/html/queryprocessing/
queryprocessing45.htm
Vertica EXPLAIN { SELECT... | INSERT... | UPDATE... COPY... | DELETE... | MERGE... |
EXPORT... }
https://my.vertica.com/docs/7.1.x/HTML/Content/Authoring/
SQLReferenceManual/Statements/EXPLAIN.htm
Pentaho Design Patterns
3 - Apague arquivos desnecessários
• Apague, Mova ou Grave no Banco de Dados
periodicamente os arquivos de auditoria, logs e
temporários
São eles:
• /pentaho-solutions/system/logs/audit/
• /tomcat/logs
• /tomcat/temp
• Plugin Pentaho Log Manager ajuda a apagar os logs
http://localhost:8080/pentaho/plugin/logManager/api
23
Pentaho Design Patterns
4 - Ajuste os Parâmetros Mondrian
As configurações do Mondrian ficam no arquivo ./pentaho-server/
pentaho-solutions/system/mondrian/mondrian.properties
• Ativar o uso de agregadas:
mondrian.rolap.aggregates.Use = true
mondrian.rolap.aggregates.Read = true
• Limitar o número de linhas retornadas: mondrian.result.limit =
10000
• Limitar a espera pelo fim da consulta: mondrian.rolap.queryTimeout
= 600 (Segundos)
• Não altere: mondrian.trace.level = 1
24
Pentaho Design Patterns
5 - Verifique o cubo com o
Pentaho Schema Workbench
• colunas como inteiro, sempre que possível;
• hierarquias em colunas com índice no banco
de dados, que pode ser composto (mais de uma
coluna);
• habilite o uso do cache em todos os cubos.
25
Pentaho Design Patterns
6 - Use o Pentaho Aggregation Designer
• Abra o PAD;
• Crie a conexão para seu DW;
• Selecione o arquivo XML com os metadados do Cubo a ser
analisado;
Se o cubo tiver restrições por roles, crie uma cópia do xml e
apague todas as roles
• Selecione o Cubo desejado, dentre os publicados no xml escolhido;
• Observe a validação do seu banco e dados
Caso necessário, faça os ajustes na estrutura do banco até que
passe pela validação do PAD
26
27
6 - Use o Pentaho Aggregation Designer
• Indique o limite:
De tempo, em segundos, para que as queries sejam executadas ou;
Quantidade de tabelas agregadas a serem criadas.
• Analise o resultado e faça os ajustes, caso necessários
Perceba se os filtros mais utilizados pela aplicação (os dashboards)
têm uma tabela agregada que os contemple
• Exporte:
O SQL para criar as tabelas agregadas;
O SQL para popular as tabelas agregadas
Os metadados destas tabelas para dentro do xml do cubo
Ficarão indentadas dentro da tabela fato do cubo analisado
28
6 - Use o Pentaho Aggregation Designer
• (Re)publique o cubo no pentaho server
Lembre-se de limpar os caches do Mondrian, do
CDA e do Saiku (caso não utilize o mesmo
mondrian que o Pentaho)
• No job que faz a integração dos dados, logo após
popular a tabela fato, inclua dois steps
Truncate table - selecione todas as tabelas
agregadas;
SQL Script - inclua as queries de insert nas
agregadas.
Pentaho Design Patterns
7 -Habilite no CDE o uso do Cache em
seus data-sources
Em cada datasouce do seu dashboard, deixe
marcada a opção de Cache.
29
Pentaho Design Patterns
8 -Gerencie o CDA com o CDA Cache
Manager
Permite limpar o cache somente do que for
necessário oferecendo todas as urls, oq eu
premite automatizar a limpeza dos caches com
precisão.
• Tools/ CDA Cache Manager ou
• http://localhost:8080/pentaho/plugin/cda/api/
manageCache
30
Pentaho Design Patterns
9 - Use o Utilize o CDA – O Pulo do gato
CDA é chamado por HTTP requests para $BASE_URL/pentaho/plugin/cda/api/.
Documentação oficial disponível em: http://community.pentaho.com/ctools/cda/
#section=web-api-reference
Método suportados:
• doQuery;
• listQueries;
• getCdaList;
• listParameters;
• clearCache;
• listDataAccessTypes.
Exemplo: http://localhost:8080/pentaho/plugin/cda/api/getCdaList
31
32
9 - Use o Utilize o CDA – O Pulo do gato
Abra o arquivo CDA
• Se for um dashboards normal, fora de um plugin pentaho, é só
clicar no .cda e abrir.
• Em nosso caso, que criamos um plugin Sparkl, vamos precisar
do método previewQuery do CDA
http://localhost:8080/pentaho/plugin/cda/api/previewQuery?
path=/system/DesignPatternsPentaho/dashboards/
PentahoDay.cda
• Veja as informações sobre cada query;
• Agende execução de querys;
• Utilize iteradores em seus parâmetros quando for conveniente.
33
9 - Use o Utilize o CDA – O Pulo do gato
Easter Egg
Praticamente um  Easter egg, escondido no cda, no campo
dos params, no mouse hover é apresentada uma
interrogação, que ao ser clicada, mostra esse texto:
Parameter formulas
You can use formulas instead of fixed values for CDA
parameters. Here are some useful examples:
${TODAY()} —> Today’s date
${YESTERDAY()} —> Yesterday’s date
$FOREACH(dataAccess,colIdx,param1=val1,...,paramn=valn)
34
9 - Use o Utilize o CDA – O Pulo do gato
FOREACH
Iterate over the values for colIdx in query dataAccess
with the given parameters. Queries using this
construct return no values, and its main purpose is
to provide parameter ranges for cache warming.
Please refer to the Pentaho Reporting
Engine documentation for a full description of the
syntax. http://wiki.pentaho.com/display/Reporting/
9.+Report+Designer+Formula+Expressions
• Ex.: $FOREACH(dsFiltroAno,0)
Pentaho Design Patterns
10 - Debugue seu código no CDE
Adicione na URL do Dashboard, os parâmetros
abaixo e seja feliz com o inspector de seu
navegador.
“?debug=true", no final da url, ele nao compacta as
coisas. Nao usa cache.
“&debugLevel=5” ajusta o nível do log CDE
http://localhost:8080/pentaho/plugin/
DesignPatternsPentaho/api/pentahoday?
debug=true&debugLevel=5
35
Pentaho Design Patterns
11 - Conheça o CDC - Community
Distributed Cache
Ainda não disponível na versão 7 do Pentaho.
Referências em:
• http://community.pentaho.com/ctools/cdc/
e
• http://pedroalves-bi.blogspot.com.br/2012/05/
cdc-community-distributed-cache.html
36
Pentaho Design Patterns
12 - Saiku – share Mondrian
Faz com que o Saiku CE utilize o mesmo
Mondrian que o Pentaho e, assim, se beneficie
de todos os caches criados
Pentaho até versão 5
cd /pentaho/server/5.01/biserver-ce/pentaho-
solutions/system/saiku
./saiku-shareMondrian.sh -w /pentaho/server/
5.01/biserver-ce/tomcat/webapps/pentaho 37
38
12 - Saiku – share Mondrian
Pentaho 6 ou mais recente
In the plugin, if you remove the mondrian jar
from the plugin, it'll fall back to using the same
jar as the server. You can also follow that shell
script to remove the other jars even if its not
quite automatic any more, to run using the bi
server cache.
Tom
https://groups.google.com/a/saiku.meteorite.bi/
forum/#!topic/user/wFQstt5Gd7o
Contribuição Extra
Contribuiçao para a comunidade
Pentaho
Artigo completo sobre BI com Pentaho
publicado na SQL Magazine, com dados e
fontes:
https://br.groups.yahoo.com/neo/groups/
pentahobr/conversations/messages/16965
39
Obrigado
40
PentahoDay2017
TÍTULO
41
Eduardo Alves de Carvalho
eduardo@e-Setorial.com.br
(48) 3334-2307 | (48) 99953-1260
www.e-Setorial.com.br

Mais conteúdo relacionado

Mais procurados

Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
Henrique Lima
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBA
Dextra
 
Treinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12cTreinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12c
Douglas Paiva de Sousa
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMAN
Eduardo Legatti
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
Matheus Espanhol
 
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
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
Rodrigo Crespi
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
Matheus Espanhol
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
Pedro Fernandes Vieira
 
Alto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLAlto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQL
Jonas Silveira
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
Rodolfo Roim
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
Douglas Paiva de Sousa
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
Wagner Bianchi
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
elliando dias
 
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
 
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
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
Leonardo Medeiros Martins
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2
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
 
Análise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLAnálise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQL
Matheus de Oliveira
 

Mais procurados (20)

Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBA
 
Treinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12cTreinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12c
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMAN
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do 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
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
 
Alto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLAlto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQL
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
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
 
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
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2
 
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
 
Análise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLAnálise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQL
 

Semelhante a Design Patterns para Tuning Pentaho com Ctools

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
Felipe Ribeiro
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Arlindo Santos
 
Cacti
CactiCacti
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
eduardo dias
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Jorge Luís Gregório
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
Dell Technologies
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSA
Fabio Telles Rodriguez
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
Claudio Miranda
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
elliando dias
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
Rodolfo Roim
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto Alegre
Rafael Gomes
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuning
Dell Technologies
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & Migração
Rodrigo Almeida
 
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
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
Andre Danelon
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
Fabrízio Mello
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
Felipe Klerk Signorini
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
Juliana Nascimento
 

Semelhante a Design Patterns para Tuning Pentaho com Ctools (20)

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Cacti
CactiCacti
Cacti
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSA
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto Alegre
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuning
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & Migração
 
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
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 

Design Patterns para Tuning Pentaho com Ctools

  • 1. PentahoDay2017 Design Patterns para Tuning Pentaho com Ctools Eduardo Alves de Carvalho 1
  • 2. Objetivo Em primeiro lugar, o título do curso é ambicioso, mas não tem a intenção de elencar <todas> as melhorias possíveis e/ou necessárias para uma solução Pentaho. Mas sim, em ajudar a lembrar de pontos importantes, que às vezes podem passar desapercebidos . 2 PentahoDay2017
  • 3. Eduardo Alves de Carvalho Consultor Sênior na e- Setorial Business Analytics www.e-Setorial.com.br 3 Palestrante
  • 4. Warm Up Colocando o Pentaho para funcionar • Para nossos estudos, vamos criar um plugin Pentaho simples, com apenas um filtro e um gráfico; • Pelo menu Tools/AppBuider, crie um plugin com o nome “DesignPatternsPentaho" e um Dashboard com o nome “pentahoday”; • Aplique um template, por exemplo o "Filter Template”; • Crie um Simple Parameter com o nome “anoParam" e valor “All Years”; 4
  • 5. Warm Up - 2 Crie dois data sources do tipo mdx over mondrianJndi Name dsFiltroAno Jndi SampleData Mondrian Schema SteelWheels Output Columns 0 Query WITH SET [~COLUMNS] AS {[Product].[All Products]} SET [~ROWS] AS Hierarchize({{[Time].[All Years]}, {[Time]. [Years].Members}}) SELECT NON EMPTY [~COLUMNS] ON COLUMNS, NON EMPTY [~ROWS] ON ROWS FROM [SteelWheelsSales] 5
  • 6. Warm Up - 3 Name dsVendasPaisLinhaAno Jndi SampleData Mondrian Schema SteelWheels Query with set [~FILTER] as '{[Time].[${anoParam}]}' set [~COLUMNS] as '{[Product].[Line].Members}' set [~ROWS] as '{[Markets].[Country].Members}' select NON EMPTY Crossjoin([~COLUMNS], {[Measures]. [Sales]}) ON COLUMNS, NON EMPTY [~ROWS] ON ROWS from [SteelWheelsSales] where [~FILTER] Parameters anoParam anoParam 6 Crie dois data sources do tipo mdx over mondrianJndi
  • 7. Warm Up - 4 7 Inclua um componente do tipo Radiobutton Component
  • 8. Warm Up - 5 8 Inclua um componente do tipo CCC Sunburst Chart
  • 9. Warm Up - 6 9 Dashboard
  • 11. Pentaho Design Patterns 1 - Ajuste a Inicialização do Pentaho Server • No Linux, edite o arquivo: ./pentaho-server/start-pentaho.sh; ou, no windows .pentaho-serverstart-pentaho.bat • Servidor Headless Se o seu servidor não utiliza interface gráfica, adicione a opção -Djava.awt.headless = true 11
  • 12. • Memória Edite os parâmetros que limitam o uso de memória pela JVM. O primeiro parâmetro indica a quantidade de memória inicial e o segundo o máximo de memória disponível para o java. -Djava.awt.headless=true -Xms1024m –Xmx16G - XX:MaxPermSize=256m • Encode Adicione/Verifique -> no pentaho 7, finalmente, já vem como default -Dfile.encoding=utf8 • Timezone -Duser.timezone=America/Sao_Paulo 12 1 - Ajuste a Inicialização do Pentaho Server
  • 13. • Exemplo de configuração CATALINA_OPTS="-Djava.awt.headless = true - Xms2048m –Xmx16G -XX:MaxPermSize=256m - Dsun.rmi.dgc.client.gcInterval=3600000 - Dsun.rmi.dgc.server.gcInterval=3600000 - Dfile.encoding=utf8 -Duser.timezone=America/ Sao_Paulo -DDI_HOME="$DI_HOME"" 13 1 - Ajuste a Inicialização do Pentaho Server
  • 14. Pentaho Design Patterns 2 - Utilize os Logs Pentaho • Os logs do BI Server são gerados por uma API Java chamada Log4J, do projeto Apache e armazena informações importantes da plataforma na pasta ./pentaho-server/tomcat/logs. 14
  • 15. Mude o Delimitador para “tab” ou para “;” Para facilitar a visualização dos dados Mude o Delimitador para “tab” ou para “;” Tab ajuda a leitura no console e editores de texto. O ponto e vírgula facilita leitura em planilhas de calculo 1. Abra o arquivo tomcat/webapps/pentaho/WEB-INF/classes/log4j.xml 2. Procure a linha que formata a saída das informações <param name="ConversionPattern" (linha 38) 3. Troque o separador, de espaço, para “tab” (t) ou para “;” alterando a string “%d %-5p [%c] %m%n” para "%dt%-5pt[%c]t %m%n" 4. Salve. Se o BI Server estiver rodando, pare-o, apague os arquivos do log e suba o serviço novamente. 15 2 - Utilize os Logs Pentaho
  • 16. Habilite mais logs somente para testes e debug 1. Para configurar o nível de alerta para os logs do pentaho, ajuste o valor da tag "Threshold" (linha 53) para um dos possíveis valores: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACCE ou WARN https://logging.apache.org/ log4j/1.2/apidocs/org/apache/log4j/Level.html <param name="Threshold" value="DEBUG"/> 2. Conforme a necessidade, descomente o intervalo de linhas abaixo, para habilitar os logs do Mondrian, das Consultas MDX e o das Consultas SQL. Em cada categoria pode-se ajustar o nível do log, ajustando a tag <priority value="DEBUG"/> • mondrian.log: linhas 145 e 166; • mondrian_mdx.log: linhas 172 e 187; • mondrian_sql.log: linhas 193 e 208. 16 2 - Utilize os Logs Pentaho
  • 17. Outros arquivos possuem configuração para seus logs • pentaho-solutions/system/cda/log4j.xml • pentaho-solutions/system/karaf/etc/ org.ops4j.pax.logging.cfg • pentaho-solutions/system/osgi/log4j.xml 17 2 - Utilize os Logs Pentaho
  • 18. Analise os Logs de Auditoria ./pentaho-server/pentaho-solutions/system/logs/ audit/PentahoAuditLog.log • Quem é o maior usuário em quantidade de acessos? • Quem é o maior em tempo de execução? • Quais comandos geraram erros durante a última semana? • Quais as queries mais demoradas? 18 2 - Utilize os Logs Pentaho
  • 19. Como utilizar estes logs Logs do Tomcat não são afetados pelas configurações tratadas aqui • catalina.aaaa-mm-dd.log • catalina.out log do dia atual Log do Pentaho • pentaho.log Logs do Mondrian • mondrian.log • mondrian_sql.log • mondrian_mdx.log Logs de Auditoria • pentaho-solutions/system/logs/audit/PentahoAuditLog.log 19 2 - Utilize os Logs Pentaho
  • 20. Leia os logs e encontre as informações relevantes • Leia no terminal Linux tail –f pentaho.log • Importe para o Excel ou LibreOffice Calc utilizando os delimitadores configuradoss • Abra com um editor de Textos com realce de sintaxe. Procure por Verilog, Python ou alguma sintaxe que facilite a leitura dos diferentes tipos de dados em um log. • Plugin Pentaho CE Audit, do nosso amigo Caio, se utiliza dessas informações para alimentar um cubo de estatísticas dos usuários. Vale verificar se roda no pentaho 7 e também se evoluiu e funciona com todos os bancos de dados (além do HsqlDb e PostgreSQL) https://github.com/it4biz/pentaho-ce-audit/releases/tag/2016.05.19 20 2 - Utilize os Logs Pentaho
  • 21. Verifique: a) Se as queries SQL são coerentes b) Se as queries estão usando o índice que você espera c) Se o seu database é coerente d) Se os metadados do cubo são coerentes e) Se as consultas MDX estão coerentes 21 2 - Utilize os Logs Pentaho
  • 22. Query Showplan 22 2 - Utilize os Logs Pentaho SGBDR Exemplo de Comando Referência MySQL EXPLAIN {Select ...} https://dev.mysql.com/doc/workbench/en/wb-tutorial-visual- explain-dbt3.html PostgreSQL Explain Select xpto from dual; https://www.postgresql.org/docs/9.5/static/using-explain.html SQL Server USE AdventureWorks2012; GO SET SHOWPLAN_TEXT ON; GO SELECT * FROM Production.Product WHERE ProductID = 905; GO SET SHOWPLAN TEXT OFF; https://technet.microsoft.com/en-us/library/ms176005(v=sql. 105).aspx https://docs.microsoft.com/en-us/sql/t-sql/statements/set- showplan-text-transact-sql Oracle EXPLAIN PLAN FOR SELECT last_name FROM employees; https://docs.oracle.com/cd/B10501_01/server.920/a96533/ ex_plan.htm Sybase set showplan on go exec proc A go http://infocenter.sybase.com/help/index.jsp?topic=/ com.sybase.infocenter.dc00743.1502/html/queryprocessing/ queryprocessing45.htm Vertica EXPLAIN { SELECT... | INSERT... | UPDATE... COPY... | DELETE... | MERGE... | EXPORT... } https://my.vertica.com/docs/7.1.x/HTML/Content/Authoring/ SQLReferenceManual/Statements/EXPLAIN.htm
  • 23. Pentaho Design Patterns 3 - Apague arquivos desnecessários • Apague, Mova ou Grave no Banco de Dados periodicamente os arquivos de auditoria, logs e temporários São eles: • /pentaho-solutions/system/logs/audit/ • /tomcat/logs • /tomcat/temp • Plugin Pentaho Log Manager ajuda a apagar os logs http://localhost:8080/pentaho/plugin/logManager/api 23
  • 24. Pentaho Design Patterns 4 - Ajuste os Parâmetros Mondrian As configurações do Mondrian ficam no arquivo ./pentaho-server/ pentaho-solutions/system/mondrian/mondrian.properties • Ativar o uso de agregadas: mondrian.rolap.aggregates.Use = true mondrian.rolap.aggregates.Read = true • Limitar o número de linhas retornadas: mondrian.result.limit = 10000 • Limitar a espera pelo fim da consulta: mondrian.rolap.queryTimeout = 600 (Segundos) • Não altere: mondrian.trace.level = 1 24
  • 25. Pentaho Design Patterns 5 - Verifique o cubo com o Pentaho Schema Workbench • colunas como inteiro, sempre que possível; • hierarquias em colunas com índice no banco de dados, que pode ser composto (mais de uma coluna); • habilite o uso do cache em todos os cubos. 25
  • 26. Pentaho Design Patterns 6 - Use o Pentaho Aggregation Designer • Abra o PAD; • Crie a conexão para seu DW; • Selecione o arquivo XML com os metadados do Cubo a ser analisado; Se o cubo tiver restrições por roles, crie uma cópia do xml e apague todas as roles • Selecione o Cubo desejado, dentre os publicados no xml escolhido; • Observe a validação do seu banco e dados Caso necessário, faça os ajustes na estrutura do banco até que passe pela validação do PAD 26
  • 27. 27 6 - Use o Pentaho Aggregation Designer • Indique o limite: De tempo, em segundos, para que as queries sejam executadas ou; Quantidade de tabelas agregadas a serem criadas. • Analise o resultado e faça os ajustes, caso necessários Perceba se os filtros mais utilizados pela aplicação (os dashboards) têm uma tabela agregada que os contemple • Exporte: O SQL para criar as tabelas agregadas; O SQL para popular as tabelas agregadas Os metadados destas tabelas para dentro do xml do cubo Ficarão indentadas dentro da tabela fato do cubo analisado
  • 28. 28 6 - Use o Pentaho Aggregation Designer • (Re)publique o cubo no pentaho server Lembre-se de limpar os caches do Mondrian, do CDA e do Saiku (caso não utilize o mesmo mondrian que o Pentaho) • No job que faz a integração dos dados, logo após popular a tabela fato, inclua dois steps Truncate table - selecione todas as tabelas agregadas; SQL Script - inclua as queries de insert nas agregadas.
  • 29. Pentaho Design Patterns 7 -Habilite no CDE o uso do Cache em seus data-sources Em cada datasouce do seu dashboard, deixe marcada a opção de Cache. 29
  • 30. Pentaho Design Patterns 8 -Gerencie o CDA com o CDA Cache Manager Permite limpar o cache somente do que for necessário oferecendo todas as urls, oq eu premite automatizar a limpeza dos caches com precisão. • Tools/ CDA Cache Manager ou • http://localhost:8080/pentaho/plugin/cda/api/ manageCache 30
  • 31. Pentaho Design Patterns 9 - Use o Utilize o CDA – O Pulo do gato CDA é chamado por HTTP requests para $BASE_URL/pentaho/plugin/cda/api/. Documentação oficial disponível em: http://community.pentaho.com/ctools/cda/ #section=web-api-reference Método suportados: • doQuery; • listQueries; • getCdaList; • listParameters; • clearCache; • listDataAccessTypes. Exemplo: http://localhost:8080/pentaho/plugin/cda/api/getCdaList 31
  • 32. 32 9 - Use o Utilize o CDA – O Pulo do gato Abra o arquivo CDA • Se for um dashboards normal, fora de um plugin pentaho, é só clicar no .cda e abrir. • Em nosso caso, que criamos um plugin Sparkl, vamos precisar do método previewQuery do CDA http://localhost:8080/pentaho/plugin/cda/api/previewQuery? path=/system/DesignPatternsPentaho/dashboards/ PentahoDay.cda • Veja as informações sobre cada query; • Agende execução de querys; • Utilize iteradores em seus parâmetros quando for conveniente.
  • 33. 33 9 - Use o Utilize o CDA – O Pulo do gato Easter Egg Praticamente um  Easter egg, escondido no cda, no campo dos params, no mouse hover é apresentada uma interrogação, que ao ser clicada, mostra esse texto: Parameter formulas You can use formulas instead of fixed values for CDA parameters. Here are some useful examples: ${TODAY()} —> Today’s date ${YESTERDAY()} —> Yesterday’s date $FOREACH(dataAccess,colIdx,param1=val1,...,paramn=valn)
  • 34. 34 9 - Use o Utilize o CDA – O Pulo do gato FOREACH Iterate over the values for colIdx in query dataAccess with the given parameters. Queries using this construct return no values, and its main purpose is to provide parameter ranges for cache warming. Please refer to the Pentaho Reporting Engine documentation for a full description of the syntax. http://wiki.pentaho.com/display/Reporting/ 9.+Report+Designer+Formula+Expressions • Ex.: $FOREACH(dsFiltroAno,0)
  • 35. Pentaho Design Patterns 10 - Debugue seu código no CDE Adicione na URL do Dashboard, os parâmetros abaixo e seja feliz com o inspector de seu navegador. “?debug=true", no final da url, ele nao compacta as coisas. Nao usa cache. “&debugLevel=5” ajusta o nível do log CDE http://localhost:8080/pentaho/plugin/ DesignPatternsPentaho/api/pentahoday? debug=true&debugLevel=5 35
  • 36. Pentaho Design Patterns 11 - Conheça o CDC - Community Distributed Cache Ainda não disponível na versão 7 do Pentaho. Referências em: • http://community.pentaho.com/ctools/cdc/ e • http://pedroalves-bi.blogspot.com.br/2012/05/ cdc-community-distributed-cache.html 36
  • 37. Pentaho Design Patterns 12 - Saiku – share Mondrian Faz com que o Saiku CE utilize o mesmo Mondrian que o Pentaho e, assim, se beneficie de todos os caches criados Pentaho até versão 5 cd /pentaho/server/5.01/biserver-ce/pentaho- solutions/system/saiku ./saiku-shareMondrian.sh -w /pentaho/server/ 5.01/biserver-ce/tomcat/webapps/pentaho 37
  • 38. 38 12 - Saiku – share Mondrian Pentaho 6 ou mais recente In the plugin, if you remove the mondrian jar from the plugin, it'll fall back to using the same jar as the server. You can also follow that shell script to remove the other jars even if its not quite automatic any more, to run using the bi server cache. Tom https://groups.google.com/a/saiku.meteorite.bi/ forum/#!topic/user/wFQstt5Gd7o
  • 39. Contribuição Extra Contribuiçao para a comunidade Pentaho Artigo completo sobre BI com Pentaho publicado na SQL Magazine, com dados e fontes: https://br.groups.yahoo.com/neo/groups/ pentahobr/conversations/messages/16965 39
  • 41. TÍTULO 41 Eduardo Alves de Carvalho eduardo@e-Setorial.com.br (48) 3334-2307 | (48) 99953-1260 www.e-Setorial.com.br