Um sistema distribuído é qualquer sistema de múltiplas localidades conectadas juntas em uma espécie de redes de comunicações, nas quais o usuário (usuário final ou programador de aplicação) de qualquer localidade (site) pode acessar os dados armazenados em outro local. C.J.Date
Banco de Dados Distribuídos
Consiste em múltiplas localidades conectadas por redes, onde o usuário pode acessar dados de qualquer site.
architecture-beta
group porto_velho(cloud)[Porto Velho]
group brasilia(cloud)[Brasilia]
%% Componentes em Porto Velho
service t1(internet)[Terminal 1] in porto_velho
service t2(internet)[Terminal 2] in porto_velho
service cpu1(server)[Servidor 1] in porto_velho
service bd1(database)[Banco de Dados 1] in porto_velho
%% Componentes em Brasília
service t3(internet)[Terminal 3] in brasilia
service t4(internet)[Terminal 4] in brasilia
service cpu2(server)[Servidor 2] in brasilia
service bd2(database)[Banco de Dados 2] in brasilia
%% Conexões Porto Velho
t2:B --> T:cpu1
t1:R --> L:cpu1
cpu1:B <-- T:bd1
%% Conexões Brasília
t3:B --> T:cpu2
t4:L --> R:cpu2
cpu2:B <-- T:bd2
%% Interconexão entre CPUs
cpu1:R <--> L:cpu2
Armazenamento
- Replicação - Os sistemas mantém réplicas idênticas (cópias) da relação. Cada réplica é armazenada em diferentes sites, resultando na replicação dos dados. A alternativa para replicação é armazenada somente em cópia da relação r.
- Fragmentação - A relação é particionada em vários fragmentos. Cada fragmento é armazenado em um site diferente.
- Replicação e fragmentação - A relação é particionada em vários segmentos. O sistema mantém diversas réplicas de cada fragmento.
Replicação
“Se uma relação r é replicada, uma cópia da relação r é armazenada em dois ou mais sites. No caso mais extremo, temos replicação total, na qual cada cópia é armazenada em todos os sites do sistema”.
architecture-beta
group porto_velho(cloud)[Porto Velho]
group brasilia(cloud)[Brasilia]
%% Componentes em Porto Velho
service t1(internet)[Terminal 1] in porto_velho
service t2(internet)[Terminal 2] in porto_velho
service cpu1(server)[Servidor 1] in porto_velho
service bd1(database)[Banco de Dados 1] in porto_velho
%% Componentes em Brasília
service t3(internet)[Terminal 3] in brasilia
service t4(internet)[Terminal 4] in brasilia
service cpu2(server)[Servidor 2] in brasilia
service bd2(database)[Banco de Dados 2] in brasilia
%% Conexões Porto Velho
t2:B --> T:cpu1
t1:R --> L:cpu1
cpu1:B <-- T:bd1
%% Conexões Brasília
t3:B --> T:cpu2
t4:L --> R:cpu2
cpu2:B <-- T:bd2
%% Interconexão entre CPUs
cpu1:R <--> L:cpu2
Vantagens e desvantagens
- Disponibilidade;
- Aumento do paralelismo;
- Aumento do overhead para atualização.
Fragmentação
Se uma relação r é fragmentada, r é dividida em fragmentos (r1, r2… rn). Esses fragmentos contém informações suficientes para permitir a reconstrução da relação original r.
flowchart LR
subgraph "Estrutura das Tabelas"
direction LR
subgraph T1[Tabela 1]
direction TB
A1[A]
B1[B]
C1[C]
end
subgraph T2[Tabela 2]
direction TB
A2[A]
end
subgraph T3[Tabela 3]
direction TB
B3[B]
end
subgraph T4[Tabela 4]
direction TB
C3[C]
end
end
T1 --> T2
T1 --> T3
T1 --> T4
style A1 fill:#e3f2fd
style B1 fill:#f3e5f5
style C1 fill:#e8f5e8
style A2 fill:#e3f2fd
style B3 fill:#f3e5f5
style C3 fill:#e8f5e8
- Fragmentação Horizontal - A relação r é particionada em número de subconjuntos (r1, r2…rn). Cada tupla da relação r deve pertencer a pelo menos um fragmento, de modo que a relação original possa ser reconstruída, se necessário.
- Fragmentação Vertical - Em sua forma mais simples, a fragmentação vertical é o mesmo que uma decomposição. Implica na definição de vários subconjuntos de atributos (R1, R2…Rn) do esquema R. Para garantir que a relação possa ser reconstruída é necessário incluir os atributos da chave primária de R em cada um dos R.
Fragmentação Horizontal
ALUNOS - FR00
| CD |
NOME |
UF |
| 01 |
JOÃO SILVA |
RO |
| 02 |
ANA GOMES |
RO |
FR01
| CD |
NOME |
UF |
| 01 |
JOÃO SILVA |
RO |
| 02 |
ANA GOMES |
RO |
FR02
| CD |
NOME |
UF |
| 03 |
ANDRÉ NUNES |
RJ |
| 04 |
SARAH FREITAS |
SP |
| 06 |
MARIA CLARA |
RJ |
FR03
| CD |
NOME |
UF |
| 04 |
SARAH FREITAS |
SP |
| 07 |
AUGUSTO CAMPOS |
SP |
- FR00 - É a tabela principal;
- FR01 - É um fragmento da tabela FR00;
- O atributo UF é o principal particionador;
- Considere uma chave primária composta:
Fragmentação Vertical
ALUNOS - FR00R
| CD |
NOME |
UF |
FOTO |
| 01 |
JOÃO SILVA |
RO |
🎥 |
| 02 |
ANA GOMES |
RO |
🎥 |
| 03 |
ANDRÉ NUNES |
RJ |
🎥 |
| 04 |
SARAH FREITAS |
SP |
🎥 |
| 06 |
MARIA CLARA |
RJ |
🎥 |
| 07 |
AUGUSTO CAMPOS |
SP |
🎥 |
FR01R
| CD |
FOTO |
| 01 |
🎥 |
| 02 |
🎥 |
| 03 |
🎥 |
| 06 |
🎥 |
Fragmentação e replicação
ALUNOS - FR00FR
| CD |
NOME |
UF |
FOTO |
| 01 |
JOÃO SILVA |
RO |
🔑 |
| 02 |
ANA GOMES |
RO |
🔑 |
| 03 |
ANDRÉ NUNES |
RJ |
🔑 |
| 04 |
SARAH FREITAS |
SP |
🔑 |
| 06 |
MARIA CLARA |
RJ |
🔑 |
| 07 |
AUGUSTO CAMPOS |
SP |
🔑 |
FR01FR
| CD |
FOTO |
| 01 |
🔑 |
| 02 |
🔑 |
| 03 |
🔑 |
| 06 |
🔑 |
FR02FR
| CD |
FOTO |
| 01 |
🔑 |
| 02 |
🔑 |
| 03 |
🔑 |
| 06 |
🔑 |
Fragmentação vantagens
- Autonomia local;
- Capacidade e crescimento incremental;
- Confiança e disponibilidade;
- Eficiência e flexibilidade.
Fragmentação desvantagens
- Processamento de consultas;
- Propagação de atualização;
- Concorrência;
- Recuperação;
- Gerenciamento de catálogo.
Obseração
- Oferece autonomia local e eficiência, mas dificulta o processamento de consultas, o controle de concorrência e a recuperação.