Prezados alunos,
Abaixo comento as questões de banco de dados, business intelligence e processo de negócio da prova de analista de sistemas do concurso do STM. A prova veio num nível bastante elevado, mas é sempre bom aprender com os erros. Temos dois recursos possíveis. Sem mais delongas, vamos aos comentários.
No contexto do desenvolvimento de sistemas de processamento de dados, julgue os itens a seguir, relativos ao gerenciamento de processos de negócio.
51 Além de buscarem medir, monitorar e controlar atividades e administrar o presente e o futuro do negócio, os processos de suporte entregam valor para outros processos, mas não o fazem diretamente para os clientes.
52 Para melhor compreender o processo e a organização, modelos AS-IS (estado atual) realizam avaliação inicial baseada em fatos documentados e validados; e modelos TO-BE (estado futuro) utilizam simulação para compreender as lacunas no processo atual que impedem a transição para o estado desejado.
53 No BPMN (Business Process Model and Notation), utiliza-se o modelo de uma piscina (pool) que contém uma ou mais raias (lanes), na(s) qual(is) é possível inserir diversos símbolos, como retângulos arredondados (para representar processos, atividades ou tarefas ou subprocessos), setas (para representar uma sequência de fluxo) e losangos (para, a partir de avaliação de determinada condição, representar caminhos alternativos ou paralelos).
54 A partir da redefinição dos processos e de suas respectivas atividades e tarefas, os custos associados à mudança dever-se-ão a fatores como resistência das pessoas às mudanças, interesses ocultos, conflitos de interesse e esforço na padronização de processos para aumentar a eficiência organizacional.
Comentário: Vamos comentar cada uma das alternativas acima.
Esse é uma das classificações possíveis para os processos. Outra taxonomia divide os processos em primários ou finalísticos, de suporte e gerenciais.
Os processos gerencias são os processos estabelecidos para coordenar e controlar as atividades da empresa. Ou seja, os processos gerenciais garantem que os processos primários e os processos de suporte sejam bem executados e traçam planos para a continuidade das operações. Esses processos não agregam valor direto ao cliente, mas estão presentes antes, durante e depois do processo. Vejam que a questão apresenta conceitos associados aos processos gerenciais como se fosse de suporte. Logo, temos uma afirmação incorreta no enunciado.
Como o próprio nome já diz, os processos de suporte são aqueles que oferecem suporte aos processos primários, ou seja, são os processos que agregam valor ao produto ou ao negócio, mas que, por se tratarem de procedimentos internos, são visíveis aos clientes. Note que esses processos não entregam valor direto ao cliente, contudo são essenciais para a empresa e aumentam a capacidade de efetividade dos processos primários.
Os processos primários também são chamados de processos finalísticos. Eles são processos essenciais e que representam as atividades que uma organização desempenha para cumprir sua missão. Por isso, eles têm relação direta com o cliente, ou seja, são os processos mais perceptíveis ao consumidor.
Já o desenho de processos é a concepção de novos processos de negócio e a especificação de como esses funcionarão, serão medidos, controlados e gerenciados. Envolve a criação do modelo futuro de processos de negócio (“TO-BE”) no contexto dos objetivos de negócio e de desempenho de processos, e fornece planos e diretrizes sobre como fluxos de trabalho, aplicações de negócio, plataformas tecnológicas, recursos de dados e controles financeiros e operacionais interagem com os processos.
Partindo destas definições, podemos marcar a afirmação acima como correta.
Quando falamos de custos, ele é o valor (normalmente monetário) associado ao processo. Pode assumir diferentes perspectivas, por exemplo, custo do recurso é a medida de valor associado aos recursos (humanos ou não) necessários para completar o processo e custo de oportunidade é o valor que é perdido no processo por não ter obtido seu resultado esperado. Logo, a alternativa está correta.
Gabarito: E C C C
Um sistema gerenciador de banco de dados (SGBD) instalado no Linux deve ser configurado de modo a permitir os seguintes requisitos:
I no máximo, 1000 conexões simultâneas;
II somente conexões originadas a partir do servidor de
aplicação com IP 10.10.10.2.
Tendo como referência essas informações, julgue os seguintes itens.
71 Caso o SGBD instalado seja o Postgres 9.6, para atendimento do requisito I, deve-se modificar o arquivo postgres.conf para o referido cluster; alterar o parâmetro max_connections para 1000; e reiniciar o serviço do SGBD.
72 Caso o SGBD instalado seja o Postgres 9.6, para atendimento do requisito II, deve-se modificar o arquivo pg_hba.conf para o referido cluster; alterar o parâmetro listen_addresses para o IP fornecido; e reiniciar o serviço do SGBD.
73 Caso o SGBD instalado seja o MySQL 5.7, para atendimento dos requisitos I e II, deve-se modificar o arquivo my.cnf, alterando-se os parâmetros max_user_connections para 1000 e connection_source para o IP fornecido; e reiniciar o serviço do SGBD.
74 Caso o SGBD instalado seja o Oracle 12C, os requisitos I e II podem ser atendidos em tempo de execução, respectivamente, por meio dos comandos SET system sessions = 1000 e SET system listener = 10.10.10.2.
Comentário: Vamos comentar cada uma das alternativas acima:
# local DATABASE USER METHOD [OPTIONS]
# host DATABASE USER ADDRESS METHOD [OPTIONS]
# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
Vejamos alguns exemplo de regras que podem estar registradas em um arquivp pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
O termo local diz que todos os usuários usando sockets Unix locais devem ser confiáveis para todos os bancos de dados. O método trust significa que nenhuma senha deve ser enviada para o servidor e as pessoas podem fazer login diretamente. As outras duas regras dizem que o mesmo se aplica às conexões do localhost 127.0.0.1 e ::1/128, que é um endereço IPv6.
Perceba que até agora não falamos do parâmetro listen_addresses. É porque ele não está no arquivo pg_hba.conf, ele é configurado no arquivo postgresql.conf. Desta forma, a alternativa está incorreta.
# listener.ora Network Configuration File:
LISTENER = (DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))
Gabarito: C(Recurso neles!) E E E
Com base nos comandos MySQL 5.6 precedentes, julgue os itens a seguir.
75 Especialmente devido à expressão na linha 11, o comando a seguir, após executado, retornará três registros.
SELECT a.idsoft, a.versao, a.descricao
FROM ‘vsoftware’ a
INNER JOIN (
SELECT idsoft, MAX(versao) versao
FROM ‘vsoftware’
GROUP BY idsoft) b ON a.idsoft = b.idsoft
AND a.versao = b.versao;
76 A execução do comando
SELECT a.idsoft, a.versao, a.descricao
FROM ‘vsoftware’ a
LEFT OUTER JOIN ‘vsoftware’ b
ON a.idsoft = b.idsoft AND a.versao < b.versao
WHERE b.idsoft IS NULL;
retornará os seguintes dados.
idsoft versao descricao
1 3 adicao da tela C.
2 2 adicao da tela D.
77 A execução do comando
SELECT a.id
FROM ‘software’ a
where a.id not in (
SELECT b.idsoft
FROM ‘vsoftware’ b);
terá resultado idêntico à execução do comando a seguir.
SELECT distinct a.id
FROM ‘software’ a left outer join ‘vsoftware’ b
on a.id=b.idsoft;
78 A tabela vsoftware está na segunda forma normal (2FN), porque contém uma chave estrangeira referenciada à tabela software.
79 O comando ALTER TABLE software add data datetime; no MySQL 5.6 adiciona um novo campo data à tabela software.
80 O comando a seguir no MySQL 5.6 modifica o tipo do campo nome para CHAR na tabela software.
ALTER TABLE software MODIFY nome char(100);
Comentário: Vamos comentar cada uma das questões acima:
(‘1’, ‘3’, ‘adicao da tela C.’),
(‘2’, ‘2’, ‘adicao da tela D.’);
Gabarito: E C E E C
Julgue os itens subsequentes, a respeito do Postgres 9.6.
81 Ao se criar uma trigger, a variável especial TG_OP permite identificar que operação está sendo executada, por exemplo, DELETE, UPDATE, INSERT ou TRUNCATE.
82 Nas instruções seguintes, a palavra-chave IMMUTABLE indica que a função criada não pode modificar o banco de dados. CREATE FUNCTION add(integer, integer) RETURNS integer
AS ‘select $1 + $2;’
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT;
Comentário: Vamos comentar as alternativas acimas. Primeiramente a questão 81 está correta. De fato, TG_OP é uma variável do tipo texto que pode ser preenchida com os valores INSERT, UPDATE, DELETE ou TRUNCATE que identificam quais operações irão disparar o TRIGGER. Vejamos alguns exemplos:
CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
CREATE TRIGGER emp_audit
AFTER INSERT OR UPDATE OR DELETE ON emp
FOR EACH ROW EXECUTE PROCEDURE process_emp_audit();
Ser o valore passado for IMMUTABLE vai indicar que a função não pode modificar o banco de dados e sempre retorna o mesmo resultado quando dados os mesmos valores de argumento; ou seja, não faz pesquisas de banco de dados ou, de outra forma, usa informações que não estão diretamente presentes na lista de argumentos. Se esta opção for dada, qualquer chamada da função com argumentos constantes pode ser imediatamente substituída pelo valor da função. Desta forma, temos mais uma alternativa correta.
STABLE indica que a função não pode modificar o banco de dados, e que, dentro de uma única tabela, retornará consistentemente o mesmo resultado para os mesmos valores de argumento, mas que seu resultado pode mudar em declarações SQL. Esta é a seleção apropriada para funções cujos resultados dependem de pesquisas de banco de dados, variáveis de parâmetros (como o fuso horário atual), etc.
VOLATILE indica que o valor da função pode mudar mesmo dentro de uma varredura de tabela única, portanto, nenhuma otimização pode ser feita. Relativamente poucas funções de banco de dados são voláteis nesse sentido; alguns exemplos são aleatórios (), currval (), timeofday (). Mas note que qualquer função que tenha efeitos colaterais deve ser classificada como volátil, mesmo que seu resultado seja bastante previsível, para evitar que as chamadas sejam otimizadas; um exemplo é setval ().
Gabarito: C C
Acerca do Oracle 12C, julgue os próximos itens.
83 Especialmente voltado para o armazenamento de dados de sistemas de suporte a decisão (DSS) e data warehouse, os dados no Oracle podem ser armazenados em uma nova área opcional denominada In-Memory (IM). A IM é um suplemento que substitui a system global area (SGA), pois se sobrepõe ao cache de buffer do banco de dados, permitindo alto poder de processamento ao varrer dados colunares rapidamente por meio de vetorização.
84 Os dados nos SGBDs são organizados em blocos, em que os sistemas de suporte à decisão (DSS) e os ambientes de banco de dados de data warehouse tendem a se beneficiar de valores de tamanho de bloco maiores.
85 Os blocos de dados são organizados em cabeçalho (row header) e dados (column data); a cada nova transação, o registro é armazenado como uma nova linha na tabela e, assim, um registro é armazenado em várias colunas em blocos de dados no disco.
Comentário: Vamos comentar cada uma das alternativas:
A partir do 12c o Oracle Database Release 1 (12.1.0.2) adicionou uma nova área opcional na SGA chamado de In-Memory, que são objetos armazenados com o novo formato In-Memory Column Store (IM column store). A IM Column store é opcional e armazena cópias das tabelas, partitions, colunas, materialized views (objetos especificados como INMEMORY usando DDL) em um formato especial de colunas otimizadas para leituras rápidas.
A IM column store é um suplemento em vez de ser um substituto para o cache de buffer do banco de dados. A IM column store não substitui o buffer cache. Mas ambas as áreas de memória podem armazenar os mesmos dados em formatos diferentes e não é necessário para objetos armazenados na IM column store serem carregados no buffer cache do banco de dados, ou seja, os objetos são armazenados unicamente na IM column store. Sendo assim, temos uma afirmação incorreta.
No Oracle, o valor do DB_BLOCK_SIZE em vigor quando você cria o banco de dados determina o tamanho dos blocos. O valor deve permanecer definido como seu valor inicial. Para Real Application Clusters, este parâmetro afeta o valor máximo do parâmetro de armazenamento FREELISTS para tabelas e índices. O Oracle usa um bloco de banco de dados para cada grupo freelist. O sistema de suporte à decisão (DSS) e os ambientes de banco de dados de data warehouse tendem a se beneficiar de valores de tamanho de bloco maiores.
Gabarito: E C C
Julgue os itens que se seguem, a respeito do processamento de transações e otimização de desempenho do SGBD e de consultas SQL.
86 O controle de nível de isolamento de transações é importante para gerenciar a forma como as transações concorrentes se comportarão no SGBD. No Postgres 9.6, o nível de isolamento padrão é READ COMMITTED, mas pode ser alterado para SERIAZABLE por meio do comando SET TRANSACTION ISOLATION LEVEL SERIAZABLE.
87 No MySQL 5.6, o modo padrão de execução das transações é autocommit, o qual faz que as mudanças realizadas se tornem permanentes após a execução bem-sucedida desse comando; entretanto, esse modo será desabilitado implicitamente, se uma série de instruções for iniciada por meio do comando START TRANSACTION.
88 No Oracle 12C, a Automatic Workload Repository (AWR) é uma funcionalidade similar ao autovacuum no Postgres 9.6, haja vista que ambos processam e mantêm estatísticas de desempenho para detecção de problemas e manutenção automática do banco de dados, por exemplo, reusando, ajustando e excluindo dados temporários e reusando espaço em blocos por linhas excluídas.
89 No MySQL 5.6, o banco de dados information_schema guarda dados estatísticos e eventos para serem utilizados caso se queira encontrar problemas de velocidade de acesso aos dados e(ou) problemas de integridades no SGBD.
90 No MySQL 5.6, os índices são usados para, entre outras operações, desconsiderar linhas a serem pesquisadas e(ou) encontrar linhas abrangidas pelo WHERE mais rapidamente
Comentário: Vamos comentar cada uma das alternativas acima:
SET TRANSACTION transaction_mode [, …]
SET TRANSACTION SNAPSHOT snapshot_id
SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, …]
onde transaction_mode pode ser definido da seguinte forma:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
Logo a afirmação estaria correta. Contudo, observem que o enunciado apresenta o termo SERIAZABLE, quando o correto seria SERIALIZABLE. Sendo assim: RECURSO NELES!!!
Uma forma de executar uma transação é emitir uma declaração de START TRANSACTION (ou BEGIN) para suspender o modo de autocommit, executar as declarações que compõem a transação e encerrar a transação com uma declaração de COMMIT para tornar as alterações permanentes. Se ocorrer um erro durante a transação, você pode cancelar emitindo uma instrução ROLLBACK para desfazer as alterações. Logo, a alternativa está correta.
As tabelas e índices inchados não somente desperdiçam espaço, como também deixam as consultas mais lentas. Então, isso não é só uma questão de conseguir mais espaço no disco rígido. Antigamente, os DBAs precisavam executar o VACUUM manualmente. Hoje, é possível configurar um deamon chamado Autovacuum para executar essas limpezas em momentos oportunos.
Veja que Autovacuum não guarda nenhuma relação de similaridade funcional com o AWR. Podemos afirmar, portanto, que a alternativa está incorreta. Sabemos que o AWR significa Automatic Workload Repository, ou seja, é um repositório de informações a respeito da carga de trabalho do banco de dados. O framework do AWR coleta, processa e mantém estatísticas de desempenho para possibilitar detecção de problemas e é a base para as tarefas de tuning automáticas do Oracle. Estas estatísticas são coletadas através de snapshots regulares e armazenadas no AWR por um período definido, elas são baseadas no momento do snapshot e podem ser utilizadas para elaborar um relatório. Os valores capturados pelo snapshot representam as mudanças em cada estatística coletada no período.
O INFORMATION_SCHEMA é um banco de dados dentro de cada instância do MySQL, trata-se do local que armazena informações sobre todos os outros bancos de dados que o servidor MySQL mantém. O banco de dados INFORMATION_SCHEMA contém várias tabelas somente leitura. Eles são, na verdade, visualizações, não tabelas de base, portanto, não há arquivos associados a elas, e você não pode definir gatilhos ou triggers. Além disso, não há um diretório de banco de dados com esse nome, as tabelas são construídas temporariamente enquanto a instância do SGBD estiver executando.
Existe outro esquema padrão no MySQL denominado PERFORMANCE_SCHEMA que é usado para inspecionar a execução de consultas e eventos em tempo real. Esse esquema destina-se a fornecer acesso a informações úteis sobre a execução do servidor, tendo um impacto mínimo no desempenho. O PERFORMANCE_SCHEMA centra-se principalmente nos dados de desempenho. Isso difere de INFORMATION_SCHEMA, que serve para inspeção dos metadados. Sendo assim, a afirmação mistura os dois conceitos, logo está incorreta.
Gabarito: C (Recurso Neles!) C E E C
Qualquer dúvida estou às ordens,
Forte abraço e bons estudos,
Thiago Cavalanti
Acordo firmado entre o MGI e o Sindicato também prevê outras melhorias para os Auditores…
A Prefeitura Municipal da Estância Climática de Morungaba, em São Paulo, publicou o novo edital…
Está oficialmente finalizado o concurso público da Secretaria de Tributação do Município (ISS) de Mossoró.…
Estão encerradas as inscrições do concurso SAAE de Luz MG (Serviço Autônomo de Água e…
Foi aprovada a proposta de reestruturação da carreira de Finanças e Controle para o próximo…
O Conselho Regional de Serviço Social do Pará (CRESS PA) divulgou os resultados das provas…
Ver comentários
As questões de DML no MySQL não deveriam usar backticks ao invés de single quotes ? Na documentação do MySql está escrito The identifier quote character is the backtick (`). Qual o entendimento do cespe sobre isso?
Olá Fernando,
Até concordo, mas neste caso é um problema de digitação e se fossemos considerar isto todas as alterantivas destes bloco estariam incorretas. Isso é diferente da questão de postgreSQL que colocou o nome de um arquivo errado (postgres.conf) em uma alternativa e o nome correto de outro arquivo de configuração em outra assertiva.
Se você quiser tentar recurso pode ser válido, mas acho que não vamos obter muito sucesso neste caso.
Qualquer dúvida estou às ordens,
Forte abraço,
Thiago