Portal IDEA

Informática Avançada

INFORMÁTICA  AVANÇADA


Banco de Dados e Cloud Computing

Banco de Dados Relacionais

Modelagem de Dados

A modelagem de dados é o processo de criar uma estrutura de dados detalhada que permita armazenar e organizar informações de maneira eficiente em um banco de dados relacional. Esse processo envolve a definição de entidades, atributos e relacionamentos que refletem as necessidades do negócio e as regras de negócio.

Passos na Modelagem de Dados:

1.     Identificação de Entidades: Entidades representam objetos ou conceitos importantes para o negócio, como Clientes, Produtos e Pedidos. Cada entidade torna-se uma tabela no banco de dados.

2.     Definição de Atributos: Atributos são as características ou propriedades de uma entidade. Por exemplo, a entidade Cliente pode ter atributos como Nome, Endereço, e Data de Nascimento.

3.     Determinação de Relacionamentos: Relacionamentos definem como as entidades estão conectadas entre si. Eles podem ser de umpara-um, um-para-muitos ou muitos-para-muitos. Por exemplo, um Cliente pode fazer muitos Pedidos, representando um relacionamento um-para-muitos.

4.     Normalização: Processo de organizar os dados para minimizar a redundância e dependência, dividindo as tabelas maiores em tabelas menores e vinculando-as com chaves estrangeiras. As formas normais (1NF, 2NF, 3NF, etc.) guiam esse processo.

Exemplo de Modelagem:

       Entidades: Cliente, Produto, Pedido

       Relacionamentos: Cliente faz muitos Pedidos; Pedido inclui muitos Produtos

SQL Avançado

SQL (Structured Query Language) é a linguagem padrão para interagir com bancos de dados relacionais. As funcionalidades avançadas de SQL permitem consultas complexas, manipulação de dados e administração de banco de dados.

Consultas Complexas:

1.     Subconsultas: Consultas dentro de outras consultas, usadas para isolar partes de uma consulta maior. Exemplo:

SELECT Nome FROM Cliente WHERE Id IN (SELECT ClienteId FROM Pedido WHERE Data > '2024-01-01');

2.     Junções (Joins): Combinação de linhas de duas ou mais tabelas baseadas em uma condição relacionada. Tipos de junções incluem INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN.

SELECT Cliente.Nome, Pedido.Data FROM Cliente

INNER JOIN Pedido ON Cliente.Id = Pedido.ClienteId;

3.     Funções Agregadas: Funções como COUNT, SUM, AVG, MAX e MIN para realizar cálculos em conjuntos de dados.

SELECT COUNT(*), AVG(Preco) FROM Produto;

4.     Window Functions: Funções que operam em um conjunto

Funções que operam em um conjunto de linhas relacionadas à linha atual. Exemplo: RANK, ROW_NUMBER, LAG, LEAD.

SELECT Nome, Preco, RANK() OVER (ORDER BY Preco DESC) AS

Rank FROM Produto; Manipulação de Dados:

1.     Inserção (INSERT):

INSERT INTO Cliente (Nome, Endereco) VALUES ('João Silva', 'Rua

A, 123');

2.     Atualização (UPDATE):

UPDATE Cliente SET Endereco = 'Rua B, 456' WHERE Id = 1;

3.     Deleção (DELETE):

DELETE FROM Cliente WHERE Id = 1;

4.     Transações: Agrupamento de uma série de operações SQL em uma única unidade de trabalho, garantindo atomicidade, consistência, isolamento e durabilidade (ACID).

BEGIN TRANSACTION;

UPDATE Conta SET Saldo = Saldo - 100 WHERE Id = 1;

UPDATE Conta SET Saldo = Saldo + 100 WHERE Id = 2;

COMMIT;

Otimização de Consultas

Otimização de consultas é o processo de melhorar o desempenho das consultas SQL para garantir tempos de resposta rápidos e eficientes no banco de dados.

Técnicas de Otimização:

1.     Índices: Criação de índices nas colunas usadas em condições de filtragem e junção para acelerar o acesso aos dados.

CREATE INDEX idx_nome_cliente ON Cliente (Nome);

2.     Análise de Plano de Execução: Uso de ferramentas para visualizar e entender como o banco de dados executa uma consulta, identificando gargalos e áreas para melhoria.

3.     Reestruturação de Consultas: Reescrever consultas complexas para simplificar e reduzir o tempo de execução.

-- Consulta complexa

SELECT * FROM Pedido WHERE ClienteId = (SELECT Id FROM

Cliente WHERE Nome = 'João Silva');

-- Reestruturada

SELECT Pedido.* FROM Pedido

INNER JOIN Cliente ON Pedido.ClienteId = Cliente.Id

WHERE Cliente.Nome = 'João Silva';

4.     Particionamento de Tabelas: Divisão de tabelas grandes em partes menores para melhorar o desempenho de leitura e escrita.

5.     Materialized Views: Criação de vistas materializadas para armazenar resultados de consultas complexas e frequentemente usadas, melhorando a performance de leitura.

Exemplo de Uso de Índice:

CREATE INDEX idx_data_pedido ON Pedido (Data);

Conclusão

Os bancos de dados relacionais são fundamentais para o armazenamento e gerenciamento de dados em diversas aplicações. A modelagem de dados adequada, o uso avançado de SQL e a otimização de consultas são práticas essenciais para garantir que os sistemas de banco de dados funcionem de maneira eficiente e atendam às necessidades de desempenho e escalabilidade das organizações. Com essas

habilidades, desenvolvedores e administradores de banco de dados podem criar sistemas robustos, eficientes e fáceis de manter.

Banco de Dados Não-Relacionais (NoSQL)

Conceitos de NoSQL

NoSQL (Not Only SQL) é uma categoria de sistemas de gerenciamento de banco de dados que não segue o modelo tradicional de banco de dados relacional. Ao contrário dos bancos de dados relacionais que usam tabelas, linhas e colunas, os bancos de dados NoSQL são projetados para armazenar dados de maneiras mais flexíveis e escaláveis, sendo especialmente adequados para grandes volumes de dados, alta velocidade de leitura e escrita, e estruturas de dados variadas.

Principais características dos bancos de dados NoSQL:

1.     Escalabilidade Horizontal: Capacidade de expandir o banco de dados distribuindo a carga de trabalho entre vários servidores, em vez de aumentar a capacidade de um único servidor (escalabilidade vertical).

2.     Flexibilidade de Esquema: Permite armazenar dados sem a necessidade de um esquema fixo, facilitando a adaptação a mudanças nos requisitos de dados.

3.     Alta Disponibilidade: Projetado para minimizar o tempo de inatividade e garantir que o sistema esteja sempre disponível, mesmo em caso de falhas de hardware.

4.     Desempenho: Otimizado para operações de leitura e escrita de alta velocidade, atendendo às necessidades de aplicações que requerem respostas rápidas.

 

Tipos de Bancos de Dados NoSQL

Os bancos de dados NoSQL são categorizados em quatro tipos principais, cada um com características e casos de uso específicos:

1.     Bancos de Dados de Documentos:

o    Armazenam dados em documentos semelhantes a JSON ou BSON, permitindo uma estrutura de dados flexível. o Cada documento pode conter diferentes campos e tipos de dados. o Exemplos: MongoDB, CouchDB. o Caso de uso: Aplicações web que requerem dados flexíveis e complexos, como catálogos de produtos e perfis de usuários.

2.     Bancos de Dados de Colunas:

o    Armazenam dados em colunas em vez de linhas, permitindo a leitura e escrita eficientes de grandes volumes de dados. o Ideal para análise de dados em larga escala e armazenamento de séries temporais. o Exemplos: Apache Cassandra, HBase. o Caso de uso: Análise de big data, logs de eventos, sistemas de recomendação.

3.     Bancos de Dados de Chave-Valor:

o    Armazenam dados como pares de chave-valor, onde cada chave é única e associada a um valor.

o    Simples e eficiente para operações de leitura e escrita

rápidas. o Exemplos: Redis, DynamoDB.

o    Caso de uso: Caching, sessões de usuários, armazenamento de configurações.

4.     Bancos de Dados de Grafos:

o    Armazenam dados em nós e arestas, representando relações entre os dados de forma gráfica.

o    Excelentes para modelar e consultar relações complexas.

o    Exemplos: Neo4j, ArangoDB. o Caso de uso: Redes sociais, sistemas de recomendação, análise de redes.

Casos de Uso e Implementação

A escolha de um banco de dados NoSQL depende dos requisitos específicos da aplicação e das características dos dados que precisam ser armazenados e manipulados.

1.     Aplicações Web e Móveis:

o    MongoDB é frequentemente usado para armazenar dados de usuários, catálogos de produtos e conteúdo dinâmico devido à sua flexibilidade e suporte a consultas complexas.

2.     Análise de Big Data:

o    Apache Cassandra é escolhido para análise de grandes volumes de dados devido à sua escalabilidade horizontal e capacidade de lidar com altos volumes de gravação e leitura.

3.     Caching e Sessões:

o    Redis é amplamente utilizado para caching de dados e gerenciamento de sessões de usuários em tempo real, graças à sua velocidade e simplicidade.

4.     Redes Sociais e Recomendação:

o    Neo4j é ideal para modelar e consultar redes sociais, devido à sua capacidade de representar e explorar relacionamentos complexos entre entidades.

5.     Logs e Monitoramento:

o    HBase é adequado para armazenar e analisar grandes volumes de logs de eventos, permitindo consultas rápidas e eficientes em dados de séries temporais.

Exemplo de Implementação com MongoDB:

// Conexão ao MongoDB const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017'; const dbName = 'myDatabase';

MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) =>

{   if (err) throw err;   console.log("Connected successfully to server");   const db = client.db(dbName);

  // Inserir documento   const collection = db.collection('users');   collection.insertOne({    name: "John         Doe",          age:   29,     email:

"john.doe@example.com" }, (err, result) => {     if (err) throw err;     console.log("Document inserted");

    client.close();

  });

});

Conclusão

Os bancos de dados NoSQL oferecem soluções flexíveis, escaláveis e de alto desempenho para uma ampla variedade de aplicações modernas. Com diferentes tipos de bancos de dados NoSQL disponíveis, é possível escolher a

melhor opção para atender às necessidades específicas de armazenamento e processamento de dados. Desde o armazenamento de documentos e análise de big data até caching e modelagem de redes complexas, os bancos de dados NoSQL são essenciais para lidar com os desafios dos dados no mundo atual.

Computação em Nuvem

Conceitos de Cloud Computing

A computação em nuvem, ou cloud computing, é um modelo de entrega de serviços de TI que permite o acesso sob demanda a um pool compartilhado de recursos computacionais configuráveis (como servidores, armazenamento, redes, aplicativos e serviços) através da internet. Esse modelo oferece flexibilidade, escalabilidade e economia de custos, eliminando a necessidade de adquirir e manter infraestrutura física local.

Características da Computação em Nuvem:

1.     Elasticidade e Escalabilidade: Capacidade de aumentar ou diminuir recursos de forma dinâmica, conforme as necessidades de carga de trabalho variam.

2.     Modelo de Pagamento por Uso: Cobrança baseada no consumo real de recursos, permitindo que as empresas paguem apenas pelo que utilizam.

3.     Acesso On-Demand: Recursos e serviços são disponibilizados de forma rápida e automática, sem a necessidade de intervenção humana direta.

4.     Pool de Recursos Compartilhados: Utilização eficiente de recursos ao compartilhar infraestrutura entre múltiplos usuários e aplicações.

5.     Amplo Acesso à Rede: Acessibilidade dos recursos através de uma rede, geralmente a internet, permitindo o uso de diversos dispositivos e locais.

 

Modelos de Serviço: IaaS, PaaS, SaaS

A computação em nuvem é categorizada em três modelos principais de serviço, cada um oferecendo diferentes níveis de controle e responsabilidade sobre os recursos de TI:

1.     Infrastructure as a Service (IaaS):

o    Oferece recursos de infraestrutura virtualizados, como servidores, armazenamento e redes. o Permite aos usuários configurar e gerenciar sistemas operacionais, aplicativos e middleware. o Exemplo: Amazon Web Services (AWS) EC2, Microsoft Azure Virtual Machines, Google Cloud Compute Engine.

o    Caso de uso: Empresas que precisam de controle total sobre sua infraestrutura e desejam evitar os custos de hardware físico.

2.     Platform as a Service (PaaS):

o    Fornece uma plataforma gerenciada que inclui sistemas operacionais, bancos de dados e servidores de aplicação.

o    Os desenvolvedores podem concentrar-se na criação e implantação de aplicativos sem se preocupar com a

gestão da infraestrutura subjacente. o Exemplo: Google App Engine, Microsoft Azure App Services, Heroku. o Caso de uso: Desenvolvimento de aplicações web e móveis, onde a agilidade e a facilidade de implementação são cruciais.

3.     Software as a Service (SaaS):

o    Oferece aplicativos prontos para uso que são acessíveis pela internet.

o    O provedor de serviços gerencia toda a infraestrutura, plataformas e software subjacente.

o    Exemplo:    Google        Workspace, Microsoft    Office         365,

Salesforce.

o    Caso de uso: Empresas que precisam de aplicativos padrão para operações comerciais, como e-mail, CRM e colaboração, sem a necessidade de manutenção de software.

Ferramentas e Plataformas de Cloud

A computação em nuvem é suportada por uma variedade de ferramentas e plataformas que facilitam o desenvolvimento, a implantação, a gestão e a otimização de aplicações e serviços em nuvem.

Principais Ferramentas e Plataformas:

1. Amazon Web Services (AWS):

o    Oferece um amplo conjunto de serviços de IaaS, PaaS e SaaS, incluindo computação, armazenamento, banco de dados, aprendizado de máquina e análise.

o    Ferramentas: AWS Lambda (computação sem servidor), S3 (armazenamento), RDS (banco de dados relacional), ECS (contenedores).

2.     Microsoft Azure:

o    Plataforma de nuvem da Microsoft que fornece serviços de IaaS, PaaS e SaaS integrados com ferramentas de desenvolvimento e gerenciamento.

o    Ferramentas: Azure DevOps (integração contínua e entrega contínua), Azure Functions (computação sem servidor), Azure SQL Database.

3.     Google Cloud Platform (GCP):

o    Plataforma de nuvem do Google que oferece serviços de computação, armazenamento, banco de dados e aprendizado de máquina.

o    Ferramentas: Google Kubernetes Engine (orquestração de contêineres), BigQuery (análise de grandes volumes de dados), Cloud Functions.

4.     IBM Cloud:

o    Oferece uma gama de serviços de nuvem, incluindo IaaS, PaaS e SaaS, com foco em inteligência artificial, blockchain e IoT.

o    Ferramentas: Watson (IA e aprendizado de máquina), Cloud Foundry (plataforma como serviço), IBM Cloud Kubernetes Service.

5.     Docker:

o    Plataforma de código aberto que automatiza a implantação de aplicações em contêineres, permitindo portabilidade e consistência em diferentes ambientes.

o    Caso de uso: Empacotamento de aplicações e suas dependências em contêineres, facilitando o desenvolvimento, teste e implantação.

6.    

Kubernetes:

o    Sistema de orquestração de contêineres que automatiza a implantação, escalabilidade e operações de contêineres.

o    Ferramentas:      Helm (gerenciamento de pacotes para Kubernetes), Prometheus (monitoramento e alerta).

Conclusão

A computação em nuvem revolucionou a forma como as empresas e os desenvolvedores gerenciam, implementam e escalam suas aplicações e serviços. Com uma variedade de modelos de serviço, como IaaS, PaaS e SaaS, e uma ampla gama de ferramentas e plataformas, a nuvem oferece flexibilidade, economia e eficiência sem precedentes. À medida que a tecnologia continua a evoluir, a computação em nuvem se tornará ainda mais integrada e essencial para a infraestrutura de TI moderna, permitindo inovações rápidas e a capacidade de responder rapidamente às demandas do mercado.

Quer acesso gratuito a mais materiais como este?

Acesse materiais, apostilas e vídeos em mais de 3000 cursos, tudo isso gratuitamente!

Matricule-se Agora