Couchbase com Windows e .NET - Parte 2

Couchbase com Windows e .NET - Parte 2 - Linguajar

Esta postagem do blog é a parte 2 de uma série. A Parte 1 abordou como instalar e configurar o Couchbase no Windows.

Em Parte 1 - ConfiguraçãoNa seção "Como obter um produto", mostrei os princípios básicos de como obter Servidor Couchbase em funcionamento. Se você for como eu, está ansioso para começar a programar e ver o que pode fazer. Mas, antes disso, quero falar um pouco sobre o jargão do Couchbase. Não é uma ferramenta difícil de usar, mas é diferente dos sistemas RDBMS, como o SQL Server, com os quais você provavelmente está acostumado. Portanto, esta série de postagens no blog é tanto para você quanto para mim: Estou aprendendo à medida que vou avançando.

Aqui está a versão resumida do ponto de vista de um desenvolvedor: Um Couchbase agrupamento contém nós. Os nós contêm baldes. As caçambas contêm documentos. Os documentos podem ser recuperados de várias maneiras: por suas chaves, consultados com N1QLe também por meio de visualizações (que usam map/reduce). (Com o Couchbase 4.5, peças de documentos podem ser atualizados com o subdocumento API). Agora vamos examinar cada elemento em mais detalhes.

Aglomerado

Para começar, vamos falar sobre um "agrupamento." Um dos pontos fortes do Couchbase é sua capacidade de expansão: instalar servidores adicionais para lidar com mais dados de forma eficiente. Isso contrasta com o aumento de escala, que consiste em substituir um servidor por outro mais robusto e rápido (o que também pode ser feito com o Couchbase). Um cluster é uma coleção de nós relacionados que se coordenam entre si e atuam como um servidor lógico. Ao usar o Couchbase, você está sempre lidando com um cluster, mesmo que tenha apenas um nó nesse cluster. "Couch" é um acrônimo de "Cluster Of Unreliable Commodity Hardware".

Couchbase cluster

Um nó é um componente único em um cluster. Geralmente corresponde a um servidor. Ao definir um cluster, você define uma cota de RAM (por cada serviço). Essa é a quantidade de RAM que cada nó do cluster usará para fornecer um determinado serviço. Portanto, se a cota de RAM de dados for de 2 gb, cada nó do cluster que fornece um serviço de dados terá 2 gb de RAM para trabalhar. Cada nó também contribui com espaço em disco para o cluster.

Um nó fornece um ou mais serviços: armazenamento de dados, indexação, consulta e pesquisa de texto completo. Você pode configurar seu cluster da maneira que desejar: um nó que forneça todos os serviços até um nó para cada tipo de serviço e, em seguida, você pode reduzir e/ou aumentar a escala. (Exemplo: Eu poderia adicionar mais 5 nós para armazenamento de dados, mais 1 nó para indexação e usarei um único servidor realmente robusto para consulta).

Os nós também armazenam dados de réplica de outros nós. Dessa forma, se outro nó ficar inativo, os dados da réplica poderão ser "promovidos" para ativos e o aplicativo poderá continuar seu caminho.

Do ponto de vista da escrita do código, todo esse comportamento deve ser transparente. A configuração dos nós em um cluster pode mudar (e mudará), mas o código não precisa mudar.

Couchbase nodes in a cluster

Balde

A balde é um local para armazenar documentos. Cada documento tem uma chave. Em um bucket, cada chave deve ser exclusiva. Os documentos em um compartimento não precisam ser semelhantes. Você pode armazenar um documento que contenha informações sobre um usuário e um documento com informações sobre um edifício. É possível configurar vários compartimentos em um nó, mas é recomendável limitar-se a 10 compartimentos ou menos. Para usar uma analogia com o banco de dados relacional, um bucket é mais parecido com uma instância ou catálogo de banco de dados. Não é como uma tabela.

O motivo pelo qual o Couchbase é tão rápido é que cada bucket armazena muitos de seus documentos na RAM. Quando chega uma solicitação de um documento, o documento (ou pelo menos os metadados do documento) provavelmente já estará na RAM, pronto para ser usado - sem necessidade de acesso ao disco. Quando um documento novo ou atualizado é recebido, ele é atualizado na RAM e, em seguida, colocado em uma fila para gravá-lo no disco e replicá-lo para outros nós. Quando a memória precisa ser liberada para outros documentos, os metadados permanecem na RAM para recuperação posterior: somente o valor é ejetado (a menos que você configurar o bucket de outra forma).

A bucket with two documents in it

Documento

Em um sentido muito básico, um bucket do Couchbase é apenas um Dictionary gigante. Você pode usar o que quiser para a chave (desde que seja exclusiva) e pode colocar o que quiser no valor. No entanto, se você decidir armazenar JSON no valor, também obterá funcionalidades adicionais: estrutura, indexação, N1QL, exibições etc. Portanto, embora seja possível e suportado o uso de valores não JSON, normalmente a maioria dos valores será armazenada como JSON. É por isso que o Couchbase é chamado de "banco de dados de documentos". Cada bucket contém documentosque são um valor e metadados associados (como a chave).

Portanto, em inglês, faria sentido dizer coisas como:

  • "Ei, cluster X do Couchbase, no bucket 'foo', por favor me dê o valor do documento com a chave 'bar'"
  • "Ei, cluster X do Couchbase, no bucket 'foo', aqui está um novo documento com o valor 'baz', que tem uma chave de 'qux'
  • "Ei, cluster X do Couchbase, no bucket 'foo', por favor, altere o valor do documento com a chave 'corge' para ter um valor de 'grault'

A JSON document

N1QL

O Couchbase reconhece que os bancos de dados relacionais têm sido uma grande parte da carreira de muitos desenvolvedores. Muitos desenvolvedores se sentem à vontade para escrever SQL. No entanto, os bancos de dados de documentos não funcionam da mesma forma que os bancos de dados relacionais, portanto, muitas vezes eles precisam aprender uma maneira totalmente nova de fazer as coisas. No entanto, com o Couchbase Server, se você estiver usando documentos JSON, poderá escrever consultas em uma linguagem chamada N1QL (N1QL significa "Non-first Normal Form Query Language" e se pronuncia "nickel"). N1QL é um superconjunto de SQL. Isso significa que, basicamente, se você conhece SQL, então conhece N1QL. Há algumas diferenças e algumas palavras-chave extras, mas aqui está um exemplo para mostrar como elas são semelhantes:

Isso retornará algo como:

Como mostrarei em posts posteriores do blog, o Linq2Couchbase A biblioteca aproveita o N1QL para oferecer um provedor Linq que será muito semelhante ao Entity Framework, NHibernate.Linq ou outros provedores Linq com os quais você está acostumado.

Índices

Índices no Couchbase são tão importantes quanto nos bancos de dados relacionais. Provavelmente mais, devido ao volume de dados que o Couchbase pode manipular à medida que se expande.

Para habilitar as consultas N1QL em um bucket, você precisa, no mínimo, criar um índice primário. Esse é um índice no próprio bucket. Veja como criar um com o N1QL: CREATE PRIMARY INDEX ON my-bucket;

Se estiver usando documentos JSON, você poderá criar índices com base nos campos dos documentos JSON. Por exemplo, se você tiver muitos documentos com "nome" ou "autor" e fizer consultas com frequência com base nesses campos, poderá criar índices para eles. Esses índices são chamados de "índices secundários".

Conclusão

Estou tão ansioso quanto você para mergulhar no código, mas é bom aprender esse jargão primeiro. Tentei me concentrar nos conceitos mais importantes em detrimento de alguns detalhes. Portanto, se você tiver dúvidas, deixe um comentário abaixo, Entre em contato comigo no Twitterou envie-me um e-mail para matthew.groves AT couchbase DOT com. Gostaria muito de ouvir sua opinião.

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

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

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.