Escolar Documentos
Profissional Documentos
Cultura Documentos
Dados
1
Objetivos
2
Conceitos Básicos Banco de
Dados
• Dados: são fatos do mundo real abstraídos num modelo
conceitual e/ou lógico e gravados num modelo físico
Dados são informações brutas e não processadas que podem ser armazenadas e
manipuladas por um sistema de computador. Os dados podem ser representados por
números, textos, imagens, vídeos, áudios ou qualquer outra forma de informações
capturadas e registradas.
Um Banco de Dados (BD) é uma coleção organizada de dados relacionados que são
armazenados eletronicamente em um sistema de computador. Ele é projetado para
permitir a criação, manipulação e recuperação eficiente dos dados, fornecendo uma
estrutura e um conjunto de regras para a organização e o acesso aos dados. Um
banco de dados geralmente é usado para armazenar informações relevantes para
uma determinada aplicação ou contexto.
Além disso, um Banco de Dados pode incluir recursos para definir regras de
3
integridade dos dados, permitir consultas e pesquisas complexas, garantir a
segurança e a privacidade dos dados, e oferecer suporte a transações e controle de
concorrência.
3
Conceitos Básicos Banco de
Dados Usuários/Programadores
SGBD
Programas para Processamento de consultas /
gerenciamento de dados
4
Processos: Os processos no SBD são responsáveis por executar as operações
definidas pelo software do SGBD. Isso inclui processos de gerenciamento do sistema,
como criação de tabelas, definição de esquemas e controle de acesso, bem como
processos de execução de consultas e manipulação de dados.
O SBD é projetado para fornecer recursos que permitem aos usuários criar, recuperar
e manipular dados de forma eficiente. Ele oferece recursos de segurança para
proteger os dados contra acesso não autorizado e mecanismos de backup e
recuperação para evitar a perda de dados em caso de falhas.
Além disso, o SBD permite que vários usuários acessem o banco de dados
simultaneamente, garantindo o controle de concorrência para evitar conflitos entre
as operações de diferentes usuários.
4
Conceitos Básicos Banco de
Dados
• Todo sistema de banco de dados possui um catálogo ou
dicionário de dados - metadados
5
aplicações.
5
Conceitos Básicos Banco de
Dados
Processamento de transações
• Uma Transação é uma coleção de operações que desempenha uma função lógica
única dentro de uma aplicação do sistema de banco de dados.
6
resultado de uma transação não deve interferir no resultado de outras transações
concorrentes. Cada transação deve ser executada como se fosse a única no sistema,
mesmo quando várias transações estão ocorrendo simultaneamente.
6
Conceitos Básicos Banco de
Dados
Linguagem de acesso a banco de dados INSERT
UPDATE
1. SQL (Structured Query DML DELETE
Language) SELECT
MERGE SQL
– Padrão para Sistemas Gerenciadores
SERVER
de Banco de Dados Relacional CREATE TCL=DML
(SGDBR / RDBMS) SQL DDL ALTER
– Composta por DDL, DML e DCL DROP
– Regulamentado pelo comitê ANSI
GRANT
❖ Os SGDBs podem ser : DCL
REVOKE
– hierárquicos
– rede
COMMIT
– relacional TCL ROLLBACK
– Objeto-Relacional (Oracle, SQL SAVEPOINT
Server,DB2,ETC..)
CREATE: Cria objetos no banco de dados, como tabelas, índices, visões, etc.
ALTER: Modifica a estrutura de um objeto existente no banco de dados.
7
TRUNCATE: Remove todos os dados de uma tabela.
Essas são as principais estruturas de comandos em um SGBD. Cada uma delas tem
sua finalidade específica para manipular, definir, controlar e gerenciar os dados e
objetos dentro do banco de dados.
7
Conceitos Básicos Banco de
Dados
Linguagem de acesso a banco de dados
1.1 Linguagem de Manipulação de Dados - DML
Manipulação de dados = recuperação de informações do banco de dados e inserção, remoção e alteração de
dados no banco de dados.
A linguagem de manipulação de dados (do inglês Data-Manipulation Language – DML) é a linguagem que
viabiliza o acesso e a manipulação do dados. Podem ser:
Procedurais: o usuário especifica procedimentos para recuperar os dados que necessita.
Não-procedurais: o usuário descreve os dados que necessita.
Compõem a linguagem DML os comandos INSERT (Para inserir dados nas estruturas), UPDATE (para dados
nas estruturas) , DELETE (para eliminar dados nas estruturas), SELECT (Para realizar consultas) e MERGE
(para sincronizar dados em duas estruturas)
INSERT: O comando INSERT é usado para inserir novos registros em uma tabela
existente. Ele permite adicionar dados a uma ou mais colunas da tabela. A sintaxe
básica é a seguinte:
INSERT INTO tabela (coluna1, coluna2, ...) VALUES (valor1, valor2, ...);
Por exemplo, se tivermos uma tabela chamada "Clientes" com as colunas "ID",
"Nome" e "Email", podemos inserir um novo registro da seguinte forma:
INSERT INTO Clientes (ID, Nome, Email) VALUES (1, 'João', 'joao@email.com');
8
SELECT coluna1, coluna2, ... FROM tabela WHERE condição;
Por exemplo, para selecionar todos os clientes cujo nome começa com a letra "A",
podemos usar o seguinte comando:
DELETE: O comando DELETE é usado para remover registros de uma tabela. Ele
permite que você exclua registros de acordo com determinadas condições. A sintaxe
básica é a seguinte:
Por exemplo, se quisermos excluir todos os clientes cujo nome é "Maria", podemos
usar o seguinte comando:
8
Conceitos Básicos Banco de
Dados
Linguagem de acesso a banco de dados
Os comandos DDL (Data Definition Language, em inglês) são usados para definir e
modificar a estrutura de um banco de dados. Eles permitem criar, modificar e excluir
tabelas, índices, restrições e outros objetos relacionados ao esquema do banco de
dados. Existem três principais comandos DDL: CREATE, ALTER e DROP. Vou explicar
brevemente cada um deles:
CREATE: O comando CREATE é usado para criar novos objetos no banco de dados.
Alguns exemplos de objetos que podem ser criados são tabelas, índices, visões e
procedimentos armazenados. A sintaxe básica é a seguinte:
Por exemplo, para criar uma tabela chamada "Clientes" com as colunas "ID" e
"Nome", podemos usar o seguinte comando:
9
ALTER: O comando ALTER é usado para modificar a estrutura de objetos existentes no
banco de dados. Ele permite adicionar, modificar ou excluir colunas de uma tabela,
bem como fazer outras alterações nas definições dos objetos. A sintaxe básica é a
seguinte:
Por exemplo, para adicionar uma nova coluna chamada "Email" à tabela "Clientes",
podemos usar o seguinte comando:
DROP: O comando DROP é usado para excluir objetos existentes no banco de dados.
Ele permite remover tabelas, índices, visões e outros objetos relacionados ao
esquema. A sintaxe básica é a seguinte:
DROP objeto;
Por exemplo, para excluir a tabela "Clientes" do banco de dados, podemos usar o
seguinte comando:
É importante observar que o comando TRUNCATE não pode ser desfeito (não é
9
possível recuperar os registros excluídos), portanto, deve-se usá-lo com cuidado.
Esses comandos DDL (CREATE, ALTER, DROP e TRUNCATE) são utilizados para definir e
modificar a estrutura do banco de dados. Eles permitem criar objetos, alterar suas
definições, remover objetos ou excluir registros de uma tabela. Cada comando
desempenha um papel importante na administração e modelagem do banco de
dados.
9
Conceitos Básicos Banco de
Dados
Linguagem de acesso a banco de dados
10
REVOKE: O comando REVOKE é usado para revogar privilégios previamente
concedidos a um usuário ou grupo de usuários. Ele remove as permissões
anteriormente definidas. A sintaxe básica é a seguinte:
Esses comandos DCL são importantes para garantir a segurança e controlar o acesso
aos dados em um banco de dados, definindo permissões específicas para os usuários
e grupos de usuários. Lamento novamente pelo equívoco anterior em relação ao
comando COMMIT.
10
Conceitos Básicos Banco de
Dados
Linguagem de acesso a banco de dados
COMMIT;
Por exemplo, após realizar uma série de operações DML (Data Manipulation
Language), como INSERT, UPDATE ou DELETE, é necessário executar o comando
COMMIT para tornar as alterações permanentes.
11
básica é a seguinte:
ROLLBACK;
Por exemplo, se ocorrer algum erro durante uma transação, é possível executar o
comando ROLLBACK para desfazer todas as alterações realizadas até aquele ponto e
retornar ao estado anterior.
SAVEPOINT nome_savepoint;
SAVEPOINT ponto1;
Esses comandos TCL (Transaction Control Language) são essenciais para controlar o
fluxo e a integridade das transações em um banco de dados. Eles garantem que as
alterações sejam confirmadas ou desfeitas adequadamente,
11
Conceitos Básicos Banco de
Dados - Tabelas
• Tabelas são estruturas de banco de dados para
armazenamento de dados, que utilizam mecanismos de
armazenamento, conforme visto anteriormente.
• Tabelas são semelhantes a planilhas de dados (Microsoft
Excel), que utilizam a estrutura de colunas , onde são
armazenados dados por tipos (conforme vimos em
datatypes)
• Cada conjunto individual de dados é chamado de registro,
linha ou tupla.
• Normalmente é razoável estabelecer uma ou mais colunas
que apresentem valores únicos o que é chamado Chave
Primária ou Primary Key ou PK, veremos isso no tópico
constraints.
12
usada para estabelecer relacionamentos com outras tabelas.
As tabelas fornecem uma estrutura lógica para armazenar e organizar dados de forma
consistente e eficiente em um banco de dados. Elas desempenham um papel
fundamental na modelagem e na manipulação de informações em um sistema de
gerenciamento de banco de dados.
12
Conceitos Básicos Banco de
Dados - Tabelas
• Tabelas podem sofrer operações de DML para tratamento e
manipulação de dados (INSERT, UPDATE, DELETE, SELECT,
MERGE).
• Tabelas podem sofrer operações de DDL para criação,
manutenção e eliminação de dados (CREATE,ALTER , DROP).
• Tabelas podem ter um ou maís índices para melhorar a
performance no acesso as mesmas, afim de evitar a
operação chamada de FULL TABLE SCAN (busca em todos
os registros da tabela por registros desejados)
• Tabelas e colunas com character set (tipos de línguas que
se deseja armazenar caracteres)
• Tabelas possuem uma propriedade chamada Collation que
determinam características de pesquisa a dados.
13
Conceitos Básicos Banco de
Dados - Índice
• Índice são estruturas de banco de dados para armazenamento de dados, visando a recuperação de dados
utilizando menor volume de leitura, com isso evitando a operação de FULL TABLE SCAN
Indíce
tabela
FULL TABLE SCAN: Nesta operação os dados são acessados serialmente do inicio ao
fim tabela sem o uso de índices, a falta de cláusula WHERE leva a essa operação, e
operações de consulta com cláusula WHERE (restrição da consulta) sem o
embasamento de um índice também promovem FULL TABLE SCAN
INDEX RANGE SCAN: Nesta operação a pesquisa ocorre usando uma cláusula WHERE
(restrição da consulta) que esteja vinculada a uma condição (uma ou mais colunas)
indexadas. Tipicamente pelo uso de operador BETWEEN ou <= ou < ou >= ou >.
14
registros relevantes, evitando a necessidade de percorrer toda a tabela.
Criação de Índices: Os índices são criados usando uma ou mais colunas da tabela.
Geralmente, as colunas que são frequentemente usadas em cláusulas de pesquisa,
junções ou ordenação são escolhidas para a criação de índices. A criação de índices
pode ser feita durante a criação da tabela ou posteriormente, usando comandos DDL
(Data Definition Language) específicos.
Benefícios dos Índices: Os índices permitem consultas mais rápidas e eficientes, pois
reduzem o número de acessos ao disco necessário para encontrar os registros
desejados. Eles melhoram o desempenho de consultas de pesquisa, junção e
ordenação. No entanto, a criação excessiva de índices pode ter um impacto negativo
no desempenho de operações de inserção, atualização e exclusão de registros, pois
os índices também precisam ser atualizados.
14
Conceitos Básicos Banco de
Dados - Índice
• Índices são estruturas muito importantes
para a saúde do banco de dados pois evitam
o excesso de operações de FULL TABLE SCAN
e com isso maximizam a recuperação de
dados , diminuindo operações de I/O
(Leitura e gravações físicas).
• São uteis particularmente para as operações
de pesquisa a dados (Comando DML –
SELECT) e de forma menos importante a
operações de alteração de dados (Comando
DML – UPDATE) e de exclusão de dados
(Comando DML – Delete). Já a inserção de
dados é afetada a cada novo índdice
associado a tabela pois o mesmo é
atualizado no momento em que a ação de
inserção é realizada.
Todo índice inicia no nível chamado raiz (root) é nele que é informado em qual lado
da arvore a informação do registro poderá ser localizada.
Após a localização (genérica) do dado é necessário passar pelo nível 1 do índice e lá
será indicada a localização do dado no nível 0 (folha).
No nível 0 o dado é localizado e indicado onde fisicamente se encontra na tabela.
15
Conceitos Básicos Banco de
Dados - Memória
Gerenciador de Memória
Buffer Pool: O SGBD aloca uma parte da memória do sistema chamada de "buffer
pool" para armazenar páginas de dados frequentemente acessadas. Isso ajuda a
reduzir as operações de leitura e escrita no disco, pois os dados podem ser acessados
de forma mais rápida a partir da memória principal.
16
Cache de Consultas: O cache de consultas é uma área da memória utilizada para
armazenar os resultados de consultas recentes. Se uma consulta idêntica for feita
novamente, o SGBD pode recuperar os resultados diretamente do cache, evitando a
necessidade de executar a consulta novamente.
Índices: Os índices são estruturas de dados adicionais usadas para acelerar a busca e
a recuperação de registros em uma tabela. Eles são armazenados em disco e
permitem que o SGBD localize rapidamente os dados relevantes sem percorrer toda a
tabela.
16
Conceitos Básicos Banco de
Dados - Memória
Composição do Gerenciador de Memória
• Composição
– Gerenciamento de Transações
• cuida da execução das transações
– Administração de buffer
• responsável pela intermediação de dados do disco para a memória principal e pela
decisão de quais dados colocar em memória auxiliar
– Administração de arquivos
• gerencia a alocação de espaço no armazenamento em disco e as estruturas de
dados usadas para representar estas informações armazenadas em disco.
Gerenciamento de Transações:
17
O gerenciamento de transações envolve o controle e a coordenação das operações
realizadas em um banco de dados. As transações são unidades lógicas de trabalho
compostas por um conjunto de operações relacionadas, como inserções, atualizações
ou exclusões de registros. O SGBD garante a atomicidade, consistência, isolamento e
durabilidade das transações (propriedades ACID), garantindo que as operações sejam
concluídas com sucesso ou desfeitas em caso de falhas.
Administração de Buffer:
17
Conceitos Básicos Banco de
Dados - Armazenamento
Armazenamento em disco
• Arquivo de dados
– armazena os dados (o banco de dados propriamente dito)
• Dicionário de dados
– meta-dados
• Índices
– estrutura que otimizam o acesso aos itens de dados
• Estatística de dados
– armazena informações estatísticas relativas aos dados contidos no banco de dados
e as utiliza no processador de consultas para seleção de meios eficientes para
execução de consultas
18
No entanto, a criação de índices adicionais pode aumentar o espaço em disco e afetar
o desempenho de operações de inserção e atualização de dados.
18
Conceitos Básicos Banco de Dados
– Constraints Chave Primária
• Constraints são regras de integridade de dados que
podemos impor aos bancos de dados
transacionais, definidas por padrão definido pela
ANSI, são elas:
– Chave Primária (Primary Key ou PK). Uma ou
mais colunas que não podem ter valores
repetidos , ou seja, cada registro deve ter um
valor único para a chave escolhida. Uma tabela
só pode ter uma única chave primária. As
colunas de chave primária são obrigatórias
(constraint NOT NULL). As chaves primárias são
a base do relacionamento de um tabela.
Implementação em Oracle:
No Oracle, a chave primária pode ser definida durante a criação da tabela ou
posteriormente com o comando ALTER TABLE. É comum usar a cláusula CONSTRAINT
para definir a chave primária, especificando o nome da chave e as colunas que a
compõem. Por exemplo:
19
CREATE TABLE TabelaExemplo (
ID NUMBER,
Nome VARCHAR2(50),
CONSTRAINT PK_TabelaExemplo PRIMARY KEY (ID)
);
Implementação no PostgreSQL:
No PostgreSQL, a chave primária pode ser definida durante a criação da tabela
usando a cláusula PRIMARY KEY. É possível especificar o nome da chave primária e as
colunas associadas. Por exemplo:
19
Conceitos Básicos Banco de Dados
– Constraints Chave Estrangeira
• Constraints são regras de integridade de dados que
podemos impor aos bancos de dados
transacionais, definidas por padrão definido pela
ANSI, são elas:
– Chave Estrangeira (Foreign Key ou FK). São
regras que validam valores de chaves primárias
existentes em tabelas relacionadas, uma ou
mais colunas serão colocadas na tabela
relacionada e aceitarão apenas valores
existentes na tabela relacionada.
– Uma tabela pode ter uma ou mais chaves
estrangeiras.
– Chaves estrangeiras podem ser obrigatórias
(constraint Not Null) ou opcionais.
Implementação em Oracle:
No Oracle, a chave estrangeira é definida durante a criação da tabela ou
posteriormente com o comando ALTER TABLE. É usada a cláusula CONSTRAINT para
definir a chave estrangeira, especificando o nome da chave, as colunas que a
compõem e a tabela e a coluna de referência. Por exemplo:
20
ID NUMBER,
Nome VARCHAR2(50),
TabelaPai_ID NUMBER,
CONSTRAINT FK_TabelaFilha_TabelaPai
FOREIGN KEY (TabelaPai_ID) REFERENCES TabelaPai (ID)
);
No SQL Server, a chave estrangeira também pode ser definida durante a criação da
tabela ou posteriormente com o comando ALTER TABLE. É usada a cláusula
CONSTRAINT para especificar o nome da chave estrangeira, as colunas associadas e a
tabela e a coluna de referência. Por exemplo:
Implementação no PostgreSQL:
Nas implementações nos bancos de dados Oracle, SQL Server e PostgreSQL, a chave
estrangeira estabelece uma relação entre as tabelas, garantindo que os registros
relacionados sejam mantidos consistentes. A implementação específica pode variar
de acordo com o banco de dados, mas o conceito geral é o mesmo: vincular a chave
20
primária de uma tabela à chave estrangeira em outra tabela
20
Conceitos Básicos Banco de Dados
– Constraints Chave Única
• Constraints são regras de integridade de dados que
podemos impor aos bancos de dados
transacionais, definidas por padrão definido pela
ANSI, são elas:
– Chave única (unique Key ou UK). São regras
que validam valores únicos para colunas da
tabela, não possuindo nenhuma relação com
chave primária.
– Uma tabela pode ter uma ou mais chaves
unicas.
– Chaves únicas são usadas apenas em caráter de
pesquisa e também são chamadas de chaves
alternadas ou alternate keys.
A restrição de chave única, também conhecida como chave única ou unique key, é um
conceito em bancos de dados relacionais que garante que os valores em uma ou mais
colunas de uma tabela sejam exclusivos. Essa restrição é aplicada para evitar
duplicação de dados e manter a integridade dos registros. Explicaremos sua
importância e como ela é implementada nos bancos de dados Oracle, SQL Server e
PostgreSQL.
Implementação em Oracle:
21
especificar o nome da restrição e as colunas que devem ser únicas. Por exemplo:
No SQL Server, a restrição de chave única pode ser definida durante a criação da
tabela ou posteriormente com o comando ALTER TABLE. É usada a cláusula
CONSTRAINT para especificar o nome da restrição e as colunas que devem ser únicas.
Por exemplo:
Implementação no PostgreSQL:
21
Conceitos Básicos Banco de
Dados – Constraints Not Null
• Constraints são regras de integridade de dados que
podemos impor aos bancos de dados
transacionais, definidas por padrão definido pela
ANSI, são elas:
– Campo obrigatório (Not Null) é uma regra que
obriga que os campos possuam valores, não
validando o conteúdo dos mesmos, apenas
obrigando que algum valor seja introduzido a
coluna na tabela no momento da inserção ou
da alteração de dados.
A restrição NOT NULL é usada em bancos de dados relacionais para garantir que um
determinado campo ou coluna não possua valores nulos. Essa restrição é aplicada
para assegurar a integridade dos dados e evitar a inserção de valores vazios ou
desconhecidos em campos essenciais. Explicaremos a importância dessa restrição e
como ela é implementada nos bancos de dados Oracle, SQL Server e PostgreSQL.
A restrição NOT NULL é importante para garantir que os campos obrigatórios em uma
tabela tenham valores válidos, evitando a ocorrência de valores nulos que possam
comprometer a integridade dos dados e causar erros em consultas e operações.
Implementação em Oracle:
22
CREATE TABLE TabelaExemplo (
ID NUMBER NOT NULL,
Nome VARCHAR2(50) NOT NULL
);
Implementação no PostgreSQL:
22
Conceitos Básicos Banco de
Dados
Processamento de Consultas
• Compilador DML
– traduz comandos DML em instruções de baixo nível, entendidos pelo
componente de execução de consultas. Além disso, otimiza a solicitação do
usuário.
• Interpretador DDL
– interpreta os comandos DDL e os registra no dicionário de dados
Compilador DML:
Pré-compilador DML:
23
chamadas para o SGBD. O pré-compilador DML pode fornecer recursos adicionais,
como verificação de erros de sintaxe, otimização de consultas e manipulação de
parâmetros.
Interpretador de DDL:
23
Conceitos Básicos Banco de
Dados
Leitura e Gravação de Dados (Input/Output) - IO
• A leitura e gravação em banco de dados é extremamente importante e crítica pois envolve o acesso a estrturas como
disco que por sua vez trabalham em milissegundos, enquanto a memória trabalha em nanosegundos , isso por si só, já
provoca um desequilíbrio, pois cada vez que há a necessidade de buscar informações em disco, a velocidade tende a
cair vertiginosamente. Logo colocar dados em memória para que sejam acessados mais rapidamente é algo que se faz
necessário para qualquer SGBD.
• Tanto leituras como gravações podem ser lógicas (Logical Reads, Logical Writes), ou seja, feitas em memória e se
necessário em outro momento ser realizados em disco.
• A memória porém é limitada e logo em muitos momentos a leitura e principalmente a gravação deverão ser físicas
(Physical reads, Physical Writes), ou seja, feitas em disco.
• Os tipos de caminhos aos dados podem ser feitas das seguintes formas:
– Full Table Scans
– Table Access by Rowid - Index Fast Full Scans
– Sample Table Scans - Index Skip Scans
– Index Unique Scans - Index Join Scans
- Bitmap Index Single Value
– Index Range Scans - Bitmap Index Range Scans
– Index Full Scans - Bitmap Merge
- Bitmap Index Range Scans
Full Table Scan – Leitura do 1º. Ao ultimo registro em uma tabela, isso pode ocorrer
quando uma tabela não possui índices, ou o critério da pesquisa (clausula WHERE)
não possui índices adequados, ou a quantidade de registros que são recuperados
forem maiores que 4% do total de registros em uma tabela.
Index Unique Scan – Acesso aos dados em uma tabela através do acesso a uma única
ocorrência em um índice. Aplicável somente em casos de índices únicos e chaves
primárias, neste caso são realizados dois acessos um ao índice e outro a tabela,
portanto são consideradas para cada registro acessado dois movimentos.
24
Index Range Scan – Acesso aos dados em uma tabela através da leitura de um ou
mais registros em um índice, com isso é feita uma leitura parcial do índice baseado
em uma faixa , por exemplo clientes com códigos entre 1 e 10. Neste caso serão lidos
10 entradas nos índices e para cada entrada será feita uma leitura aos dados
Index Full Scan – Realiza um acesso a todos os registros em um índice baseado na sua
ordenação, com isso o resultado da leitura acaba forçando uma ordenação do
resultado, incluindo na consulta uma clausula ORDER BY. Isso funciona apenas para
colunas Não nulas que sejam indexadas.
Index Fast Full Scan – Força o acesso ao índice como se fosse a tabela, isso é razoável
quando as colunas utilizadas na consulta fizerem parte do índice, neste caso , todas
as colunas usadas tem que fazer parte do índice, para utilizar este recurso é
necessário impor um ajuste ao comando através de uma HINT chamada
INDEX_FFS(table_name index_name), veremos um pouco sobre hints em otimização
básica de comandos.
Index Skip Scan – Este tipo de acesso é realizado quando uma coluna parte de um
índice não foi informado em uma pesquisa, por exemplo um índice baseado nas
colunas nome e sobrenome porem a restrição ocorre apenas usando o sobrenome.
Index Join Scan – Força o uso de múltiplos índices que atuam em conjunto para a
recuperação dos dados, ao acesso aos dados é feito utilizando-se o próprio índice
Bitmap são um tipo de índice muito utilizado em sistemas de apoio a decisão (DSS)
que utilizam índices para acessos a dados em colunas com baixa cardinalidade, ou
seja, pouca variação de valores, por exemplo a coluna sexo em uma tabela de
clientes, podemos dizer que a coluna sexo possui uma baixa cardinalidade, entenda-
se valores distintos (apenas masculino e feminino)
24
Conceitos Básicos Banco de
Dados
Tipos de Armazenamentos Físicos
• O armazenamento de dados normalmente deverá ser realizado através de dispositivos de armazenamento conhecidos
como discos, que podem ser locais, ou seja, instalados na própria máquina onde se encontra o SGBD, podendo ainda
serem acessados em um STORAGE de discos, que consiste em um armazenamento feito fora da maquina onde se
encontra o SGBD instalado.
• Alem disso o armazenamento tem a sua própria arquitetura, divididas de forma a saber:
– SAN
– NAS
– DAS
– JOBD
– ASM
• Conforme a arquitetura o acesso pode ser mais performático ou menos, dependendo da necessidade e dos
investimentos realizados.
25
rede, permitindo que os usuários acessem e compartilhem arquivos centralmente,
como se fossem dispositivos de armazenamento locais.
O NAS é acessado por meio de protocolos de rede, como NFS (Network File System)
ou SMB (Server Message Block). É uma solução simples de implementar e gerenciar,
adequada para armazenamento de arquivos e compartilhamento de dados em
pequenas e médias empresas.
25
Arquitetura SQL Server
26
Conceitos Básicos Banco de
Dados – SQL Server - Instância
A fila de tarefas é uma estrutura interna do SQL Server que gerencia as tarefas a
serem executadas. Ela armazena as solicitações de tarefas recebidas pelo servidor,
como consultas, atualizações ou operações de gerenciamento. A fila de tarefas
garante que as tarefas sejam processadas de forma eficiente e equilibrada pelos
processos trabalhadores disponíveis.
Quando uma tarefa é retirada da fila, ela passa por uma série de etapas de execução.
Primeiro, ocorre a análise (parse) da tarefa, que envolve a verificação da sintaxe e a
validação das instruções. Em seguida, a tarefa é compilada, onde o SQL Server cria
27
um plano de execução detalhado, que descreve como a tarefa será executada. Por
fim, ocorre a etapa de otimização, em que o SQL Server avalia diferentes estratégias
de execução e escolhe a mais eficiente com base em estatísticas e outras
informações disponíveis.
O cache de plano é uma área de memória no SQL Server onde os planos de execução
compilados são armazenados e reutilizados. Quando uma tarefa é compilada e
otimizada, o plano de execução resultante é armazenado no cache de plano. Isso
permite que consultas subsequentes com a mesma estrutura sejam executadas mais
rapidamente, evitando o processo de compilação e otimização novamente. O cache
de plano é atualizado e gerenciado automaticamente pelo SQL Server para otimizar o
desempenho das consultas.
A área de cache, conhecida como buffer pool, é uma parte da memória do SQL Server
que é reservada para armazenar páginas de dados frequentemente acessadas. Ela
age como uma camada intermediária entre o disco e as consultas, armazenando
dados em memória para acesso rápido. O buffer pool reduz a necessidade de acesso
ao disco, melhorando o desempenho das consultas e operações de leitura e escrita
de dados.
27
Conceitos Básicos Banco de
Dados – SQL Server - Database
28
volta de forma consistente e durável. Ele faz uso de técnicas como escrever as
alterações no disco em segundo plano, agrupando várias páginas de dados para
otimizar o desempenho e minimizar a sobrecarga de E/S.
O Buffer Manager tem uma relação essencial com os datafiles (arquivos de dados) e o
logfile (arquivo de log) em uma instância do SQL Server. Explicaremos essa relação de
forma detalhada:
Quando uma página de dados é lida do disco, o Buffer Manager a armazena no buffer
pool para uso posterior. Se a página sofrer modificações, elas são feitas no buffer
pool e posteriormente gravadas de volta no datafile no disco. Dessa forma, o Buffer
Manager mantém uma cópia das páginas de dados mais frequentemente acessadas
em memória, reduzindo a necessidade de acesso ao disco rígido, o que é mais lento.
2.Logfile (Arquivo de Log) e Buffer Manager: O logfile é um arquivo que registra todas
as transações executadas em um banco de dados. Ele é usado para garantir a
integridade dos dados e permitir a recuperação do banco de dados em caso de falhas
ou transações desfeitas. O Buffer Manager também tem uma relação com o logfile.
Quando uma transação é executada, as alterações feitas nas páginas de dados são
registradas no logfile antes de serem efetivadas no datafile. Essas alterações são
gravadas no logfile de forma sequencial, permitindo que o Buffer Manager otimize a
gravação em disco. O Buffer Manager agrupa várias alterações em uma única
28
gravação sequencial no logfile, minimizando a sobrecarga de E/S e melhorando o
desempenho.
Além disso, durante a recuperação de um banco de dados após uma falha, o Buffer
Manager utiliza as informações registradas no logfile para garantir que as transações
sejam aplicadas corretamente e que o banco de dados retorne a um estado
consistente.
Em resumo, o Buffer Manager tem uma relação estreita com os datafiles e o logfile.
Ele gerencia o cache de páginas de dados em memória, evitando acessos frequentes
ao disco, melhorando o desempenho. O Buffer Manager também coordena a
gravação das alterações nos datafiles e a utilização das informações do logfile para
garantir a integridade e a recuperação adequada do banco de dados.
28
Conceitos Básicos Banco de Dados
Organização Dados – SQL Server
• Um banco de dados SQL Server possui um ou
mais Filegroups (gerenciam o agrupamento
Banco de Dados
(Database)
dos arquivos de dados). Cada objeto
(tabela,indice,etc..) é depositado em um
Filegroup. O FileGroup pode ocupar
FileGroups
fisicamente 1 ou mais arquivos de dados (Data
Files). Cada objeto armazenado se transforma
Arquivo de Dados
(Data Files)
inicialmente em pagina em uma extensão
Extensão
(Extent)
mista (que contem paginas de diferentes
tabelas) Tipicamente uma extensão ocupa
64Kb, considerando que o tamanho físico de
Paginas SQL Server cada página é de 8Kb, Logo cada extensão
(Data Pages)
contem 8 páginas. Quando uma tabela
Bloco S.O. ultrapassa 8 paginas em extensões mistas são
criadas extensões uniformes (com 8 paginas
Estruturas Lógicas Estruturas Físicas
também) para acomodar o crescimento da
tabela a partir dai e assim por diante.
Banco de Dados:
Um banco de dados no SQL Server é uma estrutura lógica que contém os dados e os
objetos relacionados, como tabelas, índices, procedimentos armazenados e visões.
Ele é a unidade fundamental de armazenamento e gerenciamento dos dados. Cada
banco de dados é isolado e pode ser acessado e gerenciado separadamente.
29
Datafiles (Arquivos de Dados):
Extensões:
As extensões são blocos contíguos de espaço alocados dentro dos datafiles. Elas têm
um tamanho fixo e são usadas para armazenar as páginas de dados. Uma extensão
pode conter várias páginas de dados, dependendo do tamanho de cada página.
Páginas:
A organização dos dados em páginas permite um acesso eficiente aos dados no SQL
Server. As páginas são agrupadas em extents, que por sua vez são organizados em
datafiles. Os datafiles são gerenciados pelo sistema de arquivos do sistema
operacional. Os filegroups fornecem uma camada adicional de organização e
flexibilidade para o armazenamento dos dados dentro de um banco de dados.
É importante ressaltar que a organização física dos dados no SQL Server pode variar
de acordo com o tipo de tabela, índices e configurações específicas. O SQL Server
possui mecanismos de otimização e alocação de espaço que trabalham em conjunto
com esses componentes para garantir um desempenho eficiente e uma boa utilização
do armazenamento disponível.
29
Conceitos Básicos Banco de
Dados – SQL Server - Data Files
Data Files e Temp Files
Extensões Mistas: Uma extensão mista é uma extensão que pode conter páginas de
diferentes objetos, ou seja, de tabelas diferentes. Ela é usada quando um objeto é
criado ou quando há uma alocação pequena de espaço.
Uma extensão mista pode conter até oito páginas e é compartilhada por vários
objetos.
Extensões Uniformes: Uma extensão uniforme é uma extensão que contém apenas
páginas de um único objeto. Ela é usada quando um objeto já possui uma extensão
30
mista e requer mais espaço. Uma extensão uniforme também pode conter até oito
páginas, mas todas são alocadas para o mesmo objeto.
IAM (Index Allocation Map): O IAM é uma estrutura que rastreia a alocação de
extensões em um objeto, como uma tabela ou um índice. Ele registra quais extensões
são usadas e quais estão livres. O IAM é armazenado em uma página de alocação e é
consultado pelo mecanismo do SQL Server para encontrar extensões livres para
alocar novos dados.
GAM (Global Allocation Map) e SGAM (Shared Global Allocation Map): O GAM e o
SGAM são estruturas de metadados que mapeiam as extensões livres e usadas em
todo o filegroup. O GAM rastreia as extensões livres a nível de filegroup, enquanto o
SGAM rastreia as extensões mistas livres. Essas estruturas são consultadas pelo
mecanismo do SQL Server para identificar quais extensões estão disponíveis para
alocação.
Quando uma extensão é alocada para um objeto, o espaço livre é atualizado nas
estruturas de metadados correspondentes. Quando uma extensão é liberada, o
espaço é marcado como livre e fica disponível para ser reutilizado por outros objetos.
30
Conceitos Básicos Banco de
Dados – SQL Server - Data Pages
PAGE HEADER
• Páginas são estruturas de armazenamento utilizadas pelos SGBDs para
ROW 1 garantirem a persistência dos dados . Alguns bancos de dados tambem
ROW 2 chamam este componente de Bloco. O SGBD SQL Server chama este
ROW 3 componente como página. Os dados são armazenados no formato de
.... registros ou linhas (rows), ocupando a área de dados até o limite desta
... que é chamado de FREE SPACE ou área livre, usada exclusivamente para
.... operações de Atualização de dados (UPDATE). O tamanho padrão para
.... uma pagina é de 8Kb.
...
ROW n
• É A UNIDADE DE MEDIDA PARA LEITURA E GRAVAÇÃO.
3 2 1
ROW OFFSET
Uma página SQL Server possui como padrão 8192 bytes, sendo que o page header
ocupa 96 bytes e 36 bytes são reservados para o Row Offset (que controla a alocação
na página), restando 8060 bytes livres para armazenamento de dados.
Slot Array(Row Offset): O slot array é uma tabela interna que armazena informações
sobre as linhas presentes na página. Cada linha na página tem uma entrada
correspondente no slot array, que contém o offset (deslocamento) onde a linha
começa na página.
31
Linhas de Dados: O espaço restante na página é utilizado para armazenar as linhas de
dados. Cada linha contém as informações dos campos correspondentes, como
valores de colunas. O formato e o tamanho das linhas variam dependendo da
estrutura da tabela ou índice.
Inserção de Dados:
Quando ocorre uma inserção de dados em uma tabela, o SQL Server busca pela
página adequada para armazenar a nova linha. Se houver espaço livre na página, a
nova linha é inserida nesse espaço. Caso contrário, uma nova página é alocada para a
tabela, e a nova linha é adicionada a essa página.
Durante a inserção, o SQL Server atualiza o slot array da página para incluir a nova
entrada correspondente à linha inserida. O cabeçalho da página também é atualizado
para refletir as alterações.
Atualização de Dados:
Quando ocorre uma atualização de dados em uma tabela, o SQL Server localiza a
página que contém a linha a ser atualizada. A linha é então modificada no espaço de
armazenamento correspondente dentro da página.
Ao atualizar uma linha, o SQL Server pode optar por atualizar a linha diretamente na
mesma página ou, se necessário, mover a linha para outra página (operação
conhecida como page split). Essa movimentação ocorre quando a atualização excede
o espaço disponível na página atual. Nesse caso, uma nova página é alocada e parte
da linha é movida para essa nova página, deixando um espaço livre para a atualização
na página original.
Após a atualização, o cabeçalho da página e o slot array podem ser atualizados para
refletir as mudanças na página.
31
na página correspondente, atualizando o slot array e o cabeçalho da página conforme
necessário. O SQL Server utiliza estratégias como alocação de novas páginas e page
split para gerenciar o espaço disponível e acomodar as alterações nos dados.
31
Conceitos Básicos Banco de
Dados – Extensões
• Extensões são a estrutura através do qual é controlado o crescimento de uma tabela. As tabelas são criadas
inicialmente em uma pagina dentro de uma extensão mista (mixed extent), ao preencher 8 páginas , na 9ª.
Será alocada uma extensão uniforme para cada nova extensão da tabela. Isso inclui tabelas e índices.
Uma extensão mista é um bloco contíguo de oito páginas (64 KB) que pode ser
compartilhado por múltiplos objetos. Essa extensão é usada quando um objeto é
criado ou quando há uma alocação pequena de espaço.
Quando um objeto é criado no SQL Server, a primeira alocação de espaço para esse
objeto é feita em uma extensão mista. Uma extensão mista pode conter páginas de
diferentes objetos, permitindo o compartilhamento de espaço entre eles.
Cada extensão mista possui um IAM (Index Allocation Map) que rastreia as páginas
dentro dessa extensão. O IAM informa quais páginas estão sendo usadas e quais
estão livres. À medida que o espaço dentro de uma extensão mista é alocado para
objetos específicos, ele deixa de ser compartilhado e se torna uma extensão
uniforme.
32
Uma extensão uniforme é um bloco contíguo de oito páginas (64 KB) que é alocado
para um único objeto. Essa extensão é usada quando um objeto já possui uma
extensão mista e requer mais espaço.
Quando um objeto precisa de mais espaço além da extensão mista inicial, o SQL
Server aloca uma nova extensão uniforme exclusivamente para esse objeto. A
extensão uniforme alocada para um objeto só será usada por esse objeto e não será
compartilhada com outros.
As extensões uniformes são gerenciadas por meio do IAM, assim como as extensões
mistas. O IAM rastreia quais páginas pertencem a uma extensão uniforme e quais
estão livres dentro dessa extensão.
O SQL Server utiliza uma combinação de extensões mistas e uniformes para alocar
espaço para objetos dentro de um banco de dados, permitindo um uso eficiente do
espaço em disco. As extensões mistas são usadas inicialmente para alocar espaço
compartilhado entre objetos, enquanto as extensões uniformes são usadas para
alocar espaço exclusivo para objetos específicos.
32
SNI (SQL Server Server Network Conceitos Básicos
Interface)
Protocols
Banco de Dados –
TCP/IP
Shared Memory
PARSE
SQL Server Interface Named Pipes
(API) Virtual Interface Adapter (VIA) SQLOS
TDS packets
Na etapa 1 de análise são feitas 2 análises distintas, primeiro a análise sintática onde
serão avaliados os comandos sob o ponto de vista unicamente da sua sintaxe. Uma
vez que o comando esteja sintaticamente correto será feita a 2ª análise que é a
semântica, onde serão avaliadas as tabelas, colunas e as permissões de acesso. Uma
vez validada contra o dicionário de dados em memória (ou disco) o comando passa
para a 2ª. Etapa onde é agregado o plano de acesso, que consiste em determinar
como os dados serão acessados (por exemplo utilizando índices). Após esta ação o
comando será efetivamente executado.
Especificamente no caso do comando SELECT (Consulta) é realizada a 3ª etapa que
consiste em retornar as linhas consultadas para a memória e depois para o processo
que a solicitou (Cliente).
Antes de analisar um comando o SGBD irá verificar se este comando já não foi
analisado (tenha sofrido parse anteriormente), caso não tenha será feito todo o
processo listado anteriormente e isso chamamos de HARD PARSE. Caso o comando
33
seja encontrado em memória (tenha sofrido parse anterior) será feito um SOFT PARSE
que consiste em evitar a re-execução da 1ª. Etapa e partir diretamente para a etapa
de execução.
Quanto mais houver padronização na escrita dos comandos SQL e quanto mais
forem utilizadas variáveis para tratamento de valores utilizados nos comandos como
critérios de pesquisa, por exemplo, mais possibilidades de SOFT PARSE teremos para
comandos semelhantes.
33
SQL Server Interface(API)
O processo de parse em um banco de dados SQL Server envolve várias etapas, desde
o envio do comando usando a SNI (SQL Network Interface) até o armazenamento na
buffer pool. Vou detalhar cada etapa, incluindo o data cache e plan cache, além de
abordar o envio do comando para o database engine, os mecanismos de
gerenciamento de lock e log manager, o processo de checkpoint e a atualização do
transaction log e datafiles.
O processo se inicia quando o cliente envia um comando SQL para o SQL Server por
meio da SNI. A SNI é responsável por estabelecer a conexão com o servidor e
transmitir o comando SQL.
Antes de iniciar o parse, o SQL Server verifica se as páginas de dados necessárias para
executar o comando estão presentes no data cache. O data cache é uma parte da
memória utilizada para armazenar páginas de dados frequentemente acessadas,
melhorando o desempenho das operações de leitura.
34
Além disso, o SQL Server também verifica se o plano de execução para o comando
em questão está presente no plan cache. O plan cache armazena os planos de
execução compilados e otimizados para consultas anteriores, permitindo a
reutilização desses planos e evitando a necessidade de compilação repetida.
PASSO A PASSO:
1.O cliente envia um comando SQL para o SQL Server por meio da SNI (SQL Network
Interface).
2.O SQL Server verifica se as páginas de dados necessárias para executar o comando
estão presentes no data cache.
3.O SQL Server verifica se o plano de execução para o comando está presente no plan
cache.
4.Se o plano de execução não estiver no plan cache, o comando é enviado para o
database engine do SQL Server.
5.O command parser analisa o comando SQL, verifica a sintaxe e a estrutura corretas
e gera uma árvore de análise (parse tree) para representar o comando.
6.O query optimizer analisa a árvore de análise gerada pelo command parser e
determina a melhor estratégia de execução para o comando. Ele avalia diferentes
planos de execução considerando estatísticas, índices e outras informações
relevantes.
7.O query executor executa o plano de execução selecionado pelo query optimizer.
Ele busca os dados necessários nos datafiles, realiza operações de junção, filtro e
ordenação conforme necessário e retorna o resultado para o cliente.
9.O Log Manager gerencia o transaction log, que registra todas as alterações feitas no
banco de dados. As alterações são registradas no log antes de serem aplicadas nos
datafiles, garantindo a durabilidade das transações e permitindo a recuperação de
dados em caso de falhas.
34
10. Periodicamente, o SQL Server realiza um processo de checkpoint para garantir
que todas as alterações registradas no transaction log sejam aplicadas nos datafiles
permanentes, atualizando-os de forma consistente.
Caso o comando não esteja presente no plan cache, ele é enviado para o database
engine do SQL Server. Nessa etapa, o comando passa por três componentes
principais: command parser, query optimizer e query executor.
Command Parser: O command parser analisa o comando SQL, verifica a sintaxe e a
estrutura corretas, e gera uma árvore de análise (parse tree) para representar o
comando.
Query Optimizer: O query optimizer analisa a árvore de análise gerada pelo command
parser e determina a melhor estratégia de execução para o comando. Ele avalia
diferentes planos de execução, considerando estatísticas, índices e outras
informações relevantes, com o objetivo de encontrar o plano mais eficiente.
Além disso, o Log Manager é responsável por gerenciar o transaction log, que registra
todas as alterações feitas no banco de dados. O Log Manager garante a durabilidade
das transações, registrando as alterações no log antes de aplicá-las nos datafiles. Isso
permite a recuperação de dados em caso de falhas.
34
O processo de parse em um banco de dados SQL Server é complexo e envolve várias
etapas para analisar, otimizar e executar os comandos SQL. Os mecanismos de
gerenciamento de lock, log manager e checkpoint garantem a consistência dos dados
e a durabilidade das transações.
34
Arquitetura Oracle
35
Conceitos Básicos Banco de
Dados – Oracle - Instância
INSTANCIA ORACLE
NK
LARGE POOL JAVA POOL BUFFER
CACHE
SERVER DATABASE BUFFER
SHARED POOL LOG BUFFER
CACHE
RECYCLE
DATA DICTIONARY POOL
CACHE
USER
LIBRARY CACHE KEEP
POOL
PROCESSOS BACKGROUND
36
DBWR – DATABASE WRITER: Processo que escreve os dados que estão em memória
para o armazenamento físico em disco dos mesmos, este processo lê os chamados
buffers sujos (dirty buffers) que estão no database buffer cache (resultantes de
comandos (INSERT,UPDATE,DELETE e MERGE)) para os arquivos de dados (data files).
Este processo pode ser multiplexado, ou seja , pode ter mais de um processo para
melhorar a performance da escrita dos dados em disco. Processo OBRIGATÓRIO.
LGWR – LOG WRITER: Processo que escreve as transações (comandos sql) escritos no
redo log buffer nos arquivos de redo log (redo log files). Este mecanismo oferece uma
segurança contra perda de dados, já que os comandos são escritos em disco mais
rapidamente que os dados. Em caso de encerramento anormal da instância os dados
contidos nos arquivos de redo log (redo log files) serão lidos pelo processo SMON na
ação de recuperação de instância (Instance Recovery) garantindo assim que os dados
que estavam em memória e que não foram gravados sejam eferivamente
armazenados . Processo OBRIGATÓRIO.
ARCH – ARCHIVER: Processo que grava cópias dos arquivos de redo log (redo log files)
para que possam sofrer backup e possam ser usados para recuperar uma instância
caso haja perda física ou lógica do respectivo database. Processo OPCIONAL.
36
Conceitos Básicos Banco de
Dados – Database - Oracle
CONTROL FILES DATAFILES REDO LOGS
control01.CT control02.CT
L L SYSTEM1.DBF UNDO01.DBF TEMP01.DBF REDOa.LOG REDOb.LOG
DATAFILES
37
responsáveis por armazenar permanentemente os dados e garantir a integridade e a
consistência dos mesmos.
3.Redo Logs (Registros de Redo): Os registros de redo são uma parte essencial do
mecanismo de recuperação do Oracle Database. Eles registram todas as alterações
feitas nos dados do banco de dados, permitindo a recuperação em caso de falhas ou
problemas de consistência. Os registros de redo são escritos em um conjunto de
arquivos de redo, que são responsáveis por armazenar esses registros
sequencialmente. Os registros de redo podem ser usados para recuperar os dados
em caso de falha, aplicando as alterações registradas nos registros de redo aos
arquivos de dados.
Os Control Files, Data Files e Redo Logs trabalham em conjunto para garantir a
integridade, a consistência e a recuperação adequada do banco de dados Oracle. Os
arquivos de controle mantêm informações sobre a estrutura e o estado do banco de
dados, enquanto os arquivos de dados armazenam os dados reais e os registros de
redo registram as alterações feitas nos dados. Esses componentes são essenciais para
garantir a confiabilidade e a disponibilidade dos dados em um ambiente Oracle.
37
Conceitos Básicos Banco de Dados
Organização Dados - Oracle
• Um banco de dados Oracle possui um ou mais
Banco de Dados
(Database) tablespaces (gerenciam o agrupamento dos
arquivos de dados). Cada objeto
(tabela,indice,etc..) é depositado em uma
Tablespace tablespace. A tablespace pode ocupar
fisicamente 1 ou mais arquivos de dados (Data
Files). Cada objeto armazenado se transforma
Segmento
(Segment)
Arquivo de Dados
(Data Files)
em um segmento. Inicialmemte um segmento
ocupa uma extensão e esta condensa um
numero especifico de blocos que irão
Extensão
(Extent)
armazenar logicamente os dados. Tipicamente
uma extensão ocupa 64Kb, considerando um
bloco típico de 8Kb, logo uma extensão padrão
Bloco Oracle
Bloco S.O. possui 8 blocos Oracle
(Data Blocks)
Oracle Database:
Tablespace:
38
Segmento:
Extensão:
Blocos Oracle:
Arquivos de Dados:
Os arquivos de dados são os arquivos físicos que armazenam os blocos Oracle. Eles
são associados aos tablespaces e contêm os dados reais das tabelas e índices do
banco de dados. Os arquivos de dados são gerenciados pelo sistema operacional,
mas são acessados e manipulados pelo Oracle Database.
38
Conceitos Básicos Banco de
Dados – Oracle - Data Files
Data DATAFILE
Files e Temp Files
Os arquivos de dados (datafiles) são as estruturas utilizadas para dar suporte aos blocos
DATAFILE HEADER
visando o armazenamento dos dados seja no sistema operacional, ou no ASM. A menor
SEGMENTO E 1A. unidade de armazenamento em um data file é chamada de Bloco (Oracle), ou em alguns
EXTENSAO
SGBDS chamam de página (SQL Server , DB2). O controle de crescimento dos blocos se dá
2A.EXTENSAO
através de extensões, com isso um objeto pode crescer adicionando-se novas extensões e
ESPAÇO LIVRE consequentemente um conjunto de blocos para cada uma delas.
Header do Datafile:
Extents:
Blocks:
39
datafile.
Segmentos:
Extent Map:
O extent map é uma estrutura que rastreia quais extents pertencem a cada segmento
dentro do datafile. Ele contém informações sobre os extents alocados e livres para
cada segmento.
Data Blocks:
Os data blocks são os blocos que armazenam efetivamente os dados das tabelas,
índices e outros objetos. Cada bloco pode conter várias linhas de dados, dependendo
do tamanho das linhas e do espaço disponível no bloco.
Segment Header:
Freelist:
O freelist é uma lista de extents livres dentro do datafile que podem ser alocados
para novos dados ou extensões. Ele é utilizado para gerenciar o espaço livre
disponível no datafile.
Bitmaps:
Os bitmaps são estruturas utilizadas para controlar o espaço livre e ocupado dentro
do datafile. Existem dois tipos de bitmaps: bitmap de alocação de extent (extent
allocation bitmap) e bitmap de alocação de bloco (block allocation bitmap). Esses
bitmaps indicam quais extents e blocos estão alocados ou livres.
Os File Control Blocks são estruturas de controle que mantêm informações sobre o
39
datafile, como o estado de leitura/escrita, status de backup, número de blocos
alocados, entre outros detalhes.
39
Conceitos Básicos Banco de
Dados – Oracle - Data Blocks
BLOCK HEADER
BLOCK DIRECTORY
• Blocos são estruturas de armazenamento utilizadas pelos SGBDs para
FREE SPACE garantirem a persistência dos dados . Alguns bancos de dados tambem
chamam este componente de Página. O SGBD Oracle chama este
ROW n
componente como bloco. Os dados são armazenados no formato de registros
....
ou linhas (rows), ocupando a área de dados até o limite desta que é chamado
...
de FREE SPACE ou área livre, usada exclusivamente para operações de
....
Atualização de dados (UPDATE). O tamanho padrão para um bloco é de 8Kb
....
mas pode variar de 2 a 32Kb.
...
ROW 3ROW 1
3
ROW 3ROW 2
• É A UNIDADE DE MEDIDA PARA LEITURA E GRAVAÇÃO.
ROW 3ROW 1
ROWID TAMANHO
ROW OVERHEAD NUM COLUNAS VALOR COLUNA
(CHAINED) COLUNA
Vetor de Bits de Espaço Livre (Free Space Bitmap): O vetor de bits de espaço livre
registra quais áreas do bloco estão disponíveis para a inserção de novos dados. Cada
bit no vetor representa um espaço de tamanho fixo dentro do bloco, indicando se
está ocupado (0) ou livre (1).
40
Slots de Linhas (Row Slots): Os slots de linhas são espaços dentro do bloco que
armazenam as linhas de dados. Cada slot contém um cabeçalho de slot, que mantém
informações sobre o comprimento da linha e a posição da linha dentro do bloco.
Verificação de Espaço Livre: O Oracle verifica o vetor de bits de espaço livre para
encontrar um espaço livre suficiente no bloco.
Alocar Espaço para a Nova Linha: O Oracle encontra um slot de linha livre no bloco e
aloca espaço suficiente para armazenar a nova linha de dados.
Atualizar o Vetor de Bits de Espaço Livre: O Oracle atualiza o vetor de bits de espaço
livre para refletir a alocação do novo espaço.
Inserir a Nova Linha: A nova linha de dados é inserida no espaço alocado dentro do
bloco. O cabeçalho do slot de linha é atualizado com as informações relevantes sobre
a nova linha.
Localizar a Linha para Atualização: O Oracle busca o slot de linha que contém a linha a
ser atualizada dentro do bloco.
40
Resumindo a estrutura de um data block Oracle é composta por várias estruturas,
incluindo cabeçalho de bloco, diretório de transações, vetor de bits de espaço livre e
slots de linhas. Os processos de inserção e atualização envolvem a alocação de
espaço dentro do bloco, atualização das estruturas relevantes e modificação dos
dados da linha. O Oracle realiza esses processos de forma eficiente, garantindo a
integridade e consistência dos dados no banco de dados.
40
Conceitos Básicos Banco de
Dados – Oracle - Parse
PARSE de comandos SQL
EXEMPLO: SELECT * FROM EMP
1. Analisar 3. Extrair (Select)
SGA SGA
Shared Pool Database Buffer Shared Pool Database Buffer
Datafiles Datafiles
Cliente Processos Cliente Processos
Servidor Servidor
2. Executar Retorna as
SGA linhas
Shared Pool Database Buffer
Datafile
Client Processos s
e Servidor
Na etapa 1 de análise são feitas 2 análises distintas, primeiro a análise sintática onde
serão avaliados os comandos sob o ponto de vista unicamente da sua sintaxe. Uma
vez que o comando esteja sintaticamente correto será feita a 2ª análise que é a
semântica, onde serão avaliadas as tabelas, colunas e as permissões de acesso. Uma
vez validada contra o dicionário de dados em memória (ou disco) o comando passa
para a 2ª. Etapa onde é agregado o plano de acesso, que consiste em determinar
como os dados serão acessados (por exemplo utilizando índices). Após esta ação o
comando será efetivamente executado.
Especificamente no caso do comando SELECT (Consulta) é realizada a 3ª etapa que
consiste em retornar as linhas consultadas para a memória e depois para o processo
que a solicitou (Cliente).
Antes de analisar um comando o SGBD irá verificar se este comando já não foi
analisado (tenha sofrido parse anteriormente), caso não tenha será feito todo o
processo listado anteriormente e isso chamamos de HARD PARSE. Caso o comando
41
seja encontrado em memória (tenha sofrido parse anterior) será feito um SOFT PARSE
que consiste em evitar a re-execução da 1ª. Etapa e partir diretamente para a etapa
de execução.
Quanto mais houver padronização na escrita dos comandos SQL e quanto mais
forem utilizadas variáveis para tratamento de valores utilizados nos comandos como
critérios de pesquisa, por exemplo, mais possibilidades de SOFT PARSE teremos para
comandos semelhantes.
PASSO A PASSO:
3.O Parser realiza a análise léxica, que consiste na identificação e validação dos
componentes básicos do comando, como palavras-chave, identificadores, operadores
e símbolos.
4.O Parser realiza a análise sintática, que verifica se a estrutura do comando está
correta de acordo com as regras da linguagem SQL. É verificado se os elementos
estão em sequência correta e se não há erros de sintaxe.
5.O Parser gera uma árvore de análise sintática, conhecida como árvore de análise
(parse tree) ou árvore sintática abstrata (AST), que representa a estrutura hierárquica
do comando.
7.O Oracle realiza a análise semântica, que envolve a validação das regras e restrições
semânticas do comando. São verificados tipos de dados, coerência entre tabelas
relacionadas, restrições de integridade, entre outros aspectos.
41
9.O plano de execução otimizado é armazenado em uma área chamada Shared Pool
(pool compartilhado) na memória, para possível reutilização posterior, evitando a
necessidade de análise e otimização repetidas do mesmo comando.
12.O Oracle registra as alterações feitas pelos comandos DML (Data Manipulation
Language) no redo log, que é um registro sequencial das operações realizadas no
banco de dados. Isso permite a recuperação dos dados em caso de falhas.
41
Arquitetura PostgreSQL
42
Conceitos Básicos Banco de
Dados – Instância PostgreSQL
WAL Buffers: conhecidos como write a head log (WAL), este buffer armazena os
comandos correspondentes as transações que foram realizadas, por garantia de
recuperação do banco de dados contra perdas físicas e lógicas de dados.
43
CLOG Buffers: Contem informações de transações que sofreram commit e as que
sofreram algum tipo de cancelamento (abort), Armazena 2 bits para cada transação
indicando se sofreu commit, foi abortada ou está em andamento.
43
Conceitos Básicos Banco de
Dados - Instância
Postmaster: Processo DAEMON que inicia processos servidores para cada requisição
de conexão
44
WAL (Archived WAL area)
4) Checkpointer: Processo que garantirá a realização do Checkpointna sequencia de
todas as transações listadas nos xlogs ao ponto que todos os arquivos de dados (data
files) tenham sido atualizado para refletir as informações armazenadas no log. É
disparado a cada 5 minutos.
5) Stats Collector: Coleta estatísticas pela relação e bloco.
6) Autovacuum: remove as linhas mortas da tabela e as reorganiza
7) LOG writer: envia mensagens de log para os arquivos de log de erro (Error Log
Files)
44
Conceitos Básicos Banco de
Dados - Database
Postmaster: Processo DAEMON que inicia processos servidores para cada requisição
de conexão
45
- WAL – Write Ahead Log
45
Conceitos Básicos Banco de Dados
Organização Dados - Postgres
Banco de Dados
• Um banco de dados Postgres possui um ou
(Database) mais tablespaces (gerenciam o agrupamento
dos arquivos de dados e diretórios). Cada
objeto (tabela,indice,etc..) é depositado em
Tablespace Diretório
uma tablespace e fisicamente em um arquivo
de dados. A tablespace pode ocupar
Arquivo de Dados
fisicamente 1 ou mais arquivos de dados (Data
Tabela / Indice
(Data Files) Files), conforme o numero de tabelas e ou
indices que possuir. Cada objeto armazenado
se transforma em um arquivo de dados.
Inicialmente uma tabela ocupa um arquivos de
Paginas Postgres
(Page Blocks)
Bloco S.O. dados (data files) e esta aloca especifico de
páginas que irão armazenar logicamente os
Estruturas Lógicas Estruturas Físicas dados. Uma página típica tem 8Kb, a medida
que um arquivo de dados precisa de mais
espaço este aumenta mais página por vez.
Tabela/Índice:
46
das consultas ao permitir a recuperação rápida dos dados com base em
determinados critérios.
Páginas PostgreSQL:
Diretório:
Arquivos de Dados:
46
Conceitos Básicos Banco de
Dados – Paginas (Page Blocks)
Header da Página:
O header da página é uma estrutura que armazena informações sobre a própria
página, como o tipo de página, o número de sequência, o número de itens na página,
entre outros metadados.
Free Space:
O espaço livre é a porção da página que não está ocupada por itens. É onde novos
registros podem ser inseridos. O espaço livre é controlado por meio de um ponteiro
que indica o fim do espaço livre disponível.
Item Data:
47
Os itens de dados são os registros individuais armazenados na página. Cada item
contém os dados de uma linha de uma tabela ou índice. Eles são organizados
sequencialmente na página.
A estrutura de uma página PostgreSQL tem um tamanho fixo de 8 KB. Cada página é
identificada por um número de bloco e é a unidade básica de leitura/gravação no
PostgreSQL. As páginas são organizadas em extensões que, por sua vez, são alocadas
nos arquivos de dados.
47
de verificação) da página. Ele é usado para verificar a integridade dos dados durante a
leitura da página. O valor checksum é calculado com base no conteúdo da página e é
usado para detectar possíveis erros de corrupção.
Esses campos são parte da estrutura da página no PostgreSQL e são usados para
armazenar metadados, controlar o espaço livre, identificar o tipo de página e garantir
a integridade dos dados. Com base nesses campos, o PostgreSQL pode gerenciar o
armazenamento, a recuperação e a manipulação eficiente dos dados armazenados
em uma página PostgreSQL.
47
Conceitos Básicos Banco de
Dados – PostrgreSQL - Parse
Antes de analisar um comando o SGBD irá verificar se este comando já não foi
48
analisado (tenha sofrido parse anteriormente), caso não tenha será feito todo o
processo listado anteriormente e isso chamamos de HARD PARSE. Caso o comando
seja encontrado em memória (tenha sofrido parse anterior) será feito um SOFT PARSE
que consiste em evitar a re-execução da 1ª. Etapa e partir diretamente para a etapa
de execução.
Quanto mais houver padronização na escrita dos comandos SQL e quanto mais
forem utilizadas variáveis para tratamento de valores utilizados nos comandos como
critérios de pesquisa, por exemplo, mais possibilidades de SOFT PARSE teremos para
comandos semelhantes.
48
Aspectos Físicos de
Armazenamento
Relacionados a Bancos de Dados
(Leitura Complementar)
49
Conceitos Básicos Banco de
Dados
O que é RAID
50
Conceitos Básicos Banco de
Dados
Níveis de RAID
51
Conceitos Básicos Banco de
Dados
RAID 0
0
RAID
Controller
Host
Raid 0 (Redundant Array of Independent Disks 0), também conhecido como striping,
é uma técnica de armazenamento que envolve a combinação de vários discos rígidos
em um único volume lógico. Ao contrário de outros níveis de RAID, o RAID 0 não
oferece redundância ou capacidade de recuperação de falhas. Em vez disso, seu
objetivo principal é melhorar o desempenho do sistema.
52
ambientes de produção de mídia, onde grandes arquivos precisam ser
processados em tempo real. A alta taxa de transferência do RAID 0 permite uma
edição mais rápida e suave.
Jogos e aplicativos que exigem carregamento rápido: O RAID 0 pode acelerar o tempo
de carregamento de jogos e aplicativos pesados, pois permite que os dados sejam
acessados mais rapidamente.
Vantagens do RAID 0:
Desvantagens do RAID 0:
Falta de redundância: Uma das principais desvantagens do RAID 0 é que ele não
oferece tolerância a falhas. Se um dos discos rígidos falhar, todos os dados
armazenados no RAID 0 podem ser perdidos. Portanto, é essencial fazer backup
regular dos dados.
52
Conceitos Básicos Banco de
Dados
RAID 1
0
RAID
Controller
Host
53
Servidores e sistemas de armazenamento: Em ambientes corporativos, o RAID 1 é
comumente implementado em servidores e sistemas de armazenamento para
garantir a confiabilidade dos dados. Se um disco falhar, a operação do sistema
continua sem interrupções.
Backup de dados: O RAID 1 pode ser usado como uma forma de backup redundante.
Os dados são gravados em discos duplicados, o que fornece uma cópia de segurança
imediata e confiável.
Vantagens do RAID 1:
Desvantagens do RAID 1:
53
Conceitos Básicos Banco de
Dados
RAID 0+1
RAID 1
Block 1
Block 4
RAID 2
Block RAID 0
Block 3
0 Block 41
5
Controller
Block 2
Host Block 5
RAID 0+1 (também conhecido como RAID 10) é uma combinação dos níveis RAID 0 e
RAID 1. Ele oferece tanto desempenho quanto redundância, aproveitando as
vantagens de ambos os níveis de RAID. No RAID 0+1, os dados são distribuídos em
discos rígidos em um arranjo RAID 0 e, em seguida, esses conjuntos de dados são
espelhados em um arranjo RAID 1.
54
desempenho e aplicativos exigentes.
Alta tolerância a falhas: O RAID 0+1 pode suportar a falha de um ou mais discos,
dependendo da configuração. Se um disco falhar em um conjunto RAID 0, a
redundância do RAID 1 garante a continuidade dos dados. A substituição do disco
defeituoso é relativamente simples e não afeta a operação do sistema.
54
Conceitos Básicos Banco de
Dados
RAID 0+1
RAID 1
Block 1 Block 1
Block 4 Block 4
RAID RAID 0
Controller
Block 2 Block 2
Este tipo de RAID possui um melhor custo beneficio pois mescla a performance do
RAID 0 e a segurança do RAID 1. Recomendado para maior parte dos componentes
de banco de dados. Neste caso ocorre o fatiamento primeiro (RAID 0) e o
espelhamento (RAID 1) em sequencia.
55
Conceitos Básicos Banco de
Dados
RAID 1+0
RAID 0
1
Block 2
Block 4
5
RAID RAID 1
Block 3
0 Controller
1
Block 2
Host Block 4
5
RAID 0+1 (também conhecido como RAID 10) é uma combinação dos níveis RAID 0 e
RAID 1. Ele oferece tanto desempenho quanto redundância, aproveitando as
vantagens de ambos os níveis de RAID. No RAID 0+1, os dados são distribuídos em
discos rígidos em um arranjo RAID 0 e, em seguida, esses conjuntos de dados são
espelhados em um arranjo RAID 1.
56
desempenho e aplicativos exigentes.
Alta tolerância a falhas: O RAID 0+1 pode suportar a falha de um ou mais discos,
dependendo da configuração. Se um disco falhar em um conjunto RAID 0, a
redundância do RAID 1 garante a continuidade dos dados. A substituição do disco
defeituoso é relativamente simples e não afeta a operação do sistema.
56
Conceitos Básicos Banco de
Dados
RAID 1+0
RAID 0
Block 1 Block 2
Block 4 Block 5
RAID RAID 1
Controller
Block 1 Block 2
57
Conceitos Básicos Banco de
Dados
0 4
1
6 5
9
RAID 1
?
Controller
3
Host 7 7
11
O Disco intermediario falhou:
Calculo da Paridade 4 + 6 + 1 + 7 = 18 0123
4 518
67
Disco de Paridade
58
Conceitos Básicos Banco de
Dados
RAID 3
Block RAID0
Block
Controller
Block 1
Paridade
Gerada
Block 2
Host
Block 3
P0123
No RAID 3, pelo menos três discos são necessários para criar um conjunto RAID. Os
dados são divididos em blocos e gravados nos discos de dados, enquanto o disco de
paridade armazena as informações de paridade calculadas a partir dos dados nos
outros discos. Essas informações de paridade permitem a reconstrução dos dados em
caso de falha de um disco.
59
adequado para armazenamento de dados que requerem transferência rápida, como
bancos de dados intensivos em leitura/gravação ou aplicativos que envolvem
processamento em tempo real.
Vantagens do RAID 3:
Alta taxa de transferência: O RAID 3 oferece uma alta taxa de transferência de dados,
permitindo acesso rápido e eficiente aos arquivos armazenados.
Desvantagens do RAID 3:
59
Conceitos Básicos Banco de
Dados
RAID 4 Block 0
Block 4
Block 1
Block 5
Paridade
RAID0 Block 2
Block 0 Block
Gerada
Controller Block 6
P0123
Block 3
Host
Block 7
P0123
P4567
No RAID 4, os dados são divididos em blocos e gravados nos discos, enquanto o disco
de paridade armazena as informações de paridade calculadas a partir dos dados nos
outros discos. A diferença em relação ao RAID 3 é que, no RAID 4, as informações de
paridade são armazenadas em um único disco, em vez de serem distribuídas em
discos separados.
60
Ambientes que exigem tolerância a falhas: O RAID 4 oferece tolerância a falhas,
permitindo a recuperação dos dados em caso de falha de um dos discos.
Vantagens do RAID 4:
Desvantagens do RAID 4:
60
Conceitos Básicos Banco de
Dados
RAID 5 Block 0
Block 4
Block 1
Block 5
Paridade
Parity
RAID4 Block 2
Block 0
4 Block 0
Generated
Gerada
Controller Block 6
P4
0516
273
Block 3
Host
P4567
P0123
Block 7
RAID 5 é um nível de RAID (Redundant Array of Independent Disks) que oferece uma
combinação de desempenho, capacidade de armazenamento e tolerância a falhas.
No RAID 5, os dados e as informações de paridade são distribuídos entre vários discos
no conjunto RAID.
No RAID 5, os dados são divididos em blocos e gravados nos discos, juntamente com
as informações de paridade. Cada bloco de dados tem sua própria informação de
paridade, que é calculada com base nos dados dos outros discos. Essas informações
de paridade permitem reconstruir os dados em caso de falha de um dos discos.
61
Aplicações empresariais e bancos de dados: O RAID 5 é adequado para armazenar
dados empresariais, como bancos de dados, sistemas de gerenciamento de
relacionamento com o cliente (CRM) e sistemas de gerenciamento de recursos
empresariais (ERP).
Vantagens do RAID 5:
Desvantagens do RAID 5:
61
falhas. É comumente utilizado em servidores de arquivos, bancos de dados e
sistemas de armazenamento em rede. No entanto, é importante considerar o risco de
falha múltipla e o desempenho reduzido durante a reconstrução dos dados.
Aqui está um resumo dos percentuais de perda de capacidade para cada nível de
RAID mencionado:
1.RAID 0: No RAID 0, não há redundância de dados, o que significa que não há
proteção contra falhas. Portanto, se um dos discos falhar, todos os dados
armazenados no RAID 0 podem ser perdidos. Nesse caso, o percentual de perda é de
100% dos dados.
2.RAID 1: No RAID 1, os dados são espelhados em discos separados. Isso significa que
cada dado é replicado em um segundo disco, oferecendo proteção contra falhas.
Nesse caso, o percentual de perda é de 50% da capacidade total, pois metade da
capacidade é usada para espelhar os dados.
61
Lembre-se de que esses valores são aproximados e podem variar dependendo de
fatores como tamanho dos discos e configurações específicas do sistema.
61
Conceitos Básicos Banco de
DadosRAID 6
• Duas falhas de disco em um conjunto de RAID gera uma indisponibilidade de
dados e perda de dados em sistema de paridade única, como o RAID-3, 4, e 5
• Aumenta o número de unidades de um array e aumenta a capacidade do disco
para uma maior probabilidade de dois discos falharem em um conjunto de
RAID
• RAID-6 protege contra a falha de dois discos por ter dupla paridade
• Paridade horizontal que é a mesma que a paridade RAID-5
• Paridade diagonal é calculada pelo conjunto de bloco de dados pelo conjunto de
membros RAID
• Par ou ímpar, e Reed-Solomon são dois algoritmos comumente utilizados para
calcular a paridade de RAID-6
RAID 6 (Redundant Array of Independent Disks 6) é um nível de RAID que oferece alta
tolerância a falhas e proteção de dados, mesmo em casos de múltiplas falhas de
disco. Ele é projetado para fornecer uma camada adicional de segurança em
comparação com o RAID 5, ao usar dois discos dedicados para armazenar
informações de paridade.
62
Armazenamento de grande capacidade: Devido à tolerância a falhas aprimorada e à
capacidade de usar discos de maior capacidade, o RAID 6 é uma escolha popular para
sistemas que requerem grande capacidade de armazenamento, como servidores de
arquivos e sistemas de backup.
Vantagens do RAID 6:
Alta tolerância a falhas: O RAID 6 pode suportar a falha simultânea de até dois discos
sem perda de dados. Isso proporciona uma camada adicional de proteção e
segurança, reduzindo o risco de perda de dados.
Desvantagens do RAID 6:
Resumindo o RAID 6 é uma escolha ideal para ambientes que exigem alta tolerância a
falhas e proteção avançada de dados. É amplamente utilizado em sistemas de
armazenamento de dados críticos e aplicativos empresariais que necessitam de
62
segurança adicional. Embora o RAID 6 ofereça vantagens significativas em termos de
tolerância a falhas, é importante considerar a sobrecarga de gravação e o custo
adicional de armazenamento ao optar por essa configuração RAID.
62
Conceitos Básicos Banco de
Dados
COMPARATIVO RAIDS
Min %Eficiencia
RAID Custo Performance Leitura Performance Escrita
Discos armazenamento
Boa
Menor que um disco uniico , toda
Boa Melhor do que um unico disco
1 2 50 alto gravação deve ser feita 2 vezes.
(n-2)*100/n
Moderado porem Muito Bom para Leituras Randomicas e Bom para pequenas escritas
6 4 onde n= numero de
mais que o RAID 5 bom para leituras sequenciais randomicas
discos
1+0
e 4 50 alto Muito bom Bom
0+1
A escolha do melhor tipo de RAID para bancos de dados depende de vários fatores,
como a importância da disponibilidade dos dados, o desempenho necessário e a
tolerância a falhas desejada. Vou apresentar algumas opções comuns para bancos de
dados:
RAID 5: O RAID 5 também é uma opção comum para bancos de dados. Ele oferece
um bom equilíbrio entre capacidade, desempenho e tolerância a falhas. Os dados e
as informações de paridade são distribuídos entre os discos, permitindo recuperação
em caso de falha de um disco. No entanto, o RAID 5 pode ter um desempenho
ligeiramente inferior em gravações intensivas, devido à sobrecarga de gravação para
63
calcular as informações de paridade.
RAID 6: O RAID 6 é uma escolha interessante para bancos de dados que exigem alta
tolerância a falhas. Ele oferece proteção adicional em comparação com o RAID 5, pois
usa dois discos de paridade. Isso permite a recuperação de dados mesmo em casos
de falha simultânea de dois discos. No entanto, o RAID 6 pode ter uma sobrecarga de
gravação maior e um custo adicional de armazenamento devido aos discos extras de
paridade.
Quando se trata de acesso aleatório aos datafiles e acesso sequencial aos logfiles, é
importante considerar as características específicas de cada tipo de acesso ao
escolher o tipo de RAID.
63
Em última análise, a escolha do RAID depende da combinação de fatores específicos
do seu ambiente, como a natureza das operações, a carga de trabalho, o tamanho
dos arquivos e os requisitos de disponibilidade e segurança dos dados. Recomenda-se
avaliar esses fatores em conjunto com as características de cada tipo de RAID para
determinar a melhor opção para o seu caso.
63