Práticas recomendadas e tutoriais

10 outras coisas que os desenvolvedores precisam saber sobre o Couchbase

O Couchbase Server 5.0 e 5.5 foram dois grandes lançamentos. Vamos ver alguns dos novos recursos interessantes e antigos que os desenvolvedores não podem perder:

1) Subdocumentos

Esse recurso já existe há algum tempo, mas ainda vale a pena mencioná-lo. Alguns armazenamentos de valores-chave só permitem que você traga o documento inteiro, o que é uma característica razoável. Afinal de contas, trata-se de um Key-Value Store. No entanto, se você estiver usando o Couchbase como um KV, ainda poderá manipular partes do documento especificando o caminho para ele. Ex:

Dado o seguinte documento:

Você pode manipular partes do documento simplesmente especificando o caminho para ele, como GET('addresses.billing') ou ARRAY_APPEND('purchases.abandoned', 42)

Se você quiser ler mais, dê uma olhada em postagem no blog ou nosso documentação oficial.

 

2) Eventos

A geração de eventos é claramente um dos recursos mais interessantes do Couchbase 5.5 e já temos várias postagens no blog sobre isso, como aqui ou aqui. Para aqueles que ainda não ouviram falar, o Eventing Service permite que você escreva funções no lado do servidor que são acionadas automaticamente sempre que um documento é inserido/atualizado/excluído. Essas funções podem ser facilmente escritas usando uma sintaxe semelhante à do JavaScript:

Além disso, você também pode chamar endpoints em seu aplicativo via curl:

 

3) Uniões ANSI

 O Couchbase permite que você use junções em suas consultas há muito tempo, mas, até agora, isso só podia ser feito usando nossa própria sintaxe. Desde o Couchbase 5.5, você também pode usar a sintaxe ANSI JOIN:

Você pode ler mais sobre isso aqui.

 

4) Pesquisa de texto completo

A maioria dos aplicativos voltados para o usuário precisa, eventualmente, implementar algum tipo de pesquisa avançada. Esse tipo de recurso geralmente exige que você envie dados para uma ferramenta de terceiros, como o Solr ou o Elastic Search. No entanto, adicionar essas ferramentas aumenta significativamente o custo e a complexidade de sua infraestrutura, sem mencionar todo o código necessário para enviar alterações de objetos/documentos para essas ferramentas.

A partir do Couchbase 5.0, você pode simplesmente criar um índice de pesquisa de texto completo no console da Web e começar a fazer pesquisas de texto completo diretamente no banco de dados:

Full Text Search - Create Indes

Destaque dos resultados da pesquisa:

 

É fácil fazer uma pesquisa simples por meio do SDK:

Você pode ver a documentação oficial aqui.

 

5) Consultas mais rápidas, GROUP BYs e Aggregation Pushdown

Independentemente do banco de dados, as operações de agregação (min, max, avg, etc.) e GROUP BYs sempre foram problemáticas em termos de desempenho. Para resolver esse problema, com o Couchbase 5.5, você pode aproveitar seus índices para acelerar esses tipos de consultas:

~90ms - Plano de consulta da consulta acima

~7ms - A mesma consulta anterior, mas usando um índice adequado

Você pode ler o artigo completo aqui.

 

6) Controle de acesso baseado em função e certificado X509

 Os bancos de dados são o grande prêmio para qualquer invasor mal-intencionado, e é por isso que nunca é demais adicionar uma camada extra de segurança. Com o Couchbase, você pode autenticar clientes usando certificados X.509 e limitar seu acesso por meio do RBAC (Role Based Access Control):

Você também pode conceder permissões por meio do N1QL. Vamos ver como conceder uma permissão SELECT para o usuário denis no balde algum_bucket seria semelhante:

Você pode ler mais sobre isso aqui ou aqui.

 

7) Criptografia de campo

A criptografia em repouso é uma das formas mais básicas de segurança, e você pode facilmente criptografar/descriptografar campos usando o Criptografia Java do Couchbase:

Leia mais sobre o assunto aqui ou aqui.

 

8) SDK reativo

Também oferecemos um SDK reativo, o que não é fácil de encontrar em boa parte dos provedores de banco de dados. Isso se deve principalmente ao fato de que nosso próprio SDK é implementado de forma reativa.

A programação reativa é muito importante para a otimização do desempenho e dos recursos. Se você ainda não está familiarizado com esse conceito, recomendo fortemente este artigoque oferece uma visão geral rápida de por que você pode considerar o uso da programação reativa em sua camada de persistência.

Temos um extenso material sobre esse tópico. Se quiser saber mais, você pode começar aqui ou aqui.

 

9) "Ajuste fino de velocidade" via SDK

No Couchbase, tentamos capacitar os desenvolvedores a ajustar o desempenho até mesmo no nível do documento, para que eles possam decidir, caso a caso, qual é a melhor opção para cada cenário.

Vamos dar uma olhada, por exemplo, em como o Couchbase armazena dados. Por padrão, assim que o servidor reconhece que um novo documento deve ser armazenado, ele já envia a resposta de volta ao cliente dizendo que sua "solicitação foi recebida com sucesso" e, de forma assíncrona, armazenamos e replicamos o documento.

Essa abordagem é muito boa em termos de velocidade, mas há uma pequena chance de perda de dados se o servidor falhar quando o documento ainda estiver na memória do servidor. Se quiser evitar isso, você pode especificar por meio do SDK que gostaria de receber a confirmação somente depois que o documento tiver sido replicado ou armazenado no disco:

Por que permitir isso? Bem, porque se você puder arcar com a pequena chance de perder esses dados em caso de falha do servidor, poderá melhorar significativamente o seu desempenho. Essa não é uma decisão do tipo "tudo ou nada", pois você pode decidir quais partes do sistema valem esse risco.

Você também pode fazer algo semelhante com suas consultas. Nesse caso, se deseja esperar que os índices/visualizações sejam atualizados com base nas últimas alterações ou se está satisfeito com a pequena chance de não retornar a versão mais recente dos seus documentos:

Há alguns outros recursos em nosso SDK que também podem ser otimizados, e todas essas pequenas decisões podem melhorar significativamente seu desempenho em escala.

 

10) Observabilidade do tempo de resposta

Já mencionei esse item em meu postagem anterior do blogmas acho que vale a pena mencioná-lo novamente. Desde a versão 5.5, introduzimos um novo recurso chamado Response Time Observability, que fornecerá aos desenvolvedores de sistemas uma maneira muito simples de observar os tempos de resposta em relação a um limite (ajustável).

Esse recurso, que usa o formato OpenTracing, registra solicitações lentas seguidas de uma série de detalhes sobre elas após cada intervalo de tempo, para que você possa identificar facilmente as operações com desempenho insatisfatório.

 

A observabilidade do tempo de resposta está ativada por padrão, e já definimos um conjunto de limites para evitar o registro de solicitações saudáveis. Se quiser ultrapassar os limites do seu cluster, você pode até mesmo definir limites menores manualmente. Você pode ler mais sobre isso aqui.

 

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

Author

Posted by Denis Rosa, defensor dos desenvolvedores, Couchbase

Denis Rosa é um Developer Advocate do Couchbase e mora em Munique, na Alemanha. Ele tem uma sólida experiência como engenheiro de software e fala fluentemente Java, Python, Scala e Javascript. Denis gosta de escrever sobre pesquisa, Big Data, IA, microsserviços e tudo o mais que possa ajudar os desenvolvedores a criar um aplicativo bonito, mais rápido, estável e escalável.

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.