Vídeo: Curso MySQL #04 - Melhorando a Estrutura do Banco de Dados 2024
De longe, o mais simples dos bancos de dados NoSQL (não apenas SQL) em um grande ambiente de dados são aqueles que empregam o modelo de par chave-valor (KVP). Os bancos de dados KVP não exigem um esquema (como RDBMSs) e oferecem grande flexibilidade e escalabilidade.
As bases de dados KVP não oferecem capacidade ACID (Atomicidade, Consistência, Isolação, Durabilidade) e exigem que os implementadores pensem sobre colocação de dados, replicação e tolerância a falhas, uma vez que não são expressamente controlados pela própria tecnologia. Os bancos de dados KVP não são digitados. Como resultado, a maioria dos dados é armazenada como strings.
Chave | Valor |
---|---|
Cor | Azul |
Libação | Cerveja |
Herói | Soldado |
Este é um conjunto muito simplificado de chaves e valores. Em uma grande implementação de dados, muitos indivíduos terão diferentes idéias sobre cores, libações e heróis.
Chave | Valor |
---|---|
FacebookUser12345_Color | Vermelho |
TwitterUser67890_Color | Castanho |
FoursquareUser45678_Libação | "Vinho branco" |
Google + Usuário24356_Libação | "Martinho seco com uma torção " |
LinkedInUser87654_Hero | " Melhor artista de vendas " |
À medida que o número de usuários aumenta, manter o controle de chaves precisas e valores relacionados pode ser um desafio. Se você precisa acompanhar as opiniões de milhões de usuários, o número de pares de valores-chave associados a eles pode aumentar exponencialmente. Se você não quiser restringir escolhas para os valores, a representação de string genérica do KVP oferece flexibilidade e legibilidade.
Você pode precisar de alguma ajuda adicional organizando dados em um banco de dados de valores-chave. A maioria oferece a capacidade de agregar chaves (e seus valores relacionados) em uma coleção. As coleções podem consistir em qualquer número de pares de valores-chave e não requerem o controle exclusivo dos elementos individuais do KVP.
Um banco de dados de par de valores-chave de código aberto amplamente utilizado é chamado Riak. É desenvolvido e suportado por uma empresa chamada Basho Technologies e está disponível sob a Licença de Software Apache v2. 0.
O Riak é uma implementação muito rápida e escalável de um banco de dados de valores-chave. Ele suporta um ambiente de alto volume com dados que mudam rapidamente porque é leve. A Riak é particularmente eficaz na análise em tempo real da negociação de serviços financeiros. Ele usa "baldes" como um mecanismo organizador para coleções de chaves e valores.
As implementações da Riak são clusters de nós físicos ou virtuais organizados de uma forma ponto a ponto. Nenhum nó mestre existe, então o cluster é resiliente e altamente escalável.Todos os dados e operações são distribuídos pelo cluster. O agrupamento maior é melhor e mais rápido do que clusters com menos nós. A comunicação no cluster é implementada através de um protocolo especial chamado Gossip. Gossip armazena informações de status sobre o cluster e compartilha informações sobre os baldes.
O Riak possui muitos recursos e faz parte de um ecossistema que consiste no seguinte:
-
Processamento paralelo: Usando o MapReduce, o Riak suporta uma capacidade de decompor e recompor consultas em todo o cluster para análise e computação em tempo real.
-
Links e link andando: O Riak pode ser construído para imitar um banco de dados gráfico usando links. Um link pode ser pensado como uma conexão unidirecional entre pares de valores-chave. Caminhando (a seguir), os links fornecerão um mapa de relações entre pares de valores-chave.
-
Pesquisa: A Riak Search possui uma capacidade de pesquisa de texto completo distribuída e tolerante a falhas. Os baldes podem ser indexados para resolução rápida de valor para as chaves.
-
Índices secundários: Os desenvolvedores podem marcar valores com um ou mais valores de campo chave. O aplicativo pode então consultar o índice e retornar uma lista de chaves correspondentes. Isso pode ser muito útil em grandes implementações de dados porque a operação é atômica e irá suportar comportamentos em tempo real.
As implementações da Riak são mais adequadas para
-
Dados do usuário para redes sociais, comunidades ou jogos
-
Coleta e armazenamento de dados de alto volume e mídia rica
-
Camadas de armazenamento em cache para conectar bancos de dados RDBMS e NoSQL
-
Aplicativos móveis que requerem flexibilidade e confiabilidade