2. Como Surgiu ?
Bancos IMS-DB, Paper SQL.
Os SGBD NoSQL buscam alternativas para melhorar a escalabilidade e o desempenho dos SBD
atuais. No entando, isto é conseguido, em detrimento da utilização da SQL e das propriedades ACID
para as transações. Para muitos, houve uma grande perda nessa troca, pois não apresentar garantias
integrais para a consistência dos dados, assim como ter que recodificar métodos de acesso, não é
interessante.
NewSQL visa necessidades que NoSQL faz detrimento.
3. Características
● Linguagem SQL como meio de interação entre o SGBD e a aplicação.
● Suporte para transações ACID.
● Arquitetura forneçe um maior desempenho por nó de processamento.
● Arquitetura totalmente escalável.
4. Características
Diferente dos SGBDR tradicionais, que eram considerados soluções para qualquer tipo
de aplicação, os SGBD NewSQL utilizam uma estratégia diferente. Cada novo sistema
desenvolvido visa atender a uma necessidade específica.
Ou seja, os sistemas NewSQL tentam dividir as novas demandas em diferentes nichos
de mercado e buscam alcançá-los de forma separada, terminando com o antigo conceito
de ter um único sistema que sirva para qualquer tipo de aplicação.
5. SGBD NuoDB
Visão Geral
NuoDB é um SGBD NewSQL em memória que tem como foco a utilização em ambientes
de dados geo-distribuídos, sendo direcionado para empresas que precisam expandir
suas bases de dados para múltiplos servidores mas não querem perder os benefícios da
álgebra relacional e das propriedades ACID.
Arquitetura
O NuoDB possui uma arquitetura distribuída com uma abordagem de cache distribuído e
durável (do inglês, durable distributed cache), baseada em replicação sob demanda
(NuoDB Bloor Report, 2013). Para o NuoDB, só existe o suporte ao modo replicação
total dos dados armazenados.
6. SGBD NuoDB
● Estrutura em níveis Nível de processamento
Nível de armazenamento
Nível administrativo
A separação entre os níveis de processamento e de armazenamento é o que
busca dar escalabilidade ao sistema
7. SGBD NuoDB
Nível de processamento
O nível de processamento consiste em motores de transação, denominados de TE (do
inglês, transaction engine). Esse nível é responsável por garantir as propriedades
Atomicidade, Consistência e o Isolamento do ACID, deixando a durabilidade para ser
garantida pelo nível de armazenamento.
8. SGBD NuoDB
Nível de armazenamento
O nível de armazenamento é responsável pela Durabilidade e também por
disponibilidade. É uma fonte de dados sempre ativa e consistente. É constituído de
gerentes de armazenamento, denominados de SM (do inglês, storage managers). Cada
um destes SM possui acesso a um espaço em disco chamado “arquivo”, que contém
uma cópia de toda a base de dados. Um SM pode servir qualquer item de dados a um
TE a partir deste arquivo. Por isso, embora existam diferentes instâncias físicas da
mesma base de dados, o conjunto formado por eles representam uma única instância
lógica, transparente para o usuário.
9. SGBD NuoDB
Nível administrativo
O nível administrativo é responsável por garantir escalabilidade horizontal por demanda
e o balanceamento de carga. Cada nó possui um agente local. Juntos, os agentes
formam uma rede ponto-a-ponto, que recebe o nome de Domínio (NuoDB Technical
WhitePaper, 2013). Para cada domínio, existem um ou mais agentes da rede chamados
brokers. Um broker é um tipo especial de agente, encarregado das funções
administrativas, e somente através dos brokers é possível gerenciar (iniciar, parar ou
migrar) as bases de dados, inicializar, terminar e obter os logs dos TE e dos SM e
monitorar todo o sistema para saber se tudo está ocorrendo como o esperado.
11. SGBD NuoDB
Átomos
Mesmo parecendo uma base de dados SQL, o mais certo ao definir o NuoDB
seria chamá-lo de uma base de dados de objetos distribuída, com uma camada SQL no
topo (NuoDB Technical WhitePaper, 2013). Por trás dessa camada toda a lógica opera
em objetos denominados Átomos, que são objetos autocoordenados que podem
representar qualquer tipo de informação como por exemplo, dados, metadados,
esquemas, índices e outras mais. Esses objetos facilitam a comunicação interna e a
implementação do cache.
12. SGBD NuoDB
Duas características importantes do NuoDB
São o modo como garante escalabilidade, através da abordagem baseada em replicação
sobre demanda, e por possuir uma certa elasticidade, podendo dinamicamente aumentar
ou diminuir o tamanho do domínio, simplesmente adicionando ou retirando nós e
processos TE e SM.
13. SGBD MemSQL
Visão Geral
O SGBD MemSQL começou a ser desenvolvido em Janeiro de 2011 por dois
exfuncionários do Facebook, que imaginavam existir uma nova possível maneira de dar
ao SQL escalabilidade e velocidade. O resultado foi um SGBD distribuído em memória,
que é consultado através de uma interface SQL, tendo como foco aplicações
transacionais, e que também apresenta capacidade para execução de análises de dados
em tempo real.
14. SGBD MemSQL
Arquitetura
O MemSQL possui uma arquitetura distribuída organizada em dois níveis de nós,
Agregadores e Folhas:
Agregadores trabalham como gerentes de consultas, recebendo-as e distribuindo-as
entre os nós folhas. Após as consultas serem executadas pelos nós folhas, os
agregadores combinam os resultados e os retornam para o usuário. Além disso, a
fragmentação dos dados entre os nós folhas também é controlada pelo agregador. Os
agregadores armazenam apenas metadados.
15. SGBD MemSQL
Agregador Mestre (MA) É responsável pelo monitoramento do aglomerado. Todo
aglomerado precisa ter no mínimo um MA para poder ser iniciado. O agregador mestre
trata de todas as operações a serem feitas no banco de dados. Todas as bases de
dados, tabelas, adição e remoção de nós e rebalanceamento dos fragmentos são feitas
através do agregador mestre.
Folhas possuem uma arquitetura de memória distribuída e armazenam os dados do
banco. Recebem as consultas dos nós agregadores e as executam. Um nó folha não
sabe da existência dos outros, pois o protocolo de controle de concorrência só atua em
um nó, e não entre eles.
16. SGBD MemSQL
Alocação de Tabela
Quanto à alocação de dados, o MemSQL suporta dois tipos de tabelas: as tabelas
replicadas, criadas a partir do uso da expressão “REFERENCE”, e as tabelas
distribuídas (fragmentadas).
Controle de Concorrência
Para o controle de concorrência, o MemSQL utiliza índices não bloqueantes, a fim de
garantir um melhor desempenho em cenários com operações concorrentes, sem que
haja uma degradação da consistência. Assim, as operações de leitura não bloqueiam as
operações de escrita e vice-versa. Esta configuração favorece o uso do MemSQL em
aplicações de escrita intensa, ou que tenham uma proporção semelhante para as
operações de escrita e leitura.
17. SGBD MemSQL
Execução de consultas
As consultas submetidas ao MemSQL são compiladas e convertidas em códigos C++.
Em seguida, são armazenadas em um cache de consultas. Quando uma nova consulta é
recebida, o MemSQL verifica se já existe código C++ para ela no cache.