O principal resultado deste blog é ensinar como você pode migrar facilmente seus dados relacionais para o Couchbase, reduzindo seu TCO e capacitando sua plataforma de dados para responder aos ciclos de lançamento rápidos que conhecemos e amamos! Durante a migração, você pode até mesmo manter os nomes individuais/espaços-chave que já estruturou usando escopos e coleções. Este blog é uma espécie de amálgama dos recursos recém-lançados explicados em outros blogs e atualizações recentes, mas, diferentemente desses blogs, inclui alguns exemplos de como você pode migrar seus dados relacionais para o Couchbase.

Uma das coisas brilhantes sobre o Couchbase é que realmente ouvimos as necessidades da nossa comunidade e continuamos a desenvolver nossos produtos para oferecer a melhor experiência possível aos nossos clientes. Escrevi este blog de forma prática se você quiser acompanhar, mas também pode pular a etapa de extração e trabalhar apenas com um TSV que forneci!

Se você estiver acompanhando, os pré-requisitos são um RDBMS para extrair dados, um interpretador python e um servidor Couchbase (seja no Docker, VM, físico etc.).

Vou usar um exemplo on-line para nosso banco de dados de demonstração. Vinculado aqui é o banco de dados de amostra com três tabelas: cliente, agentes e pedidos.

Migrar dados para o Couchbase é muito fácil, pois vamos imitar nossa estrutura de tabela usando nosso novo recurso de escopos e coleções. Para começar, precisamos de um espaço de armazenamento lógico. Neste exemplo, estamos usando um bucket por banco de dados, portanto, só precisamos criar um bucket. O esquema será mapeado para um escopo, portanto, um escopo. Por fim, cada uma das tabelas será mapeada para uma coleção com o mesmo nome, ou seja, um total de três coleções.

Criação de buckets, escopos e coleções:

Temos muitas opções disponíveis aqui. O SDK, a API REST, a CLI do Couchbase (sem esquecer o shell do Couchbase) e a GUI da Web. Vou usar a API REST, pois a vantagem é que podemos acessá-la pela linha de comando e não há necessidade de instalar nada! Para quem não conhece a interface REST, a documentação aqui explicará outros métodos alternativos.

As etapas a seguir especificarão os comandos necessários para configurar seu bucket, escopo e coleções:

Execute os dois comandos a seguir para criar seu bucket de dados e seu escopo:

Agora, crie as três coleções para as quais mapearemos os dados da tabela:

Basta alterar a variável $TABLE_NAME conforme necessário para criar as coleções de agentes, pedidos e clientes, respectivamente.

(Há links para as páginas de documentação dessas APIs no Apêndice)

Com tudo criado, vá até a seção Buckets e clique no link "Scopes & Collections" (Escopos e coleções) ao lado do nome do bucket que você criou; o meu se chama migration (migração). Se você expandir o escopo que criamos, verá as três coleções que criamos.

 

Extração de dados do nosso RDBMS

Agora que já temos nosso bucket, escopo e coleções, estamos prontos para exportar nossos dados relacionais. Escrevi um arquivo roteiro curto que extrai os dados armazenados no banco de dados MySQL de amostra para TSV, o que é compatível com nossas ferramentas de importação, ou você mesmo pode exportar os dados. Se já tiver configurado o banco de dados, basta executar o script e alterar as variáveis para usar o nome de usuário e a senha que você configurou. Depois de executar o script, você verá três arquivos .tsv criados contendo os dados de cada tabela do banco de dados de amostra.

Aqui está um exemplo de saída TSV. Se estiver trabalhando apenas na parte de importação, vá em frente e use isso:

 

Importação de dados para o Couchbase

Nossa ferramenta de importação rica em recursos, o cbimport, facilita muito a importação de dados de vários formatos. Recentemente, implementamos algumas funcionalidades de importação em nossa interface gráfica na Web, tornando o processo ainda mais acessível. Veja abaixo uma captura de tela da nossa ferramenta de importação Web Gui. Para chegar até aqui, faça login na GUI da Web do Couchbase e vá para "Documents" (Documentos) -> "Import" (Importar).

Aqui, vamos importar nossos TSVs usando o botão "Select File to Import" (Selecionar arquivo para importar). Observe que, ao carregar um arquivo, muitos campos são preenchidos para você. Dê uma olhada nos dados importados e verifique se eles correspondem ao que você espera, considerando a estrutura relacional anterior. Temos apenas algumas etapas curtas a serem concluídas para importar nossos dados.

Primeiro, especifique uma coleção para a qual importar os dados, por exemplo, agents_out.tsv mapeia para a coleção "agents". Também vamos fazer a correspondência entre as linhas individuais do nosso banco de dados relacional anterior e os IDs de documentos no Couchbase. Novamente, isso é feito facilmente com a nossa ferramenta de importação usando a seção "Import With Document ID" (Importar com ID de documento). Em todas as minhas importações de dados, usei a chave primária dos dados relacionais como o ID do documento no Couchbase, o que é muito útil, pois cada chave em uma coleção deve ser exclusiva. Por exemplo, em agents_out.tsv, usei a chave primária "AGENT_CODE". Execute essa etapa para cada um dos .tsvs: agentes, pedidos e clientes.

 

E aí está, apenas para recapitular, fizemos o seguinte:

  1. Exportamos nossos dados do banco de dados legado para TSV
  2. Criamos um escopo e coleções com base nas tabelas que estamos importando
  3. Importou os dados usando a ferramenta de migração de dados para uma coleção específica, dentro de um escopo.

Ok, então agora que tenho meus dados no Couchbase, preciso aprender uma nova maneira de consultar os dados? Muito pelo contrário, por que não ir até a GUI da Web do Couchbase e consultar alguns de seus dados recém-importados usando N1QL? Ele é compatível com SQL++ e, se você já escreveu uma consulta SQL antes, vai se sentir em casaO portão está aberto, entrem! Não só facilitaremos a elaboração de consultas, como também ajudaremos você a criar o índice certo com nosso Serviço de consultor de índicesSe você quiser usar um índice, basta inserir a consulta que deseja realizar e o consultor sugerirá um índice. Oferecemos suporte até mesmo a JOINs:

Esse é um ótimo começo na direção certa para fazer a transição do sistema relacional para o NoSQL, se você quiser saber mais sobre como modelar seus dados para aproveitar ao máximo o Couchbase, confira nosso guia de modelagem de dados.

Quer saber mais sobre escopos e coleções? Recomendo o blog da Shivani

 

Apêndice:

 

Autor

Postado por Sam Redman, engenheiro de soluções

Sam Redman é engenheiro de soluções na Couchbase. Sam trabalhou anteriormente em ambientes de desenvolvimento e SRE antes de ingressar na Couchbase.

Deixar uma resposta