Índice:
Vídeo: Gerenciando Banco de Dados MySQL com DBeaver 2024
Depois de gerenciar as chaves adequadamente, você está pronto para projetar como armazenar dados com o NoSQL e garantir que seja seguro e sempre acessível para o trabalho você precisa fazer.
Tipos de dados em lojas de valores-chave
Os armazenamentos de valores-chave normalmente atuam como & ldquo; baldes & rdquo; para dados binários. Alguns bancos de dados fornecem uma forte digitação de dados internos e até suporte de esquema. Outros simplesmente fornecem funções auxiliares convenientes em seus drivers de clientes para serializar estruturas comuns de dados de aplicativos para uma loja de valor-chave. Os exemplos incluem mapas, listas e conjuntos classificados.
O Oracle NoSQL pode operar em dois modos:
-
Loja binária simples
-
Suporte de esquema Avro altamente estruturado
Um esquema Avro é semelhante a um esquema de banco de dados relacional - reforçando um conjunto muito rigoroso de regras de formato em dados de Notação de Objeto de JavaScript (JSON) armazenados no banco de dados, como ilustrado aqui:
{username: & ldquo; afowler & rdquo;, sessionid: 13452673, desde: 1408318745, tema: & ldquo; bluesky & rdquo;}
Você define um esquema Avro usando um documento JSON. Este é um exemplo do esquema Avro para os dados armazenados mostrados anteriormente:
{& ldquo; digite & rdquo;: & ldquo; registro & rdquo; & ldquo; namespace & rdquo;: & ldquo; com. exemplo & rdquo; & ldquo; nome & rdquo;: & ldquo; UserSession & rdquo; & ldquo; campos & rdquo;: [{& ldquo; nome & rdquo;: & ldquo; nome de usuário & rdquo; & ldquo; digite & rdquo;: [& ldquo; string & rdquo; & rdquo; null & rdquo;]}, {& ldquo; nome & rdquo;: & ldquo; sessionid & rdquo; & ldquo; digite & rdquo;: & ldquo; int & rdquo;}, {& ldquo; nome & rdquo;: & ldquo; uma vez que "& rdquo; & ldquo; digite & rdquo;: & ldquo; long & rdo;}, {& ldquo; nome & rdquo;: & ldquo; tema & rdquo; & ldquo; digite & rdquo;: [& ldquo; string & rdquo; & rdquo; null & rdquo;]}]}
Um esquema Avro fornece digitação muito forte no banco de dados para quando o esquema é importante. No exemplo anterior, você vê dados de seqüência de caracteres, uma identificação de sessão numérica, uma data (milissegundos, desde o Unix Time Epoch, como um inteiro longo) e uma configuração de personalização para o tema a ser usado no site.
Observe também que o tipo de nome de usuário e tema tem duas opções - string e null, que é como você instrui o Oracle NoSQL que os valores nulos são permitidos. Você poderia ter deixado o tema como uma string e forneceu um parâmetro de configuração adicional do & ldquo; padrão & rdquo;: & ldquo; bluesky & rdquo;.
Outros bancos de dados NoSQL fornecem índices secundários em qualquer propriedade arbitrária de um valor com conteúdo JSON. O Riak, por exemplo, fornece índices secundários com base em partição de documentos - basicamente, uma propriedade conhecida dentro de um documento JSON é indexada com um tipo.Isso permite consultas de alcance (menores ou maiores do que), além de comparações simples iguais e não iguais. A Riak consegue fornecer consultas de alcance sem um esquema rigoroso - apenas uma definição de índice simples. Se os dados estiverem lá, ele é adicionado ao índice.
Replicando dados
Armazenar várias cópias dos mesmos dados em outros servidores, ou mesmo racks de servidores, ajuda a garantir a disponibilidade de dados se um servidor falhar. A falha do servidor ocorre principalmente no mesmo cluster.
Você pode operar as réplicas de duas maneiras principais:
- Master-slave: Todas as leituras e gravações ocorrem no mestre. Os escravos assumem e recebem pedidos apenas se o mestre falhar.
A replicação mestre-escravo geralmente é usada em lojas de valor-chave compatíveis com ACID. Para habilitar a consistência máxima, o armazenamento primário é gravado e todas as réplicas são atualizadas antes da conclusão da transação. Este mecanismo é chamado de confirmação em duas fases e cria uma rede extra e tempo de processamento nas réplicas.
- Master-master: Lê e grava pode acontecer em todos os nós que gerenciam uma chave. Não existe um conceito de & ldquo; primário & rdquo; proprietário da partição.
As réplicas do mestre-mestre normalmente são eventualmente consistentes, com o cluster executando uma operação automática para determinar o valor mais recente para uma chave e a remoção de valores antigos e obsoletos.
Na maioria das lojas de valor-chave, isso acontece lentamente - em tempo de leitura. Riak é a exceção aqui porque tem um serviço anti-entropia verificando a consistência durante as operações normais.
Dados de versão
Para habilitar a resolução automática de conflitos, você precisa de um mecanismo para indicar a versão mais recente dos dados. As lojas de valor-chave consistentemente consistentes conseguem a resolução de conflitos de diferentes maneiras.
Riak usa um mecanismo de relógio vetorial para prever qual cópia é a mais recente. Outras lojas de valor-chave usam timestamps simples para indicar o status. Quando os conflitos não podem ser resolvidos automaticamente, ambas as cópias de dados são enviadas ao cliente. Os dados em conflito que estão sendo enviados para o cliente podem ocorrer na seguinte situação:
-
O Cliente 1 grava a réplica A 'Adam: {likes: Cheese}'.
-
A réplica A copia dados para a réplica B.
-
Cliente 1 atualiza dados na réplica A para 'Adão: {gosta de: Queijo, odeia: luz solar}'.
Neste ponto, a réplica A não tem tempo suficiente para copiar os dados mais recentes para a réplica B.
-
Cliente 2 atualiza dados na réplica B para 'Adão: {gosta de: Cães, odeia: cangurus}'.
Neste ponto, a réplica A e a réplica B estão em conflito e o cluster de banco de dados não pode resolver automaticamente as diferenças.
Um mecanismo alternativo é usar marcadores de hora e confiar neles para indicar os dados mais recentes. Em tal situação, é de bom senso que a aplicação verifique se os timbres de tempo lê o valor mais recente antes de atualizar o valor.
Eles estão verificando se o verifique e configure mecanismo, o que basicamente significa 'Se a versão mais recente ainda for a versão 2, salve minha versão 3'. Esse mecanismo às vezes é referido como atualização de correspondência de leitura (RMU) ou leitura de gravação de correspondência (RMW). Este mecanismo é o mecanismo padrão empregado por Oracle NoSQL, Redis, Riak e Voldemort.