Sem categoria

Design de chaves e modelagem de dados do Couchbase

Da última vez que analisamos a construção índices secundários manuais no Couchbase: na verdade, usar o Couchbase mais por suas propriedades de armazenamento de valores-chave do que como um armazenamento de documentos.

A continuação dessa discussão sobre chave-valor nos leva a uma das questões mais importantes na modelagem de bancos de dados não relacionais: como nomeamos nossas chaves? Resposta: começamos com um padrão de chave. Veja a seguir como aproveitar as vantagens do Couchbase com as práticas recomendadas de modelagem de dados.

Três maneiras de criar e usar chaves no Couchbase

Em linhas gerais, há três maneiras de criar um padrão de chave em um armazenamento de valores-chave NoSQL:

  • determinístico: por exemplo, o endereço de e-mail que alguém usa para fazer login no seu sistema
  • gerado por computador: por exemplo, um UUID
  • alguma combinação dos dois: por exemplo, um UUID com uma parte determinística.

O padrão de chave que escolhemos depende muito de como planejamos acessar os dados.

Determinístico

Digamos que estejamos armazenando um perfil de usuário. Supondo que não haja cookies, o que é garantido que saberemos sobre o usuário depois que ele fizer o login?

Bem, uma coisa seria o nome de login.

Portanto, se quisermos facilitar nossa vida ao recuperar nosso perfil de usuário, podemos digitá-lo com o nome de login dessa pessoa. Tudo o mais que precisamos saber sobre essa pessoa pode ser derivado de seu perfil de usuário, de uma forma ou de outra.

Rapidamente nos deparamos com um problema: para que um usuário altere seu nome de login, agora temos que criar um novo perfil de usuário com uma nova chave ou criar um documento de consulta. Poderíamos insistir para que nossos usuários nunca alterem seus nomes de login, mas não é razoável fazer com que nossos usuários sofram desnecessariamente.

Poderíamos simplesmente decidir que não é tão trabalhoso copiar os dados do perfil em um novo documento com uma nova chave. Como alternativa, poderíamos usar algo não relacionado aos dados do usuário como nossa chave.

Gerado por computador

A principal desvantagem de uma chave determinística é que, normalmente, ela será um elemento dos dados que estamos armazenando.

Se usarmos algo como um UUID, nossos usuários poderão atualizar seu endereço de e-mail ou qualquer outro nome de login que estivermos usando, sem precisarmos recriar o documento de perfil com uma nova chave.

Podemos até mesmo fazer com que o Couchbase crie chaves para nós usando um contador.

Veja como funciona:

  1. Alguém preenche o formulário de nova conta e clica em "Enviar".
  2. Incrementamos nosso documento contador e ele retorna o próximo número acima (por exemplo, 1001).
  3. Criamos um novo documento de perfil de usuário com a chave 1001.
  4. Em seguida, criamos documentos de pesquisa para coisas como o nome de login, o que nos permite fazer uma pesquisa simples nos dados que mantemos no momento do login.

Também obtemos alguns benefícios colaterais ao usar esse padrão para nomear nossa chave, como um contador que nos informa quantos perfis de usuário criamos durante a vida útil do aplicativo.

Chaves compostas

É quando combinamos esses dois métodos que podemos começar a fazer coisas realmente interessantes com o Couchbase e como usamos os nomes das chaves.

Já vimos anteriormente quando incorporar dados em um documento grande e quando é melhor consultar a outros documentos. Quando optamos por fazer referência a dados mantidos em documentos separados, podemos criar nomes de chaves previsíveis a partir de componentes que nos dizem algo sobre o que o documento contém. Com chaves compostas, estamos procurando naturalmente ocorrendo padrões.

Vamos examinar nosso perfil de usuário novamente. O documento principal é armazenado sob a chave 1001. Estamos trabalhando em um site de comércio eletrônico, portanto, também queremos saber todos os pedidos que nosso cliente fez. Como podemos fazer isso? Simples: armazenamos a lista de pedidos sob a chave 1001::pedidos.

Da mesma forma, nosso sistema pode julgar que tipo de e-mail de marketing deve ser enviado aos clientes com base em seu gasto total com o site. Em vez de fazer com que o sistema calcule isso novamente a cada vez, fazemos isso da maneira NoSQL: calculamos uma vez e armazenamos para recuperação posterior sob a chave 1001::ordens::valor.

Da próxima vez

Na próxima vez, verei como modelar dados de forma mais eficaz para uso com exibições do Couchbase.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Revell, líder de suporte ao desenvolvedor, EMEA, Couchbase

Matthew Revell é um dos principais defensores do desenvolvimento do Couchbase na região EMEA. Ele desenvolveu uma estratégia global para colocar o Couchbase na mente dos desenvolvedores do produto.

2 Comentários

  1. Oi, Matthew,

    Que abordagem você recomenda para a geração de chaves contrapostas em um cenário do couchbase lite? Estou planejando usar a combinação de couchbase lite, gateway de sincronização e servidor couchbase.

  2. [...] O uso de prefixos e sufixos semânticos nos nomes das chaves é uma maneira fácil de atribuir nomes aos documentos, principalmente quando se usa o Couchbase para valores-chave. [...]

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.