Há alguns meses, escrevi um tutorial completo sobre Como usar
o Couchbase Java SDK para criar um aplicativo em torno dos dados de amostra do Couchbase 4.0. No entanto, nunca expliquei o processo de pensamento
por trás do desenvolvimento desse aplicativo ou por que o Couchbase Java SDK é tão conveniente.
Neste artigo, pretendo abordar o processo de raciocínio por trás do design de um aplicativo e, em seguida
como você pode desenvolvê-lo com Java e Couchbase. É claro que não será tão completo quanto o meu tutorial, mas, ao vê-los, você poderá
juntos definitivamente o colocarão no caminho certo.
Criando um processo de design
Vamos supor que você queira criar o próximo grande aplicativo de reserva de viagens. Você tem uma ótima ideia,
mas não tem certeza do tipo de processo a ser seguido para executar a ideia. Provavelmente é uma boa ideia
para dividir a ideia em partes.
Muito provavelmente, seu aplicativo de reserva de viagem conterá as três partes a seguir:
- Uma camada de API de back-end
- Uma camada de interface do usuário voltada para o cliente
- Uma camada de dados
Então, vamos falar um pouco mais sobre cada camada.
A camada de dados
Um banco de dados, neste caso o Couchbase, atuará como a camada de dados do seu aplicativo. Por que estamos escolhendo
para usar o Couchbase como nosso banco de dados NoSQL ou, nesse caso, nosso banco de dados em geral? Em breve, abordarei esse assunto,
mas, em resumo, estamos usando NoSQL porque nosso aplicativo será RESTful e servirá dados JSON. Estamos usando
Couchbase porque queremos ter a liberdade de usar consultas SQL ou operações de valor-chave (k-v).
SQL e valores-chave no NoSQL?
Com os bancos de dados de documentos NoSQL, cada um de seus documentos tem uma chave de pesquisa ou id. Ao fornecer a chave na função
você obtém um valor ou, no nosso caso, dados JSON. Se você é novo em bancos de dados, esse conceito pode não ser muito
difícil de entender, mas se você vier de um banco de dados como o Oracle ou o MySQL, isso pode parecer pura
loucura.
Nos sistemas de gerenciamento de bancos de dados relacionais (RDBMS), como Oracle ou SQL Server, se você quiser obter dados do
você pode executar consultas SQL.
Com o Couchbase 4.0, agora você tem o que é chamado de N1QL, que permite executar consultas SQL em seu NoSQL
ao mesmo tempo em que lhe dá a opção de usar também pesquisas de valores-chave. O melhor dos dois mundos por ser
capaz de fazer a escolha você mesmo.
Alguns exemplos de documentos
Como esse é um aplicativo de reserva de viagens, você provavelmente trabalhará com companhias aéreas
e informações sobre o aeroporto. É claro que você provavelmente terá muitas outras informações, mas
Para fins deste artigo, isso realmente não importa.
Com base no que sabemos que precisamos realizar, os documentos NoSQL para nossos dados podem ser mais ou menos assim
Isso:
Aeroportos
1 2 3 4 5 6 7 |
{ "tipo": "aeroporto", "name" (nome): "Internacional de São Francisco", "tag": "SFO" } |
Companhias aéreas
1 2 3 4 5 6 |
{ "tipo": "companhia aérea", "name" (nome): "United Airlines" } |
Cada um desses documentos JSON provavelmente conterá muitas outras informações na realidade, mas a versão reduzida
As versões acima devem funcionar bem.
Agora já devemos ter informações suficientes sobre nossa camada de dados para começar a aprender sobre a camada de back-end.
A camada de API de back-end
Todo o objetivo do backend é servir como uma ponte entre seus dados e a interface do usuário que cada usuário utiliza.
que o usuário do seu aplicativo vê na tela. Nesse caso, o backend seria Java.
A camada Java fará solicitações ao banco de dados, formatará as respostas e as retornará
para o usuário final para exibição. O usuário final que faz as solicitações à camada Java o fará por meio de pontos de extremidade
no backend. Pense em um endpoint como um URL diferente em seu aplicativo, cada um respondendo com
dados diferentes.
A camada da interface do usuário voltada para o cliente
O objetivo da camada de IU voltada para o cliente é oferecer ao usuário final algo agradável para trabalhar, em vez de
do que processar código bruto. Alguém que visita um site de viagens como o Expedia pode não ter nenhum desenvolvedor
experiência. A camada de front-end normalmente consiste em uma linguagem como AngularJS, ReactJS ou
jQuery.
Desenvolvimento do aplicativo
Sabemos que nosso processo de desenvolvimento será dividido em partes. Principalmente, um front-end e um
back-end. Em vez de criar o aplicativo completo do zero, falaremos sobre o que é
necessário para realizar cada parte.
Servindo uma API RESTful
De imediato, você descobrirá que o Java não pode aceitar e responder a solicitações HTTP. Há muitas opções
para fazer isso, mas uma opção pode ser usar o Spring Boot porque você pode obter rapidamente uma API
em execução. Com o Spring Boot, você pode criar pontos de extremidade de API com a seguinte aparência:
1 2 3 4 5 6 7 |
@RequestMapping(valor="/companhia aérea", método= RequestMethod.OBTER) público Objeto login(@RequestParam Cordas companhia aérea) { // Processar a solicitação // Retornar uma resposta } |
Se o usuário clicar em www.yourapp.com/airline em seu navegador ou aplicativo front-end, o
companhia aérea passados serão processados com alguma lógica que você definir e, em seguida, com alguma resposta
os dados são retornados. A lógica que você define pode envolver a consulta de dados.
Consulta de dados
Digamos que você tenha alguns de cada tipo de documento em seu banco de dados do Couchbase. Por cada tipo de documento, quero dizer
aeroporto e companhia aérea. Agora, digamos que seu back-end Java tenha recebido um
de seu front-end para obter informações sobre o Unidos avião de passageiros. Temos dois
opções para obter essas informações:
Obtendo uma companhia aérea com o K-V Lookup
Abaixo, estamos supondo que cada documento da companhia aérea seja prefixado com o nome da chave companhia aérea:: e
que o companhia aérea foi passado do front-end.
1 2 3 4 |
JsonDocument doc = balde.obter("companhia aérea::" + companhia aérea); JsonObject responseContent = JsonObject.criar().colocar("dados", doc.conteúdo()); |
Estamos fazendo uma pesquisa com base nessa chave composta e criando um JsonObject a partir do resultado. Neste ponto
podemos criar algum código Java para retornar o resultado ao front-end.
Obtendo uma companhia aérea com N1QL
Assim como na pesquisa k-v, estamos assumindo que as chaves do documento são compostas e têm o prefixo
companhia aérea::. Também estamos assumindo que o ID da chave é passado pelo front-end.
1 2 3 |
Resultado da consulta resultado = balde.consulta("SELECT * FROM `" + balde.nome() + "` AS a WHERE META(a).ID = 'airline::" + companhia aérea + "'"); |
Acima está uma consulta N1QL que é muito semelhante ao que você encontraria com o SQL. Ambas as opções são válidas para
obter informações sobre a companhia aérea. No entanto, em cenários em que você está consultando dados de diferentes
tipos de documentos (talvez uma junção), pode ser mais vantajoso usar o N1QL em vez de pesquisas. Os motivos
sendo:
- O Couchbase Server faz todo o trabalho pesado, e não o back-end
- Menos código em seu back-end
Concluindo
Você teve uma ideia do que é necessário para atender aos endpoints HTTP em Java e como consultar dados por meio de
o back-end Java, mas onde isso nos deixa agora?
Você só precisa adicionar mais pontos de extremidade à sua API Java, cada um deles executando consultas diferentes ou
pesquisas no Couchbase.
Conclusão
Ao projetar um aplicativo da Web, você terá várias camadas que funcionam juntas. O Couchbase é sempre
uma boa opção porque é um banco de dados de documentos JSON, o que facilita a criação de APIs. O Couchbase Java
O SDK é excelente porque você tem muitas opções simples para consultar dados.
Embora este não tenha sido um artigo completo sobre como criar um aplicativo do início ao fim, eu recomendo
você dê uma olhada no tutorial que escrevi sobre criando uma viagem
aplicativo.