Tecnologia Da Informação Flashcards

1
Q

Dados Estruturados, Semiestruturados e Não-Estruturados

A

Dados estruturados são informações que foram formatadas e transformadas em um modelo de dados bem definido. Os dados brutos são mapeados em campos predefinidos que podem ser posteriormente extraídos e lidos por meio de SQL facilmente. Os bancos de dados relacionais SQL, consistindo em tabelas com linhas e colunas, são o exemplo perfeito de dados estruturados.

Os dados nem sempre serão estruturados ou não-estruturados – existe outra categoria entre essas duas que está parcialmente estruturada. Esses dados são definidos como semiestruturados. Este tipo de dado possui algumas características consistentes e definidas, não se restringindo a uma estrutura rígida como a necessária para bancos de dados relacionais. Propriedades organizacionais, como metadados ou tags semânticas, são usadas com dados semiestruturados para torná-los mais gerenciáveis; no entanto, ainda contêm alguma variabilidade e inconsistência.

Os dados presentes na forma bruta absoluta são denominados como não estruturados. Esses dados são difíceis de processar devido à sua complexa organização e formatação. Os dados não estruturados podem assumir várias formas, incluindo postagens em mídias sociais, bate-papos, imagens de satélite, dados do sensor IoT, e-mails e apresentações.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Independência de dados

A

A independência de dados pode ser definida como a capacidade de alterar o esquema em um nível do sistema de banco de dados sem ter de alterar o esquema no próximo nivel mais alto.

Existem dois tipos de indendência, a lógica e a física:

1. Independência lógica de dados é a capacidade de alterar o esquema conceitual sem ter de alterar os esquemas externos ou os programas de aplicação.

2. Independência física de dados é a capacidade de alterar o esquema interno sem ter de alterar o esquema conceitual.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Sistema de Gerenciamento de Banco de Dados (SGBD)

A

Diferentes Sistema de Gerenciamento de Banco de Dados (SGBDs) possibilitam a criação de diferentes restrições. Os mais comuns e aceitos pela maioria são:

NOT NULL - Garante que os valores inseridos em uma coluna não serão nulos;
UNIQUE - Garante que os valores em uma coluna são únicos (não se repetem);
PRIMARY KEY - Restrição que combina as restrições NOT NULL e UNIQUE. Ou seja, identifica unicamente uma linha de uma tabela;
FOREIGN KEY - Possibilita a criação de relacionamentos entre tabelas;
CHECK - Garante que os valores presentes em uma coluna satisfazem uma condição;
DEFAULT - Cria um valor padrão (default) para uma coluna se ela não respeitar um valor específico.

Os principais tipos de SGBD são:

Relacionais
• Definição: Organizam dados em tabelas com relações entre elas.
• Exemplos: MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server, MariaDB.

Não-relacionais (NoSQL)
• Definição: Não utilizam o modelo relacional, permitindo maior flexibilidade e escalabilidade.
• Subtipos:
• Documentos: MongoDB, CouchDB.
• Chave-Valor: Redis, DynamoDB.
• Colunar: Cassandra, HBase.
• Gráficos: Neo4j, ArangoDB

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Banco de Dados Oracle

A

Uma instância do banco de dados é um conjunto de estruturas na memória e de processos que rodam no servidor. Essa instância é configurada com base nos parâmetros que definimos, e esses parâmetros ficam salvos em um arquivo.

Nesse contexto, o Oracle permite alterar o valor de um parâmetro em um arquivo de parâmetros de várias maneiras, conforme abaixo:

1. Editando um arquivo de parâmetro de inicialização: Na maioria dos casos, o novo valor entra em vigor na próxima vez que você iniciar uma instância do banco de dados. É necessário realizar a alteração de forma manual, geralmente através do arquivo pfile.

2. Emitindo um comando ALTER SYSTEM SET … SCOPE=SPFILE para atualizar um arquivo de parâmetros do servidor. A aplicação é persistente para todo sistema após o reinício do banco de dados;

3. Emitindo um comando ALTER SYSTEM RESET para limpar o valor de um parâmetro de inicialização.

Além disso, há dois tipos de arquivos utilizados pelo Oracle: o pfile (arquivo de parâmetros do servidor) ou init, que é estático, e o spfile (arquivo de parâmetros do servidor), que é dinâmico. Ambos são localizados no diretório dbs da ORACLE_HOME. Enquanto o pfile pode ser aberto, verificado e modificado diretamente, o spfile não pode. Quando o Oracle inicia, ele tenta primeiro usar o spfile; se não encontrar, recorre ao pfile. É possível renomear ou mover o pfile, mas ao movê-lo, é necessário informar ao Oracle onde ele está localizado para iniciar a instância. Isso não é possível com o spfile, que não pode ser movido ou renomeado dessa maneira, apenas através do próprio banco de dados

A vantagem principal de utilizar um spfile em vez de um pfile está na capacidade de fazer alterações de dentro da instância do banco de dados nos parâmetros do Oracle. Enquanto o pfile é apenas de leitura e requer modificações manuais diretamente no arquivo, o spfile permite que os valores dos parâmetros sejam alterados e essas mudanças se tornem permanentes. Isso significa que, ao modificar um parâmetro no spfile e reiniciar a instância com um shutdown e startup, o Oracle irá utilizar os novos valores automaticamente. Essa flexibilidade é crucial para ajustes finos e gerenciamento eficiente do banco de dados Oracle em tempo real.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Redução de Dimensionalidade

A

A redução de dimensionalidade é uma técnica que pode ser usada para reduzir o número de dimensões de um conjunto de dados, tornando os dados mais fáceis de visualizar e analisar.

A técnica mais amplamente usada para reduzir a dimensionalidade de dados numéricos é a Análise de Componentes Principais, também conhecida como PCA. O PCA é um processo matemático que transforma as variáveis originais, que geralmente estão correlacionadas, em um conjunto de variáveis novas e não correlacionadas chamadas Componentes Principais (PCs).

Para realizar o processo, é necessário encontrar as variáveis mais relevantes, chamadas de Componentes Principais, que não apresentem correlação linear entre si.

Ou seja, PCA é um método de redução de dimensionalidade que é usado para transformar um conjunto de variáveis correlacionadas em um conjunto menor de variáveis não correlacionadas, chamadas de componentes principais. Sendo assim, amplamente usado para reduzir a dimensionalidade de dados numéricos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Error-reporting - PL/SQL do Oracle 19G - tratamento de exceções.

A

SQLCode
Função: Retorna o código de erro numérico quando uma exceção ocorre.
Uso: Dentro de um bloco de tratamento de exceções para identificar o erro.

SQLErrm
Função: Retorna a mensagem de erro associada ao código de erro.
Uso: Dentro de um bloco de tratamento de exceções para obter uma descrição textual do erro.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Matching

A

O matching (pode ser encontrado na literatura com diferentes variações, como objetct matching, product matching, citation matching, etc.) é um processo crucial na integração de dados de múltiplas fontes, pois permite identificar e conectar entidades que representam o mesmo objeto do mundo real, mesmo que estejam representadas de maneira diferente em diferentes fontes.

De forma geral, o desafio central do matching é encontrar correspondências precisas entre as entidades, mesmo quando há diferenças nos nomes, formatos, valores de atributos e outras características. Detectar a ocorrência de uma mesma entidade do mundo real é o objetivo principal do matching, pois permite a integração precisa e eficiente dos dados.

Por exemplo, podemos avaliar diferentes fontes de dados e queremos saber exatamente que são os mesmos objetos, e que além disso, combinam com uma entidade real:

1. Correspondência de nomes diferentes: Pode existir uma mesma pessoa cadastrada com nomes diferentes em diferentes fontes.

2. Diferenças nos formatos:Mesma data com formatos diferentes em diferentes fontes.

3. Valores de atributos inconsistentes: Mesma informação armazenada com valores diferentes em diferentes fontes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Características básicas do SGBDs

A

Os sistemas gerenciadores de banco de dados (SGBDs) são classificados como aplicações, ou um conjunto de programas, que habilitam o usuário a manipular e administrar um banco de dados através de operações como criação, edição, atualização, etc. São responsáveis também por gerenciar os acessos conforme configurado pelo administrador, além de garantir que o banco de dados tenha as características básicas de funcionamento de transações através das propriedades: atomicidade, consistência, isolamento e durabilidade - ACID

Atomicidade: A atomicidade é uma propriedade dos SGBDs que deve garantir que transações sejam executadas em sua totalidade, ou então as transações devem ser desfeitas até um estado anterior e consistente do sistema. Isto é, a atomicidade considera que o conjunto de transações seja tratada como uma unidade única e indivisível de trabalho. Dessa forma, caso aconteça algum erro durante uma operação, como falta de energia, é necessário evitar que a transação fique parcialmente concluída, gerando inconsistências ao estado do banco de dados. Para isso, a atomicidade é implementada usando técnicas como logs de transações e mecanismos de recuperação, que registram todas as alterações realizadas por uma transação e permitem desfazer ou refazer essas alterações, dependendo do resultado.

Consistência (ou correção): Com o uso de um SGBD, o sistema de banco de dados se caracteriza pela sua padronização, tornando-o mais fácil de ser administrado e manipulado, pois as regras e diretrizes são padronizadas, permitindo uma melhor consistência. Ou seja, quando um SGBD realiza determinada transação em um banco de dados consistente, espera-se que após a transação, o banco de dados permaneça em um estado consistente. Dessa forma, qualquer transação executada deve seguir as regras de integridade do banco de dados, respeitando as restrições de integridade, a unicidade de chaves, etc;

Isolamento: Operações e manipulações realizadas no banco de dados devem permanecer isoladas de outras operações realizadas de forma concorrente, ou seja, cada processamento não deve interferir nos demais;

Durabilidade (ou disponibilidade): Um dos objetivos de qualquer SGBD é manter os dados de uma transação finalizada persistidos em definitivo no banco de dados, ou seja, os dados de transações finalizadas devem estar disponíveis em definitivo após sua inserção.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Funções de Data e Hora em SQL

A

localtimestamp: retorna a data e hora atuais na timezone do banco de dados local.

current_timestamp: retorna a data e hora atuais na timezone do banco de dados local.

timestamp: retorna um valor de timestamp, mas sem informação de timezone. Isso significa que o valor do timestamp seria interpretado de acordo com a timezone do sistema que está lendo os dados.

timestamp with timezone: retorna um valor de timestamp juntamente com informação de timezone. Isso significa que o valor do timestamp seria sempre interpretado corretamente, independentemente da timezone do sistema que está lendo os dados.

timestamp with local timezone: retorna um valor de timestamp que é ajustado para a timezone do sistema que está lendo os dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Controle de Concorrência

A

O sistema de controle de concorrência dos SGBDs relacionais tem como principal objetivo controlar o acesso a fim de garantir a propriedade de isolamento (ACID) em transações que ocorrem concorrentemente (diferentes usuários ao mesmo tempo) dentro de um banco de dados. Essa é uma das principais características presentes em um SGBD, pois através de seu uso é possível garantir um sistema consistente através da preservação e controle na execução de transações dentro de um banco de dados, permitindo assim, controlar conflitos de interferência de leitura e gravação. Existem muitas técnicas utilizadas por SGBDs para manter o controle de concorrência, e dentre as principais: bloqueio (locking), ordenamento de registro de timestamp, multiversão e validação ou certificação (protocolos otimistas). Grande parte dessas técnicas visa garantir a serialização, que é a garantia de execução correta das transações, igual ocorreria se fossem executadas de forma sequencial.

Caso o SGBD não ofereça o controle de concorrência, certas anomalias surgem dentro do banco de dados, 3 principais violações que podem ocorrer no banco de dados a depender do nível de isolamento utilizado:

Leitura suja: Uma transação T1 pode ler dados que foram modificados por uma transação T2, mas que ainda não foram confirmados. Se T2 falhar e for revertida, T1 terá lido dados que não existem mais e são incorretos. Ocorre somente no nível de isolamento READ UNCOMMITED.

Leitura não repetitiva: Uma transação T1 pode ler um valor de uma tabela. Se outra transação T2 atualizar esse valor posteriormente, quando T1 ler o valor novamente, verá um valor diferente do que leu inicialmente. Ocorre nos níveis de isolamento READ UNCOMMITED e READ COMMITED.

Fantasmas: Uma transação T1 pode ler um conjunto de linhas de uma tabela com base em uma condição específica na cláusula SQL WHERE. Se uma transação T2 inserir uma nova linha que também satisfaça a condição WHERE usada por T1, então ao ler novamente, T1 encontrará uma nova linha que não estava presente anteriormente. Ocorre nos níveis de isolamento READ UNCOMMITED, READ COMMITED e REPEATABLE READ.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Protocolo de Bloqueio SQL

A

Protocolo de bloqueio é considerado um conjunto de regras que devem ser seguidas por transação, além de serem impostas pelo SGBD, visando garantir que o resultado final será igual ao resultado da execução de todas as transações de forma serial, mesmo que as ações de várias transações sejam intercaladas. Ou seja, as técnicas para controle de concorrência servem para assegurar a serialização de planos de execução usando determinados conjuntos de regras (protocolos).

Em resumo, bloqueios binários possuem apenas dois estados possíveis:

Bloqueado - Quando uma transação está bloqueando o acesso ao item de dado e nenhuma outra transação pode acessar;

Desbloqueado -O item de dado está desbloqueado e pode ser acessado através de bloqueio.

Por sua vez, os bloqueios de modo múltiplo (chamado também de bloqueio compartilhado/exclusivo) permitem três estados possíveis:

Bloqueado para compartilhado/ bloqueio de leitura - Neste estado, um recurso está bloqueado para leitura por uma ou mais transações. Isso significa que outras transações podem ler o recurso simultaneamente, mas não podem modificá-lo enquanto o bloqueio estiver em vigor. Esse tipo de bloqueio é chamado de “bloqueio compartilhado” ou “bloqueio de leitura”.

Bloqueado para escrita /bloqueio exclusivo - Neste estado, um recurso está bloqueado para escrita por uma transação. Isso significa que nenhuma outra transação pode ler ou modificar o recurso enquanto o bloqueio estiver em vigor. Esse tipo de bloqueio é chamado de “bloqueio exclusivo” ou “bloqueio para escrita”. O item fica bloqueado a fim de evitar que outras transações acessem o mesmo item enquanto uma transação precisa modificar o recurso, garantindo assim a atomicidade e a consistência das operações de escrita.

Desbloqueado - Neste estado, o recurso não está bloqueado por nenhuma transação e está disponível para leitura ou escrita por qualquer transação que deseje acessá-lo. Quando uma transação completa suas operações de leitura ou escrita em um recurso, ela libera o bloqueio e o recurso volta ao estado desbloqueado, permitindo que outras transações o acessem conforme necessário.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Banco de Dados Híbrido

A

Um banco de dados híbrido combina as vantagens de ambientes locais (on-premises) com a flexibilidade da nuvem, muitas vezes envolvendo modelos de bancos de dados relacionais e NoSQL. O conceito de banco de dados híbrido refere-se ao uso de uma infraestrutura mista, onde parte dos dados e das operações de um banco de dados é gerenciada em servidores locais, enquanto outra parte é alocada em um ambiente de nuvem pública ou privada.

Essa abordagem é adotada por organizações que desejam equilibrar controle, segurança, e desempenho, enquanto aproveitam os benefícios de escalabilidade, elasticidade e custo-benefício da nuvem.

Vejamos os principais aspectos de bancos de dados híbridos:

Flexibilidade: Um banco de dados híbrido permite que as organizações mantenham dados críticos ou sensíveis em seus próprios servidores locais (por questões de compliance, privacidade ou segurança), ao mesmo tempo que movem dados menos críticos para a nuvem. Isso oferece maior flexibilidade na gestão de recursos e dados.

Escalabilidade: A capacidade de escalar os recursos de armazenamento e processamento de dados é uma das maiores vantagens da nuvem. Em um ambiente híbrido, a organização pode utilizar a escalabilidade da nuvem para demandas pontuais (picos de acesso, por exemplo) sem ter que expandir sua infraestrutura local.

Resiliência e Recuperação de Desastres: Um banco de dados híbrido pode ser configurado para backup e recuperação de desastres utilizando a nuvem como um destino secundário. Isso melhora a resiliência da operação, permitindo que a organização recupere dados rapidamente em caso de falhas no ambiente local.

Eficiência de Custos: O modelo híbrido pode reduzir custos de capital (CAPEX), já que a infraestrutura local não precisa ser constantemente expandida. Em vez disso, a organização paga pelos recursos da nuvem conforme necessário (modelo pay-as-you-go), especialmente útil para lidar com variações de demanda.

Baixa Latência: Dados e operações mais sensíveis, que requerem baixa latência, podem permanecer no ambiente local, enquanto dados de menor prioridade ou que não são acessados com frequência podem ser movidos para a nuvem, equilibrando custos e desempenho.

Segurança e Conformidade: Muitos bancos de dados híbridos são usados para atender a requisitos de conformidade, como o GDPR ou outras regulamentações de proteção de dados. A organização mantém o controle dos dados sensíveis em seus servidores locais, enquanto dados menos sensíveis podem ser armazenados na nuvem.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Linguagem Python

A

A linguagem Python é uma linguagem em que não é necessário informar o tipo de dado na declaração. As variáveis assumem um tipo de dado no momento da atribuição, logo, podemos atribuir a uma variável um valor de qualquer tipo.

Um objeto em Python é considerado uma abstração e todo objeto, sem exceção, possui uma identidade, um tipo e um valor. A identidade de cada objeto é única e possibilita distinguir um objeto do outro. O tipo é para definir quais as operações podem ser realizadas pelo objeto e é definido a partir de sua classe. Por fim, o valor de um objeto é que foi atribuído a ele em sua declaração.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Amazon Web Services - AWS

A

AWS (Amazon Web Services), que é uma plataforma de serviços de nuvem, oferecendo uma ampla variedade de produtos, como bancos de dados, armazenamento, redes, machine learning, entre outros.

AWS SageMaker - avalia serviços, frameworks e modelos de base de IA e ML. Fornece aos desenvolvedores e cientistas de dados a capacidade de construir, treinar e implantar modelos de machine learning (ML) rapidamente.

AWS EC2 (Elastic Compute Cloud) - Cria e executa servidores virtuais na nuvem, permitindo aos usuários alugar servidores virtuais na nuvem.

AWS Database Migration Service - Avalia bancos de dados e descobre como migrar do banco de dados atual, auxiliando a migração do bancos de dados para a AWS de maneira fácil e segura.

AWS RDS (Relational Database Service) - Configura, opera e ajusta a escala de um banco de dados relacional na nuvem.

AWS Lambda - Executa código, sem se preocupar com servidores. Ele executa seu código em resposta a eventos, como alterações em dados em um bucket do Amazon S3 ou uma atualização em uma tabela do Amazon DynamoDB, e gerencia automaticamente os recursos de computação para você, tornando mais fácil a construção de aplicações que respondem rapidamente a novas informações.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Serviço de Computação em Nuvem

A

IaaS (Infrastructure as a Service) - oferece infraestrutura de TI virtualizada, como máquinas virtuais, armazenamento e redes. Embora IaaS forneça flexibilidade, ainda requer que o usuário gerencie o sistema operacional e a infraestrutura subjacente.

PaaS (Platform as a Service) - fornece uma plataforma que inclui sistema operacional, ambiente de execução, banco de dados e servidores web. Isso permite que os desenvolvedores foquem no desenvolvimento de aplicativos sem se preocupar com a gestão da infraestrutura e do sistema operacional. Exemplos incluem Google App Engine, Microsoft Azure App Services e Heroku.

SaaS (Software as a Service) - fornece software completo como um serviço acessível pela internet. O usuário utiliza o software, mas não tem controle sobre a plataforma ou a infraestrutura subjacente. Exemplos incluem Google Workspace, Salesforce e Office 365.

BDaaS (Database as a Service) - oferece um banco de dados gerenciado como um serviço.

STaaS (Storage as a Service) - oferece armazenamento de dados como um serviço.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Processamento de Linguagem Natural (PLN)

A

Morfema - O objeto principal de estudo da morfologia é o morfema, definido linguisticamente como “unidade mínima significativa”. Segundo essa definição, o morfema é a menor unidade linguística dotada de significado, considerando que há outras unidades linguísticas que também possuem significado, como a palavra, o sintagma, a frase, a oração, o período, o texto etc.

Lema - é a representação das propriedades sintático-semânticas de um item lexical. Isso significa que, a partir de um lema, é possível saber quais argumentos a ele se relacionam.

Lexema - é sinônimo de unidade lexical, o que implica características de som, forma e significado.

Radical - raiz ou radical é o morfema nuclear de uma palavra, ou seja, aquele constituinte básico que expressa sua base significativa, que designa o significado lexical da palavra. Portanto, ele é o componente comum a todas as palavras que pertencem à mesma família.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Machine learning

A

1) Aprendizado supervisionado
Nesse tipo de aprendizado, os computadores são treinados usando exemplos de entrada e saída correspondente. Por exemplo, imagine que estamos construindo um modelo para classificar e-mails entre e-mails de spam e e-mails legítimos. Para isso, utilizamos diversos e-mails que contêm a resposta à pergunta “É spam?”. Através das características dos e-mails, como palavras-chave, comprimento do texto e presença de links, o algoritmo aprende a rotular o conteúdo como spam. Esse modelo é conhecido como modelo de classificação. Ele identifica padrões associados a cada categoria, permitindo que, posteriormente, o modelo classifique novos e-mails com base no treinamento recebido. Dessa forma, é possível filtrar e organizar a caixa de entrada de maneira mais eficiente.

2) Aprendizado não supervisionado
Nesse tipo de aprendizado, os computadores exploram dados não rotulados para descobrir padrões e estruturas ocultas. Uma técnica comum utilizada nesse tipo de aprendizado é o clustering, que é o processo de agrupar e categorizar grupos de dados. Em um contexto de e-commerce, por exemplo, podemos identificar padrões e grupos de compras semelhantes. Você pode descobrir grupos de clientes que tendem a comprar produtos de moda, outros grupos que preferem produtos eletrônicos, e assim por diante.

3) Semi-supervisionado
Em sistemas que utilizam técnicas de aprendizado semi-supervisionado, temos uma situação onde uma parte dos dados é rotulada e outra parte não é rotulada. Imagine uma plataforma como a Netflix, por exemplo, onde os dados rotulados seriam as classificações dos usuários em relação aos filmes e séries assistidos, enquanto os dados não rotulados seriam os filmes e séries não avaliados por eles.

Para aproveitar ao máximo essas informações, podemos usar um algoritmo de aprendizado supervisionado, como a regressão logística ou a árvore de decisão. Esses algoritmos analisam os dados rotulados, identificam padrões e relacionamentos entre as preferências dos usuários e, em seguida, aplicam esses padrões aos dados não rotulados. Assim, o sistema pode fazer previsões e recomendações mais precisas e personalizadas, mesmo para filmes e séries não avaliados anteriormente.

4) Aprendizado por reforço
Esse tipo de aprendizado é o que mais se diferencia dos outros que falamos. No aprendizado por reforço, um agente é treinado para tomar sequências de decisões, recebendo recompensas ou penalidades em troca. O objetivo é que o agente aprenda a tomar as melhores ações para maximizar as recompensas ao longo do tempo. Esse tipo de aprendizado é amplamente aplicado na robótica e em jogos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Support Vector Machine - SVM

A

O algoritmo SVM, ou Support Vector Machine, é um algoritmo de aprendizado de máquina supervisionado que pode ser usado para problemas de classificação e regressão. Ele é baseado na ideia de encontrar um hiperplano que melhor separe os dados em diferentes classes.

Em um problema de classificação, o SVM busca encontrar um hiperplano que maximize a distância entre os pontos de cada classe. Essa distância é chamada de margem de separação. Os pontos que estão na margem de separação são chamados de vetores de suporte. Ao encontrar um hiperplano com a maior margem de separação, o SVM está garantindo que os dados de cada classe serão classificados corretamente com maior probabilidade.

O SVM é um algoritmo poderoso que pode ser aplicado a uma ampla gama de problemas. Ele é especialmente eficaz em problemas de classificação com dados não lineares.
Aqui estão alguns exemplos de aplicações do algoritmo SVM:
Detecção de spam
Diagnóstico médico
Reconhecimento facial

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Rede Neural Convolucional - CNN

A

Rede Neural Convolucional (ConvNet / Convolutional Neural Network / CNN) é um algoritmo de Aprendizado Profundo que pode captar uma imagem de entrada, atribuir importância (pesos e vieses que podem ser aprendidos) a vários aspectos / objetos da imagem e ser capaz de diferenciar um do outro. O pré-processamento exigido em uma ConvNet é muito menor em comparação com outros algoritmos de classificação. Enquanto nos métodos primitivos os filtros são feitos à mão, com treinamento suficiente, as ConvNets têm a capacidade de aprender esses filtros / características.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Long Short-Term Memory (LSTM)

A

A long short-term memory (LSTM), em português: memória de curto longo prazo, é uma rede neural recorrente (RNN), projetada para lidar com o problema do gradiente desvanecente presente em RNNs tradicionais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Twin Delayed Deep Deterministic Policy Gradient - TD3

A

O Twin Delayed Deep Deterministic Policy Gradient (TD3) é um algoritmo de aprendizado por reforço que se baseia no conceito de Deep Deterministic Policy Gradient (DDPG). O DDPG é uma extensão do algoritmo de Q-Learning, que é um dos principais algoritmos de Reinforcement Learning.

O TD3 foi proposto como uma melhoria do DDPG, com o objetivo de superar algumas limitações desse algoritmo. Uma das principais limitações do DDPG é a tendência de superestimar os valores de Q, o que pode levar a um desempenho subótimo do agente. O TD3 utiliza duas redes neurais, conhecidas como “critic networks”, para estimar os valores de Q de forma mais precisa.

Além disso, o TD3 utiliza uma técnica chamada “target policy smoothing”, que adiciona ruído às ações selecionadas pelo agente. Isso ajuda a evitar que o agente fique preso em mínimos locais e a explorar melhor o espaço de ações. O TD3 também utiliza uma técnica chamada “delayed policy updates”, que atrasa a atualização da política do agente, permitindo que ele colete mais dados antes de atualizar suas ações.

O Reinforcement Learning funciona através de um processo de interação contínua entre um agente e um ambiente. O agente toma ações em um determinado estado do ambiente e recebe uma recompensa numérica com base nas ações realizadas. O objetivo do agente é aprender a tomar as melhores ações possíveis para maximizar a recompensa total ao longo do tempo.

Para alcançar esse objetivo, o agente utiliza uma função de valor, que estima o valor esperado de uma determinada ação em um determinado estado. Essa função de valor é atualizada a cada interação do agente com o ambiente, com base no feedback recebido.

22
Q

K-Vizinhos Mais Próximos - KNN

A

kNN, ou algoritmo de k vizinhos mais próximos, é um algoritmo de machine learning que usa proximidade para comparar um ponto de dados com um conjunto de dados no qual ele foi treinado e memorizado para fazer previsões. Esse aprendizado baseado em instância confere ao kNN a denominação de “aprendizado preguiçoso” e permite que o algoritmo execute problemas de classificação ou regressão. O kNN parte do pressuposto de que pontos semelhantes podem ser encontrados próximos uns dos outros — aves da mesma espécie voam juntas.

Como algoritmo de classificação, o kNN atribui um novo ponto de dados ao conjunto majoritário dentro de seus vizinhos. Como algoritmo de regressão, o kNN faz uma previsão com base na média dos valores mais próximos do ponto de consulta.

O kNN é um algoritmo de aprendizado supervisionado no qual o “k” representa o número de vizinhos mais próximos considerados no problema de classificação ou regressão, e “NN” representa os vizinhos mais próximos do número escolhido para k.

23
Q

Bibliotecas Python

A

Cartopy - A biblioteca Cartopy é amplamente utilizada em Python para manipulação de dados geoespaciais e visualização de mapas. Ela oferece suporte para transformações entre diferentes sistemas de referência espacial, incluindo SIRGAS 2000 e WGS-84, tornando-a adequada para o que é requerido no projeto.

Folium - O Folium é uma biblioteca Python usada para criar mapas interativos, especialmente aqueles baseados no Leaflet.js.

Matplotlib - O Matplotlib é uma biblioteca de plotagem em Python que permite criar visualizações estáticas, animadas e interativas.

Numpy - O Numpy é uma biblioteca fundamental para computação científica em Python, oferecendo suporte para arrays e funções matemáticas.

PyTorch - O PyTorch é uma biblioteca de aprendizado de máquina.

24
Q

Domínio de Desempenho da Equipe

A

Visão e objetivos - é fundamental que todos estejam cientes da visão e dos objetivos do projeto. A visão e os objetivos são comunicados ao longo do projeto. Isso inclui fazer referência aos resultados pretendidos quando a equipe do projeto estiver engajada na tomada de decisões e na solução de problemas;

Papéis e responsabilidades - é importante garantir que os membros da equipe do projeto entendam e cumpram suas funções e responsabilidades. Isso pode incluir a identificação de lacunas de conhecimento e habilidades, bem como estratégias para abordar essas lacunas por meio de treinamento, orientação ou coaching;

Operações da equipe do projeto - facilitar a comunicação, a resolução de problemas e o processo de chegada a um consenso da equipe do projeto pode incluir trabalhar com a equipe para desenvolver um termo de abertura e um conjunto de diretrizes operacionais ou normas da equipe do projeto;

Orientação - pode ser direcionada à equipe geral do projeto para manter todos na direção certa. Cada membro da equipe do projeto também pode fornecer orientação sobre uma tarefa ou entrega específica;

Crescimento - identificar as áreas em que a equipe do projeto está tendo um bom desempenho e apontar áreas onde a equipe do projeto pode melhorar, ajudam-na a crescer. Ao trabalhar de forma colaborativa, a equipe do projeto pode identificar metas de melhoria e tomar medidas para cumpri-las.

25
Q

Princípios do Gerenciamento de Projeto

A

Nos termos do Guia, os princípios funcionam como diretrizes fundamentais para a formulação da estratégia, a tomada de decisões e a resolução de problemas. Frequentemente, os padrões e as metodologias profissionais se baseiam em princípios. Perceba que os princípios funcionam como leis ou regras e são prescritivos por natureza, contudo podem ser flexibilizados para se ajustarem à dinâmica do gerenciamento de projetos. O conjunto de princípios listados pelo Guia são:

  1. Intendência: o gerente de projeto deve ser um administrador diligente, respeitoso e atencioso;
  2. Equipe: deve-se promover um ambiente colaborativo para a equipe do projeto;
  3. Partes interessadas: recomenda-se o envolvimento, de fato, da equipe de projeto com as partes interessadas;
  4. Valor: enfoque na geração de valor por meio das entregas e dos resultados do projeto
  5. Visão sistêmica: é preciso reconhecer, avaliar e reagir às interações dos sistemas (ambientes) que envolvem o projeto;
  6. Liderança: a demonstração de comportamentos de uma liderança equilibrada e adequada é essencial;
  7. Tailoring: é necessário promover adaptações de acordo com o contexto;
  8. Qualidade: deve-se incluir qualidade nos processos e nas entregas;
  9. Complexidade: avaliar a complexidade inerente ao comportamento humano, às incertezas e às ambiguidades, ao longo do projeto;
  10. Riscos: capacidade de analisar os riscos envolvidos e desenvolver as respostas adequadas;
  11. Resiliência: capacidade de adaptação e resiliência;
  12. Mudança: para alcançar o futuro estado previsto, é preciso aceitar a mudança.
26
Q

Domínios de Desempenho

A

Um domínio de desempenho do projeto é um grupo de atividades relacionadas, que são críticas para a entrega eficaz dos resultados do projeto. Os domínios de desempenho de projetos são áreas de foco interativas, interrelacionadas e interdependentes que trabalham em uníssono para alcançar os resultados desejados do projeto. Existem oito domínios de desempenho de projetos. São eles:

1. Partes Interessadas (stakeholders) - Domínio que reconhece todos os indivíduos, grupos ou organizações que possam afetar, ser afetadas, ou sentirem-se afetadas por uma decisão, atividade, ou resultado de um projeto.

2. Equipe - Domínio de desempenho que envolve estabelecer a cultura e o ambiente que permitem que os grupos de indivíduos evoluam de modo a constituírem uma equipe de projeto de alto desempenho.

3. Abordagem de desenvolvimento e ciclo de vida - Domínio de desempenho no qual se estabelecem a abordagem de desenvolvimento do projeto, a cadência das entregas e o ciclo de vida do projeto.

4 . Planejamento - Domínio de desempenho que relaciona diversos processos de estimativas dos esforços que serão necessários para terminar o projeto dentro dos limites de tempo e de recursos estabelecidos.

5. Trabalho do projeto - Domínio de desempenho do projeto associado ao estabelecimento dos processos de trabalho e à execução das atividades que permitirão que a equipe do projeto gere as entregas e os resultados esperados.

6. Entrega - Domínio de desempenho do projeto que se concentra em atender aos requisitos, ao escopo e às expectativas de qualidade para produzir as entregas esperadas que conduzirão aos resultados pretendidos.

7. Medição - Domínio de desempenho do projeto no qual se estabelecem medidas para avaliação do desempenho do projeto, bem como a implementação de respostas adequadas para manter o desempenho ideal.

8. Incerteza - Domínio de desempenho do projeto no qual as ameaças e as oportunidades são identificadas e exploradas pelas equipes de projeto, que avaliam e decidem como lidar vários graus de incerteza inerente ao projeto.

27
Q

Tempo máximo de execução - SCRUM

A

No Scrum temos cinco eventos e cada um deles tem um tempo máximo de execução.

Sprint - 1 mês
Planejamento - 8 horas
Reunião Diária - 15 minutos
Revisão - 4 horas
Retrospectiva - 3 horas

28
Q

Respostas aos Riscos Identificados

A

Na etapa de elaboração das respostas aos riscos identificados, o gerente de projeto busca desenvolver opções para aumentar as oportunidades (riscos de natureza positiva) e para reduzir as ameaças (riscos de natureza negativa) relacionados aos objetivos do projeto. As principais estratégias para lidar com as ameaças, ou seja, com os riscos que podem ter impactos negativos nos objetivos do projeto são:

ESCALAR - estratégia apropriada quando a equipe do projeto ou o seu patrocinador concorda que uma ameaça está fora do escopo do projeto ou que a resposta proposta excede a autoridade do gerente do projeto; os riscos escalados são gerenciados no nível nível dos portfólios, dos programa ou outras partes relevantes da organização, mas não são tratados diretamente no nível do projeto; cabe ao gerente do projeto determinar quem deve ser notificado sobre as ameaças que excedem a sua governança e comunicar os detalhes a essas pessoas ou partes da organização;

PREVENIR - a equipe do projeto age para eliminar a ameaça ou para proteger o projeto contra o seu impacto; envolve a alteração do plano de gerenciamento do projeto para eliminar totalmente uma ameaça;

TRANSFERIR - a equipe do projeto transfere o impacto de uma ameaça para terceiros, juntamente com a responsabilidade pela sua resposta; transferir o risco passa a responsabilidade de gerenciamento para outra parte, mas não o elimina;

MITIGAR OU REDUZIR - a equipe do projeto age para reduzir a probabilidade de ocorrência ou do impacto do risco para limites aceitáveis; adotam-se ações antecipadas para reduzir a probabilidade e o impacto de um risco, ao invés de tentar reparar o dano depois de o risco ter ocorrido;

ACEITAR - a equipe do projeto reconhece a existência do risco, mas decide não agir, a menos que o risco ocorra; estratégia adotada quando não é possível ou não é economicamente viável abordar um risco específico de qualquer outra forma.
Nota-se que o plano de contingência é uma das possíveis abordagens no âmbito da estratégia de aceitação. A estratégia de aceitação é indicada quando a equipe do projeto decidiu não alterar o plano de gerenciamento do projeto para lidar com um risco identificado; a equipe do projeto não conseguiu identificar outra estratégia de resposta mais adequada; ou os riscos não se mostram relevantes o suficiente para exigir ações prévias; nesse caso, pode-se tratar a ameaça estabelecendo uma reserva de contingência, incluindo valores para tempo, dinheiro ou recursos para cuidar do risco, caso tal risco se materialize.

29
Q

Gerenciamento de Riscos

A

Conforme o Guia PMBOK, o gerenciamento de riscos do projeto envolve um conjunto de atividades, que são logicamente agrupadas em seis grandes etapas:

1. Planejar o gerenciamento dos riscos: processo de definição de como conduzir as atividades de gerenciamento dos riscos de um projeto.

2. Identificar os riscos: determinação dos riscos que podem afetar o projeto e de produzir a documentação das suas características.

3. Realizar a análise qualitativa dos riscos: processo de priorização de riscos para análise ou ação posterior por meio da avaliação e da combinação de sua probabilidade de ocorrência e do seu impacto.

4. Realizar a análise quantitativa dos riscos: processo de analisar numericamente o efeito dos riscos identificados nos objetivos gerais do projeto.

5. Planejar as respostas aos riscos: desenvolvimento de opções e de ações para aumentar as oportunidades e reduzir as ameaças aos objetivos do projeto.

6. Controlar os riscos: implementar planos de respostas aos riscos, acompanhar os riscos identificados, monitorar riscos residuais, identificar novos riscos e avaliar a eficácia do processo de gerenciamento dos riscos durante todo o projeto.

30
Q

Project Charter - Plano básico do projeto

A

O plano básico do projeto (project charter) é um documento essencial que serve como base para iniciar e autorizar formalmente um projeto. Ele deve incluir informações fundamentais para garantir que o projeto seja bem planejado desde o início. Isso inclui:

1. Justificativa do projeto: explica por que o projeto está sendo realizado.

2. Descrição do projeto: fornece uma visão geral do escopo e dos objetivos.

3. Estimativas de recursos, custo e tempo: ajudam a planejar os principais elementos necessários para a execução e viabilidade do projeto.

31
Q

Cadeia de Valor do Serviço - ITIL 4

A

A Cadeia de Valor do Serviço ITIL
O ITIL 4 descreve a cadeia de valor do serviço como uma combinação de seis atividades principais que trabalham juntas para cocriar valor para os usuários finais, entregando um produto ou serviço.

As atividades empregam diferentes combinações de práticas de gestão ITIL para realizar um determinado tipo de trabalho. Além disso, todas essas atividades estão interligadas e recebem insumos de fontes externas ou de dentro da cadeia de valor do serviço. Abaixo está a lista de atividades descritas na cadeia de valor do serviço ITIL 4:

Plano: A criação de planos, políticas, padrões e definição da direção para um determinado fluxo de valor.
Melhorar: Garantir a melhoria contínua das práticas, produtos e serviços oferecidos pela organização.
Engajar: Estabelecer boas relações com todas as partes interessadas e usuários finais, para fornecer transparência e um entendimento claro dos produtos e serviços.
Desenho e transição: garante que os produtos e serviços oferecidos atendam continuamente às demandas dos stakeholders.
Obter/construir: garante a disponibilidade de componentes de serviço, como hardware, software, serviços, etc., quando e onde forem necessários.
Entrega e suporte: garante que os serviços sejam entregues e apoiados de forma que atenda às expectativas das partes interessadas.

32
Q

ITIL 4

A

ITIL 4 é a versão mais recente do framework de gerenciamento de serviços de TI, lançada em 2019. Ela introduz o Sistema de Valor de Serviço (SVS), que integra componentes e atividades para criar valor por meio de serviços. As quatro dimensões do ITIL 4 são: Organizações e Pessoas, Informação e Tecnologia, Parceiros e Fornecedores, e Fluxos de Valor e Processos. Além disso, o ITIL 4 enfatiza a flexibilidade e a colaboração, substituindo o termo “processos” por “práticas”, que abrangem 34 áreas focadas em resultados e melhoria contínua.

O Sistema de Valor de Serviço (SVS) do ITIL 4 funciona como um modelo integrado que orquestra a criação e entrega de valor por meio de serviços. Ele é composto por cinco elementos principais:
1. Princípios Orientadores: Direcionam decisões e ações, garantindo foco no valor e colaboração.
2. Governança: Assegura que as operações estejam alinhadas com a estratégia organizacional.
3. Cadeia de Valor de Serviço: Define atividades como planejar, engajar e melhorar, que transformam demandas em valor.
4. Práticas de Gestão: Fornecem orientações sobre como executar as atividades na cadeia de valor.
5. Melhoria Contínua: Promove o aperfeiçoamento constante das práticas e serviços

33
Q

Princípios da segurança da informação

A

Para permitir que você possa aplicar na Internet cuidados similares aos que costuma tomar em seu dia a dia, é necessário que os serviços disponibilizados e as comunicações realizadas por este meio garantam alguns requisitos básicos de segurança, como:

Identificação: permitir que uma entidade se identifique, ou seja, diga quem ela é.

Autenticação: verificar se a entidade é realmente quem ela diz ser.

Autorização: determinar as ações que a entidade pode executar.

Integridade: proteger a informação contra alteração não autorizada.

Confidencialidade ou sigilo: proteger uma informação contra acesso não autorizado.

Não repúdio: evitar que uma entidade possa negar que foi ela quem executou uma ação.

Disponibilidade: garantir que um recurso esteja disponível sempre que necessário.

34
Q

Binary Large Object (BLOB)

A

Um Binary Large Object (BLOB) é um tipo de dado no MySQL que permite armazenar dados binários, como imagens, arquivos multimídia e PDFs.

Por exemplo, ao desenvolver aplicações que precisam de um banco de dados integrado onde imagens devem estar sincronizadas com dados relacionados (por exemplo, um portal de funcionários, um banco de dados de estudantes ou uma aplicação financeira), pode ser útil armazenar imagens como fotos de passaporte e assinaturas diretamente no banco de dados MySQL, junto com outras informações associadas. É aqui que o tipo de dado BLOB do MySQL é útil. Essa abordagem elimina a necessidade de um sistema de arquivos separado para armazenar imagens. Além disso, centraliza o banco de dados, tornando-o mais portátil e seguro, já que os dados ficam isolados do sistema de arquivos. Fazer backups também se torna mais simples, pois é permitido criar um único arquivo de dump do MySQL contendo todos os seus dados.

A recuperação de dados é mais rápida e, ao criar registros, é possível garantir que as regras de validação e a integridade referencial sejam mantidas, especialmente ao usar as transações do MySQL.

Compactação de dados textuais
Ao armazenar um BLOB grande contendo dados textuais, o analista deverá considerar compactá-lo primeiro e não deve usar esta técnica quando a tabela inteira estiver compactada por InnoDB ou MyISAM - A compactação de dados textuais antes de armazená-los em um BLOB pode reduzir significativamente o espaço de armazenamento necessário. No entanto, se a tabela inteira já estiver compactada por mecanismos como InnoDB ou MyISAM, a compactação adicional pode não ser necessária, pois é provável que não surtirá qualquer efeito. Conforme o manual do MySQL [1] [2] essa característica pode até mesmo prejudicar o armazenamento, introduzindo redundância e complexidade desnecessária.

Armazenamento de colunas BLOB
Para uma tabela com diversas colunas, afim de reduzir os requisitos de memória para consultas que não utilizam a coluna BLOB, o analista deverá considerar dividir a coluna BLOB em uma tabela separada e referenciá-la com uma consulta de junção quando necessário - De forma geral, armazenar colunas BLOB em uma tabela separada pode melhorar o desempenho, especialmente se a maioria das consultas não precisar acessar os dados BLOB. Isso reduz os requisitos de memória e I/O para consultas que não envolvem os BLOBs, pois elas não precisarão carregar as grandes colunas BLOB desnecessariamente. Essa é uma indicação do próprio manual oficial do MySQL [1]. Esa situação é especialmente útil para tabelas que possuem muitas colunas.

Por exemplo, imagine o banco de dados de uma loja. Esse banco de dados possui uma tabela com informações de cadastro dos clientes. Além dos dados de cadastro, essa tabela armazena imagens digitalizadas de documentos dos clientes no formato BLOB. Como resultado, todas as consultas ao cadastro dos clientes carregam essas imagens em memória, mesmo que a maioria das consultas precise apenas dos dados textuais. As imagens são necessárias apenas em situações específicas, como conferências e auditorias. Para otimizar essa situação, pode-se criar uma tabela separada para armazenar as imagens digitalizadas dos documentos. Dessa forma, essas imagens seriam acessadas apenas quando necessário, evitando o carregamento desnecessário de grandes volumes de dados em memória durante consultas comuns.

Recuperação de um valor BLOB
Como os requisitos de desempenho para recuperar e exibir um valor BLOB podem ser muito diferentes de outros tipos de dados, o analista deverá colocar a tabela específica do BLOB em um dispositivo de armazenamento diferente ou até mesmo em uma instância de banco de dados separada. Por exemplo, para recuperar um BLOB pode ser necessária uma grande leitura sequencial de disco, mais adequada a um disco rígido tradicional do que a um dispositivo SSD - Essa é uma recomendação específica do manual do banco de dados [1]. De maneira geral, os requisitos de desempenho para recuperar e exibir um valor BLOB podem ser muito diferentes de outros tipos de dados. Dessa forma, pode ser aconselhável colocar a tabela específica do BLOB em um dispositivo de armazenamento diferente ou até mesmo em uma instância de banco de dados separada. Por exemplo, para recuperar um BLOB, pode ser necessária uma grande leitura sequencial de disco, mais adequada a um disco rígido tradicional do que a um dispositivo SSD, evitando assim que o sistema operacional precise realizar muitas operações de I/O no mesmo sistema em que o banco de dados se encontra, reduzindo os bloqueios de dados e minimizando a necessidade de divisão de recursos.

Fonte:
- https://dev.mysql.com/doc/refman/8.0/en/optimize-blob.html
- http://dev.mysql.com/doc/refman/8.3/en/innodb-c…

35
Q

Big Data

A

Big Data é um conjunto de dados, ou dataset, muito grande, que devido ao seu tamanho e diversidade não podem ser analisados e gerenciados através de ferramentas clássicas como os sistemas de banco de dados (SGBD). Para realizar a ingestão dos dados (e por vezes a análise) em um dataset existem muitas ferramentas e metodologias. Dentre elas, podemos citar duas formas:

➡️ Ingestão em lote (batch) - A ingestão em Batch, é feita analisando um lote de dados os quais foram agrupados e disponibilizados em um intervalo de tempo específico de forma sequencial. Nesse caso as tarefas são executadas através de agendamento (intervalos programados) para execução, exigindo que todos os dados da tarefa sejam carregados em algum tipo de armazenamento para realizar o processamento, sendo executado até o término da última tarefa do lote. Essa opção é geralmente utilizada quando se trabalha com grandes volumes de dados ou fontes de sistemas legados, onde os dados não podem ser trabalhados em streaming ou fluxo de tempo real.

➡️ Ingestão em streaming (fluxo) - A ingestão de fluxo ou streaming é o procedimento de ingestão realizado com registros de dados continuamente e em tempo real, ao contrário do agendamento em lotes. Normalmente, esse tipo de procedimento é muito útil para fontes que enviam dados pequenos (na ordem de kilobytes) dentro de um fluxo contínuo de grande volume e alta velocidade conforme a geração desses dados. Processos assim, conseguem gerar análises quase instantâneas das informações. Ou seja, os dados gerados para análise são contínuos e simultâneos, vindos geralmente de muitas fontes de dados pois incluem uma ampla variedade de informações.

Nesse contexto, vale salientar que a forma de ingestão de dados varia conforme as necessidades e regras de negócio. De qualquer forma, muitas das ferramentas de análise podem ter dados coletados periodicamente, não havendo necessidade de processamento em tempo real, pois a análise considera dados históricos com a mesma relevância de dados atuais. No entanto, em algumas situações específicas, é importante que os dados sejam processados e analisados de forma instantânea para auxiliar na tomada de decisões de maneira eficaz e oportuna.

Kappa Architecture
Foi criada como uma simplificação da arquitetura Lambda. Seu objetivo é tratar tanto os dados em tempo real quanto os dados históricos da mesma maneira, utilizando um único fluxo de dados. Em vez de ter duas camadas separadas, como na Lambda (processamento em fluxo e em lote), a Kappa processa todos os dados de maneira contínua, em um pipeline de streaming. Essa arquitetura é frequentemente usada quando o foco é em dados em tempo real, sem a necessidade de diferenciar o processamento em lote.

Seu uso é ideal para sistemas em que o processamento em tempo real é a única preocupação e onde não há grandes benefícios em ter uma camada de processamento em lote separada.

Lambda
Ao lidar com conjuntos de dados massivos, executar consultas complexas pode ser demorado, e essas consultas não são viáveis em tempo real. Para lidar com isso, frequentemente são usados algoritmos como MapReduce, que processam os dados em paralelo. Os resultados desse processamento são então armazenados separadamente dos dados brutos para consulta posterior.

Contudo, essa abordagem apresenta uma desvantagem: a latência. Se o processamento demorar horas, as consultas podem retornar resultados desatualizados, de horas atrás. O ideal seria obter resultados em tempo real, mesmo que com menor precisão, e combiná-los com os dados de processamento em lote.

A arquitetura Lambda, proposta por Nathan Marz, resolve esse problema com dois fluxos de processamento de dados:

➡️ Caminho frio (camada de lote): Armazena os dados brutos e os processa em lote, resultando em uma visão de lote que é armazenada para consulta.

➡️ Caminho quente (camada de velocidade): Processa os dados em tempo real com baixa latência, mas com menor precisão.

A camada de lote alimenta uma camada de serviço que indexa a visão de lote para consultas eficientes, enquanto a camada de velocidade mantém essa camada atualizada com os dados mais recentes.

Os dados no caminho quente são processados rapidamente, com foco na baixa latência, sacrificando parte da precisão. Por exemplo, em um cenário de IoT, a camada de velocidade pode processar uma janela de tempo contínua dos dados dos sensores. Já no caminho frio, a precisão é priorizada, com processamento de grandes volumes de dados sem pressa.

No final, ambos os fluxos se unem no aplicativo de análise. Se o cliente precisar de dados rápidos e em tempo real, ele utilizará os resultados do caminho quente. Para dados mais precisos, ele recorrerá ao caminho frio. Assim, o caminho quente contém uma visão temporária dos dados, que é atualizada posteriormente com resultados mais precisos do caminho frio.

Os dados armazenados na camada de lote são imutáveis e sempre acrescidos, nunca substituídos. Alterações em um dado são registradas como novos eventos com marca temporal, permitindo o recálculo histórico conforme necessário. Isso é essencial para criar novas visões à medida que o sistema evolui.

Existem três camadas principais, que são possíveis de notar na imagem acima:
Batch Layer: Processa dados históricos e fornece uma visão precisa.
Speed Layer: Processa os dados em tempo real, fornecendo resultados aproximados rapidamente.
Serving Layer: Combina os resultados das camadas de lote e de velocidade para oferecer os dados completos e precisos.

Além disso, a implementação da Arquitetura Lambda geralmente utiliza diversas ferramentas para o processamento de dados em lote e em tempo real. O Apache Hadoop é comum para o processamento em lote, enquanto o Apache Spark é versátil, podendo ser usado tanto para processamento em lote quanto em tempo real. O Apache Storm é ideal para o processamento de fluxos de dados em tempo real na camada de velocidade, e o Apache Kafka gerencia o fluxo de dados entre as camadas. O Amazon S3 é utilizado para armazenar dados brutos e processados, enquanto Elasticsearch e Apache Solr permitem consultas rápidas sobre os dados processados. Essas ferramentas juntas oferecem uma solução escalável e eficiente para a Arquitetura Lambda.

Star Schema
É um tipo de modelagem de dados utilizado principalmente em sistemas de data warehouse. É composto por uma tabela de fatos central (que contém os dados principais, como vendas ou transações) ligada a várias tabelas dimensionais (que contêm informações descritivas, como cliente, produto, etc.). O nome “star” vem do fato de que o diagrama de um star schema se parece com uma estrela, onde as tabelas dimensionais se ligam à tabela de fatos no centro.

Snowflake Schema
É uma variação do star schema. Nesse modelo, as tabelas dimensionais são normalizadas, ou seja, as informações nas dimensões são subdivididas em mais tabelas para reduzir a redundância e melhorar a integridade dos dados. O nome “snowflake” vem do fato de que o diagrama dessa modelagem se parece com um floco de neve, pois as dimensões são divididas em múltiplas camadas.

Arquitetura de Dados Federados (ou polystore)
É um modelo que combina dados de múltiplos sistemas de armazenamento ou bancos de dados em uma única visão lógica. Em vez de mover todos os dados para um único banco de dados, a polystore permite que eles sejam armazenados em diferentes sistemas especializados e acessados de forma unificada.

36
Q

Comandos SQL

A

De forma geral, SQL (Structured Query Language) é considerada uma linguagem que representa um conjunto de comandos de forma estruturada com o objetivo de permitir operações como consultas e manipulações como inserções, exclusões, etc. dentro de um banco de dados, independente de qual seja. Para realizar qualquer operação dentro do banco de dados é necessário utilizar certos comandos. Esses comandos são divididos em linguagens que categorizam cada grupo de comando:

➡️ DDL (Data Definition Language) - Tradução literal para Linguagem de Definição de Dados, ou seja, são os comandos que permitem interagir ou definir os objetos do banco. Fazem parte dessa categoria os comandos: CREATE, ALTER e DROP.

➡️ DML (Data Manipulation Language) - Tradução de Linguagem de Manipulação de Dados. São os comandos que interagem e manipulam informações nas tabelas do banco de dados. Fazem parte dessa categoria os comandos: SELECT, INSERT, DELETE e UPDATE (para alguns autores o comando SELECT faz parte da categoria DQL - Data Query Language).

➡️ DQL (Data Query Language) - Tradução para Linguagem de Consulta de dados. São um tipo específico de dados que basicamente trata sobre os comandos de consulta de dados, como o SELECT. Para alguns autores esses comandos possuem classificação própria, e para outros eles são tratados como comandos DML.

➡️ DCL (Data Control Language) - Tradução literal para Linguagem de Controle de Dados. Nessa categoria encontram-se os comandos responsáveis por permitir o controle da parte de segurança, as permissões de acesso e uso aos objetos do banco de dados. Fazem parte dessa categoria os comandos: GRANT, REVOKE e DENY.

➡️ DTL (Data Transaction Language, também chamada de TCL - Transaction Control Language) - Tradução literal para Linguagem de transação de dados ou Linguagem de controle de transação. Nessa categoria são definidos os subconjuntos SQL que fornecem os mecanismos com o objetivo de controlar transações no banco de dados. Fazem parte desse grupo os comandos: BEGIN, COMMIT, ROLLBACK e SAVEPOINT.

➡️ VDL (Vision Definition Language) - Tradução para linguagem de definição de visualização. É responsável por especificar as visualizações do usuário e seu mapeamento conforme o esquema conceitual. Dessa forma, ela define o subconjunto de registros aptos para classes dos usuários quando utilizada a arquitetura de três níveis, criando tabelas virtuais, permitindo ao usuário enxergar as visualizações como um nível conceitual. Em SGBDs modernos essa definição é feita pela linguagem de comandos DDL.

➡️ SDL (Storage Definition Language) - Tradução para Linguagem de definição de armazenamento. Tem como objetivo servir para definição de esquema interno. Dessa forma, através da linguagem SDL é possível definir a estrutura física do banco de dados. Em SGBDs modernos essa definição é feita pela linguagem de comandos DDL.

37
Q

Níveis de organização de um banco de dados

A

De forma geral, dentro da organização de um banco de dados e de um SGBD, algumas características estão presentes, como o uso de catálogos que permitem armazenar a descrição do banco a fim de torná-lo autodescritivo, mantendo o isolamento entre programas e dados, possibilitando o suporte a múltiplas visões do usuário, etc. Todas essas características podem ser melhor observadas a partir de um esquema chamado de esquema de três níveis, ou arquitetura de três esquemas. Esse modelo auxilia na construção e visualização dessas características, além de permitir manter separadas as aplicações do usuário do banco de dados físico. O modelo surgiu quando em 1971, o DBTG (DataBase Task Group) percebeu a necessidade de uma abordagem de dois níveis de visualizações/esquema para separação das responsabilidades do banco de dados e, posteriormente, em 1975, ANSI-SPARC percebeu a necessidade de uma abordagem com os três níveis de abstração composta de um nível externo, um nível conceitual e um nível interno. Vejamos abaixo os níveis existentes na arquitetura de três esquemas:

NÍVEL INTERNO
Basicamente, o nível interno possui um esquema interno, que descreve a estrutura do armazenamento físico do banco de dados. Esse esquema interno usa um modelo de dados físico e descreve os detalhes completos do armazenamento de dados e caminhos de acesso para o banco de dados. Ou seja, o nível interno é o nível mais baixo de abstração, que define e caracteriza a maneira como os dados são armazenados.

NÍVEL CONCEITUAL
Por sua vez, o nível conceitual possui um esquema conceitual e permite descrever a estrutura do banco de dados inteiro para uma comunidade de usuários. O esquema conceitual oculta os detalhes das estruturas de armazenamento físico, concentrando-se na descrição de entidades, tipos de dados, relacionamentos, restrições e operações específicas de usuário. Isto é, o nível conceitual define quais os dados que estão armazenados e qual o relacionamento entre eles. Normalmente, um modelo de dados representativo é usado para descrever o esquema conceitual quando um sistema de banco de dados é implementado. Esse esquema conceitual de implementação costuma estar baseado em um projeto de esquema conceitual em um modelo de dados de alto nível.

NÍVEL EXTERNO
Por fim, o nível externo ou de visão inclui uma série de esquemas externos ou visões do usuário. Cada esquema externo permite detalhar a parte do banco de dados em que um grupo de usuários em particular está interessado, ocultando o restante do banco de dados dos demais grupos de usuários. Assim como acontece no nível conceitual, cada esquema externo é comumente implementado usando um modelo de dados representativo, possivelmente baseado em um projeto de esquema externo em um modelo de dados de alto nível.

A arquitetura “Three-Schema” é útil para explicar conceitos de independência de dados, que se referem à capacidade de modificar um esquema em um nível sem afetar o esquema no nível superior. Existem dois tipos de independência de dados:

➡️ Independência Lógica de Dados: Permite alterar o esquema conceitual sem afetar os esquemas externos ou aplicativos. Por exemplo, é possível adicionar ou remover tipos de registros na base de dados sem impactar os esquemas externos que se referem apenas aos dados existentes.

➡️ Independência Física de Dados: Permite alterar o esquema interno sem afetar o esquema conceitual externo. Isso pode ser necessário para reorganizar os arquivos físicos visando melhorar o desempenho, sem alterar como os usuários veem e interagem com os dados.

38
Q

Chaves

A

➡️ Superchaves: Uma superchave é um conjunto de um ou mais atributos que podem ser usado para identificar exclusivamente uma tupla em uma relação. Pode ser uma combinação de atributos, não sendo geralmente a menor combinação possível. Recebe o nome formal de superchave, contudo pode por vezes ser chamada de chave composta.

➡️ Chaves Mínimas/ Superchave mínima: Uma chave mínima é uma superchave mínima; Ou seja, uma superchave mínima é uma superchave que não pode ter nenhum atributo removido sem perder a capacidade de identificar unicamente as tuplas. Superchaves mínimas são importantes para garantir a eficiência e evitar redundância nos dados.

➡️ Chaves Candidatas: Chaves candidatas são superchaves mínimas, ou seja, são as menores combinações de atributos que podem identificar unicamente cada tupla em uma relação. Podem ser compostas por um ou mais atributos e são cruciais para garantir a integridade e a unicidade dos dados na relação. Alguns autores relacionam as superchaves mínimas (ou somente chaves mínimas) e chaves candidatas como sinônimos;

➡️ Chaves Primárias: A chave primária é uma chave candidata escolhida para ser a principal identificadora de uma relação. Cada relação em um banco de dados relacional deve ter uma chave primária. A chave primária deve ser única para cada tupla na tabela e não pode conter valores nulos. Ou seja, chave primária é uma superchave mínima escolhida para servir de referência e identificar uma relação.

➡️ Chaves Alternativas: São as demais chaves candidatas que não são eleitas como primárias. A essas chaves é dada a definição de chaves alternativas (dependendo do autor, são chamadas apenas de chaves candidatas ou chaves únicas).

➡️ Chave simples: Algumas fontes e autores referem-se ao conceito de chave simples quando a chave de uma tabela é formada por apenas um único atributo.

➡️ Chave composta: É uma chave formada pelo conjunto de dois ou mais atributos.

39
Q

Particionamento de Tabelas

A

List Partitioning é uma técnica de particionamento de tabelas em bancos de dados, onde uma tabela é dividida em sub-tabelas (partições) com base em valores específicos de uma coluna ou conjunto de colunas. Cada partição armazena um conjunto predefinido de valores, permitindo uma organização mais eficiente e consultas mais rápidas.

Mais especificamente, o particionamento refere-se a dividir o que é logicamente uma tabela grande em pedaços físicos menores. O particionamento pode proporcionar vários benefícios:

O desempenho das consultas pode ser melhorado drasticamente em certas situações, particularmente quando a maioria das linhas acessadas com frequência está em uma única partição ou em um pequeno número de partições. O particionamento substitui efetivamente os níveis superiores de árvores de índices, tornando mais provável que as partes mais usadas dos índices caibam na memória.
Quando consultas ou atualizações acessam uma grande porcentagem de uma única partição, o desempenho pode ser melhorado utilizando uma varredura sequencial dessa partição em vez de usar um índice, que exigiria leituras de acesso aleatório espalhadas por toda a tabela.
Carregamentos e exclusões em massa podem ser realizados adicionando ou removendo partições, se o padrão de uso for levado em conta no design do particionamento. Excluir uma partição individual usando DROP TABLE, ou fazer ALTER TABLE DETACH PARTITION, é muito mais rápido do que uma operação em massa. Esses comandos também evitam completamente a sobrecarga do VACUUM causada por uma exclusão em massa.

O PostgreSQL oferece suporte nativo para as seguintes formas de particionamento:

Particionamento por Intervalo (Range Partitioning) A tabela é particionada em “intervalos” definidos por uma coluna chave ou um conjunto de colunas, sem sobreposição entre os intervalos de valores atribuídos a diferentes partições. Por exemplo, pode-se particionar por intervalos de datas ou por intervalos de identificadores para objetos de negócios específicos. Os limites de cada intervalo são entendidos como inclusivos no limite inferior e exclusivos no limite superior. Por exemplo, se o intervalo de uma partição é de 1 a 10, e o intervalo da próxima partição é de 10 a 20, então o valor 10 pertence à segunda partição, não à primeira. Para realizar o particionamento por intervalo é utilizado a cláusula PARTITION BY, conforme a sintaxe abaixo:
CREATE TABLE Pessoa (
id int not null,
nome varchar (255),
nascimento date not null
) PARTITION BY RANGE (nascimento);

Na situação indicada serão criadas partições conforme todos os valores presentes no campo ‘nascimento’;
Particionamento por Lista (List Partitioning) A tabela é particionada listando explicitamente conforme os valores chave aparecem em cada partição. Para realizar o particionamento por intervalo é utilizado a cláusula PARTITION OF, conforme a sintaxe abaixo:
CREATE TABLE particao_de_pessoa PARTITION OF Pessoa
FOR VALUES FROM (‘2024-02-01’) TO (‘2024-03-01’);

Na situação indicada será criada uma nova partição contendo apenas os valores presentes dentro do intervalo indicado;

É possível ainda realizar o particionamento por Hash.

40
Q

Comandos

A

INNER JOIN
De forma geral, o ‘INNER JOIN’ retorna apenas linhas que possuem correspondências em ambas as tabelas.

RIGHT JOIN
O ‘RIGHT JOIN’ é um comando que retorna todas as linhas da tabela à direita e as linhas correspondentes da tabela à esquerda, se houverem.

FULL OUTER JOIN
O ‘FULL OUTER JOIN’ é semelhante ao ‘RIGHT JOIN’, mas também inclui todas as linhas da tabela à esquerda, mesmo que não haja correspondência na tabela à direita.

CROSS JOIN
O CROSS JOIN retorna o produto cartesiano das tabelas, ou seja, combina todas as linhas de uma tabela com todas as linhas da outra. Por exemplo, no caso das tabelas A e B, que possuem 9 e 10 linhas, respectivamente, o resultado final terá 9 * 10 = 90 linhas. Cada linha do resultado conterá a combinação de uma linha da tabela A com uma linha da tabela B. Portanto, o resultado irá apresentar 90 registros.

LEFT JOIN
O ‘LEFT JOIN’ retorna todas as linhas da tabela à esquerda (A) e as linhas correspondentes da tabela à direita (B), se houverem.

41
Q

2-Phase Commit (2PC) e 2-Phase Locking (2PL)

A

2-Phase Commit (2PC)
É um protocolo de controle de transações distribuídas. Ele é usado para garantir que todas as partes de uma transação distribuída concordem em confirmar ou reverter a transação de forma atômica, ou seja, todas as partes ou confirmam ou todas abortam. Esse algoritmo é aplicado em sistemas distribuídos para assegurar a execução correta das transações em diferentes nós.

2-Phase Locking (2PL)
É um protocolo de controle de concorrência que garante a serialização de transações, evitando conflitos entre transações concorrentes em um sistema, seja ele centralizado ou distribuído. O 2PL é usado para assegurar que uma transação tenha um bloqueio exclusivo antes de operar em um dado recurso, evitando condições de corrida.

42
Q

Banco de Dados NoSQL

A

Neo4J
O banco de dados orientado a grafos é o Neo4J. Esse banco NoSQL permite armazenar e consultar relações entre dados por meio da linguagem de consulta Cypher, orientada grafos.

Segundo o Medium [0]: Neo4j (Network Exploration and Optimization 4 Java) é um sistema de gerenciamento de banco de dados grafo. É altamente escalável, sem esquema (NoSQL) e oferece suporte a regras ACID. Neo4j segue o modelo de grafo de propriedades para armazenar e gerenciar seus dados. Neo4j fornece uma linguagem declarativa poderosa conhecida como Cypher. Cypher é uma linguagem de consulta amigável que usa ASCII-Art para representar padrões gráficos visuais para localizar ou atualizar dados no Neo4J.

MongoDB
O MongoDB é um banco de dados orientado a documentos que armazena dados em formatos semelhantes ao JSON, em um binário denominado BSON. Além disso, para todas as versões lançadas antes de 16 de outubro de 2018, é publicado com licença é GNU AGPL v3.0 da Free Software Foundation e utiliza o Driver Apache 2.0.

De acordo com o Medium: MongoDB é um rico banco de dados NoSQL de código aberto e um dos bancos de dados NoSQL amplamente reconhecidos. Cada banco de dados obtém seu próprio conjunto de arquivos no sistema de arquivos. Um único servidor MongoDB normalmente possui vários bancos de dados.

REDIS
O Redis é um banco de dados de armazenamento em cache. Seu funcionamento é baseado na estrutura de dados em memória, com o banco de dados, cache e corretor de mensagens. Além disso, sua estrutura suporta dados textuais como strings, hashes, listas, conjuntos, entre outros.

Conforme a IBM [2]: Redis (para REmote DIctionary Server) é um software livre, in-memory e um armazenamento de valor-chave NoSQL que é usado principalmente como um cache de aplicativos ou um banco de dados de resposta rápida. Por armazenar os dados na memória e não em um disco ou unidade de estado sólido (SSD), o Redis oferece velocidade, confiabilidade e desempenho incomparáveis.

HBase
O HBase é um banco de dados não relacional do ecossistema Hadoop. É distribuído, escalável, de código aberto e modelado a partir do BigTable do Google.

De acordo com a documentação IBM [3]: HBase é um sistema de gerenciamento de banco de dados não relacional orientado a colunas que é executado sobre o Hadoop Distributed File System (HDFS) . O HBase fornece uma maneira tolerante a falhas de armazenar conjuntos de dados esparsos, que são comuns em muitos casos de uso de big data. É adequado para processamento de dados em tempo real ou acesso aleatório de leitura/gravação a grandes volumes de dados.

43
Q

Ferramentas

A

Ferramentas ETL
São usadas para extrair dados de diversas fontes, transformá-los de acordo com as necessidades do negócio e carregá-los em um data warehouse ou outro sistema de destino. Embora ferramentas ETL possam fornecer alguma visibilidade sobre os dados, seu foco principal é a movimentação e transformação de dados, não o levantamento detalhado da estrutura e conteúdo das bases de dados.

Ferramentas de lineage
Rastreiam a origem e o percurso dos dados através dos sistemas, mostrando de onde os dados vieram, como foram transformados e onde estão atualmente. Ou seja, embora ferramentas de lineage sejam úteis para entender o fluxo de dados, elas não são projetadas para levantar detalhes como quantidade de tabelas, registros, formatos de dados e restrições de integridade.

Ferramentas de profiling de dados
Analisam os dados em uma base de dados para fornecer informações detalhadas sobre a estrutura e o conteúdo, incluindo quantidade de tabelas, quantidade de registros, valores válidos, formatos de dados e restrições de integridade.

Ferramentas de profiling de dados permitem entender e gerenciar a qualidade dos dados em um banco de dados. Elas analisam e identificam a estrutura, o conteúdo e a qualidade dos dados, fornecendo uma visão detalhada necessária para diversas tarefas, como a manutenção da integridade dos dados e a preparação para projetos de migração ou integração de dados. Essas ferramentas examinam a quantidade de tabelas e colunas, os tipos de dados, a quantidade de registros, a distribuição de valores e os perfis estatísticos. Elas também verificam a qualidade dos dados, como a validade dos valores, os padrões de formatação e a consistência, além de assegurar as restrições de integridade, incluindo chaves primárias e estrangeiras e restrições únicas e not null.

Os benefícios das ferramentas de profiling incluem a melhoria da qualidade dos dados ao identificar e corrigir dados errôneos ou inconsistentes, a preparação adequada para processos de ETL e migração de dados, a garantia de conformidade com políticas de governança e regulamentos legais e a otimização do desempenho do banco de dados. Exemplos de ferramentas de profiling incluem IBM InfoSphere Information Analyzer, Informatica Data Quality, Talend Open Studio for Data Quality, Microsoft SQL Server Data Tools (SSDT) e Ataccama ONE.

Ferramentas de modelagem de dados
São usadas para criar diagramas que representam a estrutura dos dados em uma base de dados, como diagramas ER (Entidade-Relacionamento). Nesse contexto, ainda que sejam úteis para visualizar a estrutura dos dados, essas ferramentas não fornecem uma análise detalhada do conteúdo real dos dados, como valores válidos e quantidade de registros.

Ferramentas de indexação
São usadas para criar e gerenciar índices em uma base de dados, melhorando a velocidade de consultas. Dessa forma, essas ferramentas não são projetadas para levantamento de informações detalhadas sobre a estrutura e o conteúdo das bases de dados.

44
Q

Arquivos de Log MySQL

A

1. Log de Erros (Error Log)
O log de erros registra problemas encontrados ao iniciar, executar ou parar o servidor MySQL (mysqld). Ele é crucial para a depuração e manutenção do servidor.

Informações Incluídas:
- Mensagens de erro que ocorrem durante a inicialização do servidor.
- Avisos e notificações gerais sobre o funcionamento do servidor.
- Mensagens de erro relacionadas a falhas no servidor ou a problemas de conexão.

Uso: Utilizado por administradores de banco de dados para identificar e resolver problemas operacionais. Configurado com a opção –log-error.

2. Log de Consultas Gerais (General Query Log)
O log de consultas gerais armazena informações sobre todas as conexões de clientes estabelecidas e todas as instruções SQL recebidas do cliente.

Informações Incluídas:
- Conexões e desconexões de clientes.
- Todas as instruções SQL executadas pelo servidor.

Uso: Útil para auditoria e depuração, embora possa gerar grandes volumes de dados. Pode ser ativado com a opção –general-log.

3. Log Binário (Binary Log)
O log binário registra todas as alterações de dados no banco de dados. É usado principalmente para replicação e recuperação de dados.

Informações Incluídas:
- Instruções DML (Data Manipulation Language) como INSERT, UPDATE, DELETE.
- Algumas instruções DDL (Data Definition Language) como CREATE TABLE, ALTER TABLE.

Uso: Essencial para replicação mestre-escravo e para recuperação ponto-a-ponto. Configurado com a opção –log-bin.

*4. Log de Revezamento (Relay Log)**
Usado em servidores escravos na replicação, o relay log armazena mudanças de dados recebidas do servidor mestre.

Informações Incluídas:
- Eventos de mudança de dados que o escravo recebe do binário log do mestre.

Uso: Permite que o servidor escravo aplique as mudanças ao seu banco de dados mesmo se a conexão com o mestre for interrompida.

5. Log de Consultas Lentas (Slow Query Log)
Este log armazena consultas que demoram mais do que um período configurado (long_query_time) para serem executadas.

Informações Incluídas:
- Instruções SQL que excedem o tempo de execução especificado.

Uso: Identificar e otimizar consultas que afetam negativamente o desempenho do banco de dados. Pode ser ativado com a opção –slow-query-log.

6. Logs DDL (DDL Logs)
Logs DDL registram operações atômicas de DDL (Data Definition Language), que são usadas para definir e modificar a estrutura do banco de dados.

Informações Incluídas:
- Instruções DDL como CREATE, ALTER, DROP.

Uso: Monitorar e auditar alterações na estrutura do banco de dados.

45
Q

Arquitetura Orientada a Serviços - SOA

A

A arquitetura orientada a serviços (SOA), ou arquitetura de aplicações baseada em serviços, pode ser trabalhada em três partes: Registro de Serviço; Provedor de Serviços; Usuários de Serviços (Cliente), mas antes de comentar sobre cada uma dessas partes vamos trazer uma breve definição de SOA.
As arquiteturas orientadas a serviços (SOA, do inglês service-oriented architectures) são uma forma de desenvolvimento de sistemas distribuídos em que os componentes de sistema são serviços autônomos, executando em computadores geograficamente distribuídos.

Portanto, estamos diante de um tipo de serviço em que cada um dos componentes podem estar em uma parte e são autônomos, assim temos que ter sempre em mente que SOA é uma arquitetura distribuída.

Na imagem temos três personagens: Registro de Serviço; Provedor de Serviços; Usuários de Serviços. Uma outra informação que pode ser retirada da imagem acima é que tanto o Provedor quanto o Usuário vão, de alguma forma, ao Registro de Serviço.

O Provedor de Serviços vai ao Registro de Serviços para publicar o seu serviço. Isso significa que ele projetou, implementou e disponibilizou os serviços para os usuários.

O Usuário de Serviços vai ao Registro de Serviços para ver se encontra uma solução para o seu problema.

O Registro de Serviços, por sua vez, é quem concentra os serviços, é a parte central. É como se fosse uma grande prateleira.

Concluímos, portanto, que a arquitetura de aplicações baseada em serviços pode ser dividida em provedor, solicitante (cliente) e registrador de serviços

46
Q

Algoritmos de construção de árvores de decisão

A
47
Q

Kanban

A

Visualização do fluxo de trabalho → O Kanban utiliza um quadro visual para representar o fluxo de trabalho, com cada estágio ou coluna representando uma etapa do processo de trabalho. Isso ajuda a equipe a entender o status do trabalho e a identificar gargalos ou atrasos.

Limitação do trabalho em progresso (Limitation Work in Progress - WIP) → O Kanban impõe limites ao número de itens de trabalho em cada etapa do fluxo de trabalho, o que ajuda a evitar a sobrecarga e a manter o foco nas tarefas em andamento. Isso também incentiva a equipe a concluir as tarefas antes de iniciar novas.

Gestão do fluxo de trabalho → A equipe monitora o fluxo de trabalho e faz ajustes conforme necessário para manter o fluxo contínuo de trabalho. Isso ajuda a equipe a identificar e solucionar problemas, além de manter um ritmo de trabalho constante.

Melhoria contínua → O Kanban promove uma abordagem de melhoria contínua, em que a equipe analisa regularmente o processo de trabalho e identifica oportunidades de melhorias.

Entrega contínua → O Kanban enfatiza a entrega contínua, o que significa que as tarefas são concluídas e entregues ao cliente ou ao próximo estágio do processo o mais rápido possível. Isso ajuda a garantir que o trabalho seja entregue no prazo e a aumentar a satisfação do cliente.

48
Q

ciclos de vida de desenvolvimento - PMBOK

A

ciclos de vida de desenvolvimento podem ser:

PREDITIVO (ou em CASCATA): o escopo, prazo e custo do projeto são determinados nas fases iniciais do ciclo de vida. Quaisquer alterações ao escopo são cuidadosamente gerenciadas. Entrega apenas um único produto final, no fim do projeto.

ITERATIVO: o escopo do projeto geralmente é determinado no início do ciclo de vida do projeto, mas as estimativas de prazo e custos são normalmente modificadas à medida que a equipe do projeto compreende melhor o produto. As iterações desenvolvem o produto por meio de uma série de ciclos repetidos, enquanto os incrementos acrescentam sucessivamente à funcionalidade do produto.

INCREMENTAL: a entrega é produzida por meio de uma série de iterações que sucessivamente adicionam funcionalidade em um prazo predeterminado. A entrega contém a capacidade necessária e suficiente para ser considerada completa somente após a iteração final.

ADAPTATIVOS: o escopo detalhado é definido e aprovado antes do início de uma iteração. Os ciclos de vida adaptativos são também chamados ágeis ou de ciclos de vida orientados a mudanças.

HÍBRIDO: é uma combinação de um ciclo de vida adaptativo e um preditivo. Os elementos do projeto que sejam conhecidos ou que tenham requisitos estabelecidos seguem um ciclo de vida de desenvolvimento preditivo, e os elementos que ainda estiverem em evolução seguem um ciclo de vida de desenvolvimento adaptativo.

49
Q

ciclos de vida de desenvolvimento - PMBOK

A

ciclos de vida de desenvolvimento podem ser:

PREDITIVO (ou em CASCATA): o escopo, prazo e custo do projeto são determinados nas fases iniciais do ciclo de vida. Quaisquer alterações ao escopo são cuidadosamente gerenciadas. Entrega apenas um único produto final, no fim do projeto.

ITERATIVO: o escopo do projeto geralmente é determinado no início do ciclo de vida do projeto, mas as estimativas de prazo e custos são normalmente modificadas à medida que a equipe do projeto compreende melhor o produto. As iterações desenvolvem o produto por meio de uma série de ciclos repetidos, enquanto os incrementos acrescentam sucessivamente à funcionalidade do produto.

INCREMENTAL: a entrega é produzida por meio de uma série de iterações que sucessivamente adicionam funcionalidade em um prazo predeterminado. A entrega contém a capacidade necessária e suficiente para ser considerada completa somente após a iteração final.

ADAPTATIVOS: o escopo detalhado é definido e aprovado antes do início de uma iteração. Os ciclos de vida adaptativos são também chamados ágeis ou de ciclos de vida orientados a mudanças.

HÍBRIDO: é uma combinação de um ciclo de vida adaptativo e um preditivo. Os elementos do projeto que sejam conhecidos ou que tenham requisitos estabelecidos seguem um ciclo de vida de desenvolvimento preditivo, e os elementos que ainda estiverem em evolução seguem um ciclo de vida de desenvolvimento adaptativo.

50
Q

Releases no Scrum

A

Releases no Scrum: Entendendo as Entregas Maiores
Release no Scrum, ou lançamento, se refere a um conjunto maior de funcionalidades que são entregues ao cliente ou usuário final em um determinado momento. Diferentemente das entregas incrementais que ocorrem a cada Sprint, uma Release representa um marco significativo no ciclo de vida do produto, geralmente incluindo múltiplas Sprints.

Por que as Releases são importantes?

Entrega de Valor: Marcam momentos em que um conjunto significativo de valor é entregue ao cliente, permitindo que eles comecem a utilizar novas funcionalidades ou melhorias.
Alinhamento com Objetivos de Negócio: As Releases são frequentemente alinhadas com objetivos de negócio mais amplos, como o lançamento de um novo produto ou a atualização de uma versão existente.
Pontos de Referência: As Releases servem como pontos de referência para medir o progresso do projeto e avaliar o retorno sobre o investimento.
Gestão de Portfólio: Em organizações com múltiplos produtos, as Releases ajudam a coordenar o lançamento de diferentes iniciativas.
Como as Releases se relacionam com as Sprints?

Sprints como Blocos Construtores: Cada Sprint contribui para a construção de uma Release. As funcionalidades desenvolvidas em cada Sprint são integradas e testadas para garantir que a Release esteja pronta para ser lançada.
Múltiplas Sprints por Release: Normalmente, uma Release abrange múltiplas Sprints. O número de Sprints necessárias para completar uma Release varia de acordo com a complexidade do produto e dos requisitos.
Planejamento Estratégico: O planejamento das Releases é feito com base no backlog do produto e nos objetivos de negócio.
O que acontece durante uma Release?

Planejamento da Release: É definido o escopo, o cronograma e os recursos necessários para a Release.
Desenvolvimento: As equipes de desenvolvimento trabalham em várias Sprints para construir as funcionalidades da Release.
Teste: A Release é submetida a testes rigorosos para garantir a qualidade e o desempenho.
Deploiement: A Release é implantada no ambiente de produção.
Validação: É verificado se a Release atende aos requisitos e expectativas do cliente.
Quais são os benefícios de utilizar Releases?

Visibilidade: As Releases fornecem uma visão clara do progresso do projeto.
Gerenciamento de Riscos: Os riscos podem ser identificados e mitigados de forma mais eficaz.
Melhoria Contínua: As Releases permitem que a equipe aprenda com cada iteração e faça ajustes no processo.
Satisfação do Cliente: A entrega frequente de valor aumenta a satisfação do cliente.

51
Q

Scrum Master

A

O Scrum Master é o membro do time Scrum responsável por fazer todos entenderem o Scrum. Devido a isso, ele serve ao time, ao Product Owner e a organização.

Quando ele ser ao time, ele é responsável por:
- Treinar os membros do time em autogerenciamento e cross-funcionalidade;
- Ajudar o Scrum Team a se concentrar na criação de incrementos de alto valor que atendem à Definição de Pronto;
- Provocando a remoção de impedimentos ao progresso do Scrum Team; e,
- Garantir que todos os eventos Scrum ocorram e sejam positivos, produtivos e mantidos dentro do Timebox.

Quando serva ao Product Owner, ele é responsável por:
- Ajudar a encontrar técnicas para a definição eficaz de meta do Produto e gerenciamento do Product Backlog;
- Ajudar o Scrum Team a entender a necessidade de itens do Product Backlog claros e concisos;
- Ajudar a estabelecer o planejamento empírico do produto para um ambiente complexo; e,
- Facilitar a colaboração dos stakeholder, conforme solicitado ou necessário.

Quando serva à organização, ele é responsável por:
- Liderar, treinar e orientar a organização na adoção do Scrum;
- Planejar e aconselhar implementações de Scrum dentro da organização;
- Ajudar os funcionários e os stakeholders a compreender e aplicar uma abordagem empírica para trabalhos complexos; e,
- Remover barreiras entre stakeholders e Scrum Teams.