Gerenciando dados em nosql
Uma vez que você gerenciar as chaves de forma adequada, você&rsquo-re pronto para projetar como armazenar dados com NoSQL e garantir que ele&rsquo-s seguro e sempre acessível para o trabalho que você precisa fazer.
Conteúdo
tipos de dados em lojas de valor-chave
lojas de valor-chave actuam tipicamente como &ldquo-baldes&rdquo- para dados binários. Alguns bancos de dados fornecem forte digitação de dados internos e até mesmo apoio esquema. Outros simplesmente fornecer funções auxiliares convenientes em seus drivers de cliente para serialização de estruturas de dados de aplicativos comuns para um armazenamento de chave-valor. Os exemplos incluem mapas, listas e conjuntos classificados.
A Oracle NoSQL pode funcionar em dois modos:
loja binária simples
suporte altamente estruturado esquema Avro
Um esquema Avro é semelhante a um esquema de banco de dados relacional - impor um conjunto muito estrito de regras de formatação em javascript Object Notation dados (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 de Avro para os dados armazenados anteriormente mostrados:
{&ldquo-tipo&rdquo-: &ldquo-record&rdquo-,&ldquo-namespace&rdquo-: &ldquo-com.example&rdquo-,&ldquo-name&rdquo-: &ldquo-UserSession&rdquo-,&ldquo-campos&rdquo-: [{&ldquo-name&rdquo-: &ldquo-usuário&rdquo-, &ldquo-tipo&rdquo-: [&ldquo-string&rdquo-,&rdquo-nulo&rdquo -]}, {&ldquo-name&rdquo-: &ldquo-idsessão&rdquo-, &ldquo-tipo&rdquo-: &ldquo-int&rdquo -}, {&ldquo-name&rdquo-: &ldquo-since&rdquo-, &ldquo-tipo&rdquo-: &ldquo-long&rdquo -}, {&ldquo-name&rdquo-: &ldquo-theme&rdquo-, &ldquo-tipo&rdquo-: [&ldquo-string&rdquo-,&rdquo-nulo&rdquo-]}]}
Um esquema Avro fornece muito forte digitação no banco de dados para quando o esquema é importante. No exemplo anterior, você vê dados de cadeia, um id de sessão numérico, uma data (milissegundos, desde o Unix Tempo Epoch, como um inteiro longo), e uma personalização definição para o tema para usar no site.
Observe também que o tipo de nome de usuário e tema tem duas opções - corda e nulo, que é como você instrui o Oracle NoSQL que valores nulos são permitidos. Você poderia ter deixado tema como uma string e forneceu um parâmetro de configuração adicional de &ldquo-default&rdquo-: &ldquo-bluesky&rdquo-.
Outros bancos de dados NoSQL fornecer índices secundários sobre qualquer propriedade arbitrária de um valor que tem conteúdo JSON. Riak, por exemplo, fornece índices secundários baseados em particionamento documento - basicamente, uma propriedade conhecida dentro de um documento JSON é indexado com um tipo. Isto permite a consulta de intervalo (menor ou maior que), além de comparações iguais iguais e não é simples. Riak consegue fornecer consultas alcance sem um esquema rigoroso - apenas definição do índice simples. Se os dados estiverem lá,&rsquo-s adicionados ao índice.
Video: Banco de dados NoSQL Apache Cassandra
replicação de dados
Armazenar várias cópias dos mesmos dados em outros servidores, ou até mesmo racks de servidores, ajuda a garantir a disponibilidade de dados se um servidor falhar. falha do servidor acontece principalmente no mesmo cluster.
Você pode operar réplicas duas maneiras principais:
- Senhor de escravos: Todos os lê e escreve acontecer com o mestre. Escravos assumir e receber solicitações somente se o mestre falhar.
Video: MongoDB - Fundamentos de Bancos de Dados 2015/2
replicação mestre-escravo é normalmente usado em lojas de chave-valor ACID-compliant. Para habilitar o máximo de coerência, a loja principal é escrito para e todas as réplicas são atualizados antes que a transação seja concluída. Este mecanismo é chamado de De duas fases e cria rede extra e tempo de processamento nas réplicas.
- Mestre-master: Lê e escreve pode acontecer em todos os nós que gerem uma chave. Lá&rsquo-s nenhum conceito de um &ldquo-primário&proprietário partição rdquo-.
réplicas de mestre-mestre são tipicamente eventualmente, consistente, com o cluster executando uma operação automática para determinar o último valor para uma chave e remover valores mais velhos, obsoletos.
Na maioria das lojas de chave-valor, isso acontece lentamente - em tempo de leitura. Riak é a exceção aqui, porque tem um serviço anti-entropia verificação de consistência durante as operações normais.
versionamento de dados
A fim de permitir a resolução de conflitos automática, você precisa de um mecanismo para indicar a versão mais recente de dados. Eventualmente lojas de chave-valor consistentes alcançar a resolução de conflitos de diferentes maneiras.
Riak usa um mecanismo vector-relógio para prever qual cópia é a mais recente. Outras lojas de valor-chave usar timestamps simples para indicar staleness. Quando os conflitos não podem ser resolvidos automaticamente, ambas as cópias de dados são enviados para o cliente. dados conflitantes a ser enviado para o cliente pode ocorrer na seguinte situação:
Cliente 1 escreve a réplica A &lsquo-Adam: {gosta: Queijo}&rsquo-.
Uma réplica cópias de dados de réplica B.
Cliente 1 atualizações de dados sobre réplica à &lsquo-Adam: {gosta: Queijo, odeia: a luz solar}&rsquo-.
Neste ponto, Réplica A doesn&rsquo-t ter tempo suficiente para copiar os dados mais recentes para réplica B.
Cliente 2 atualizações dados sobre réplica B para &lsquo-Adam: {gosta: Dogs, odeia: cangurus}&rsquo-.
Neste ponto, réplica A e B réplica estão em conflito eo cluster de banco de dados não pode resolver automaticamente as diferenças.
Um mecanismo alternativo é a utilização de selos de tempo e confiar neles para indicar os dados mais recentes. Em tal situação,&rsquo-s senso comum para a aplicação para verificar se os selos de tempo ler o último valor antes de atualizar o valor.
Eles estão verificando a verificar e definir mecanismo, o qual significa basicamente &lsquo-Se a versão mais recente ainda é a versão 2, em seguida, salve a minha versão 3&rsquo-. Este mecanismo é por vezes referido como leia atualização jogo (RMU) ou leia jogo write (RMW). Este mecanismo é o mecanismo padrão empregada pela Oracle NoSQL, Redis, Riak, e Voldemort.