O Oracle foi o primeiro banco de dados com o qual desenvolvi, então sei que pensar em mudar para algo como NoSQL e deixar para trás o modelo relacional pode parecer uma coisa assustadora. O fato é que não foi realmente assustador quando finalmente optei por mudar para o modelo de documento NoSQL que o Couchbase oferece. Isso ocorre porque, diferentemente de outros bancos de dados NoSQL, o Couchbase oferece uma linguagem semelhante à SQL que parece muito familiar para um usuário de RDBMS.

Para facilitar a transição, vamos analisar um cenário em que você está usando um RDBMS Oracle e gostaria de fazer a transição para o Couchbase.

Principais diferenças entre Oracle e Couchbase

Por ser da Oracle, presumo que você já saiba que se trata de um banco de dados relacional que consiste em tabelas, linhas e colunas. Bastante padrão quando se trata de qualquer banco de dados relacional. Esse não é o caso de um banco de dados de documentos NoSQL como o Couchbase. Em vez disso, você está trabalhando com objetos e matrizes JSON que não têm estrutura e praticamente nenhuma limitação.

Embora a modelagem de dados seja, em minha opinião, a maior diferença, ela não é a única. No entanto, vamos começar por aí.

O modelo de dados do banco de dados relacional

Para manter as coisas simples e fáceis de acompanhar neste artigo, vamos supor que temos as seguintes tabelas:

  • cliente
    • id: chave primária numérica
    • first_name: varchar
    • last_name: varchar
  • histórico do cliente
    • id: chave primária numérica
    • product_id: chave estrangeira numérica
    • quantidade: numérico
    • endereço_do_cliente
    • id: chave primária numérica
    • customer_id: chave estrangeira numérica
    • cidade: varchar
    • estado: varchar
  • produto
    • id: chave primária numérica
    • name: varchar
    • description: varchar
  • revisão do produto
    • id: chave primária numérica
    • product_id: chave estrangeira numérica
    • customer_id: chave estrangeira numérica
    • revisão: varchar

As tabelas e colunas acima não são as mais complexas, mas comprovam o modelo relacional. Todas elas estão conectadas pelo uso de relacionamentos de chave primária e estrangeira.

Opções para um modelo de dados NoSQL

Como o NoSQL não tem esquema, há várias maneiras de modelar os dados que acabamos de ver no Oracle.

Documentos de referência

A referência a documentos provavelmente lhe parecerá mais familiar em termos de dados relacionais. Em um RDBMS como o Oracle, você está se referindo a outras linhas de dados por meio de chaves primárias e estrangeiras. Não existe o conceito de chave primária ou estrangeira no NoSQL, mas isso não significa que você não possa criar o mesmo tipo de relacionamento.

Por exemplo, veja os seguintes documentos NoSQL:

c::1

ca:1

Suponha que os documentos acima sejam modelados de forma semelhante ao seu equivalente em RDBMS. c::1 é apenas um valor de identificação que criei para o cliente documento e ca:1 é uma identificação que criei para o endereço_do_cliente documento.

Embora ainda não os consultemos, podemos pensar nesses documentos como sendo o equivalente a uma única linha em um banco de dados relacional. Por exemplo, uma linha do arquivo cliente A tabela Oracle seria um documento no Couchbase.

Muito semelhante, correto?

Incorporação de documentos

É nesse ponto que as coisas podem se tornar muito diferentes em relação ao Oracle. Como o JSON é um dado complexo, podemos ter matrizes em nossos documentos. Então, e se quisermos manter todos os dados semelhantes juntos?

O que você acha disso? Com o que foi dito acima, em vez de um endereço por documento, agora estamos armazenando todos os endereços de um determinado cliente, com os dados do cliente.

Você deve estar se perguntando o que acontece se tiver relacionamentos muito complexos nos dados Oracle que, quando transpostos para o Couchbase, resultariam na incorporação dos mesmos dados em mais de um documento do Couchbase. Isso pode acontecer, mas não é uma coisa ruim. Você não precisa de dados normalizados em um banco de dados NoSQL como o Couchbase. Entretanto, se você estiver realmente preocupado, por que não misturar as duas abordagens? Mantenha dados como histórico do cliente juntos sem relacionamentos e se referem a outros que podem mudar com mais frequência.

Diferenças de consulta entre Oracle e Couchbase

Oracle SQL vs Couchbase N1QL

Não é segredo que o Oracle usa sua própria variante do SQL tradicional para consultar dados no banco de dados, mas é SQL. Por exemplo, se você quisesse retornar todas as avaliações de produtos e expandir as tabelas relacionais em torno delas, faria uma consulta como esta:

E se eu lhe dissesse que você pode fazer quase a mesma coisa com os dados NoSQL do Couchbase? Veja a seguinte consulta N1QL do Couchbase:

Não é muito diferente, certo? Você pode notar que estamos usando nome do balde três vezes. Isso ocorre porque não há tabelas no NoSQL e todos os diferentes documentos e tipos de documentos existirão no mesmo bucket. A chave do documento é o valor ao qual nos unimos.

Talvez você queira inserir novos dados no Oracle cliente tabela. No Oracle, você pode fazer algo assim:

Se você quiser inserir dados no Couchbase, poderá fazer o seguinte:

Diferenças de desenvolvimento entre Oracle e Couchbase

Do ponto de vista do desenvolvedor, muitos que usam Oracle como banco de dados tendem a usar Java. O Oracle não se restringe apenas ao Java, mas, como o Java é Oracle, isso geralmente faz sentido. É por isso que os próximos exemplos serão baseados especificamente em Java.

O driver JDBC da Oracle

Em um aplicativo Java, se você quisesse se conectar a um banco de dados Oracle, usaria o driver Java Database Connector (JDBC). Com o driver incluído em seu projeto, seja por meio de ferramentas como o Maven ou manualmente, você pode carregá-lo e começar a consultar os dados.

Um exemplo disso pode ser o seguinte:

O SDK Java do Couchbase

Para se conectar ao Couchbase por meio de um aplicativo Java, você usaria o Couchbase Java SDK em vez de um driver JDBC, embora exista um. O motivo pelo qual usaríamos o SDK é que as coisas se tornam incrivelmente fáceis com ele.

Por exemplo, com o SDK do Couchbase, o mesmo tipo de operação do Oracle pode ser parecido com o seguinte:

O que foi dito acima pressupõe, é claro, que você baixou o Couchbase Java SDK ou usou o Maven para obtê-lo.

Diferenças de ferramentas

Ao usar o Oracle, você tem muitas ferramentas que podem ser usadas. Por exemplo, se você quiser executar consultas no banco de dados, poderá usar a ferramenta de linha de comando SQLPlus. Você ainda pode usar ferramentas comparáveis ao fazer a mudança para o Couchbase. Se estiver procurando uma ferramenta de linha de comando, você pode usar o CBQ para consultar seus dados. Se você for um usuário avançado da ferramenta Desenvolvedor de SQLnão se preocupe, pois o Couchbase tem sua própria Workbench de consulta em andamento.

Ferramentas de migração de dados

Quando se trata de seus dados, você deve estar se perguntando como pode tirá-los do Oracle e colocá-los no Couchbase o mais rápido possível. Manuel Hurtado escreveu um excelente artigo no blog da Movendo dados do Oracle para o Couchbase.

Em resumo, a postagem do Manuel mostra como usar um utilitário Java chamado oracle2couchbase. Essa ferramenta exportará as linhas de uma tabela para documentos JSON.

Conclusão

Embora o Oracle e o Couchbase sejam duas plataformas de banco de dados muito diferentes, há semelhanças suficientes para que uma mudança não seja tão difícil de ser feita. O modelo de dados relacionais ainda pode ser preservado até certo ponto usando documentos referenciados e esses documentos ainda podem ser consultados usando uma linguagem semelhante ao SQL do Oracle, o que faria você se sentir em casa.

Se você é um usuário Oracle, o Couchbase não deve ser descartado. A forma como os dados existem hoje é diferente da que existia há vinte anos. Ter a flexibilidade do NoSQL é ótimo para o futuro.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Um comentário

  1. [...] Mudança do banco de dados Oracle para o Couchbase [...]

Deixar uma resposta