Servidor Couchbase

Primeiros passos com NoSQL usando o Couchbase Server e PHP

Há alguns dias, escrevi sobre Usando PHP com Docker e Couchbasemas nunca me aprofundei nas práticas recomendadas para usar PHP e bancos de dados NoSQL. Por exemplo, como você lê e grava dados com o Couchbase Server usando PHP? O que acontece quando você precisa criar algumas consultas avançadas ou criar índices de alto desempenho?

Veremos alguns exemplos de uso do Servidor Couchbase com PHP, uma extensão do tutorial anterior sobre como colocar o banco de dados e o aplicativo da Web em contêineres.

Enquanto o tutorial anterior é incrivelmente útil para o desenvolvimento de microsserviços, mas não é um pré-requisito para o material que discutiremos a seguir.

Supondo que você tenha algum ambiente PHP configurado e pronto para servir aplicativos, precisamos obter o Couchbase PHP SDK para comunicação com nosso banco de dados. Se você estiver usando o Debian ou o Ubuntu, execute o seguinte:

Os comandos do Terminal acima foram retirados do manual oficial do CDocumentação do ouchbase PHP. Primeiro, o SDK é baixado e instalado, seguido por vários pacotes Debian que são necessários. Por fim, a extensão do Couchbase é baixada e seu pacote peças dependência.

Depois que as dependências forem instaladas, adicione o seguinte ao seu php.ini file:

Se estiver usando um ambiente diferente do Debian ou Ubuntu para hospedar seu aplicativo PHP, consulte a documentação para obter outras etapas de instalação do SDK.

Execução de operações CRUD com o Couchbase Server e PHP

O Couchbase, em sua forma mais simples, é um banco de dados de valor-chave. Com isso em mente, podemos fazer operações como leitura, gravação, substituição e exclusão (CRUD), todas baseadas na chave de um determinado documento.

Veja o seguinte código PHP, por exemplo:

O código acima pressupõe que todos os dados impressos estarão no formato JSON. Primeiro nos conectamos a um cluster do Couchbase, neste caso um único nó localizado em nossa máquina local. Por máquina local, quero dizer que, nesse cenário, o Couchbase e o PHP estão operando no mesmo servidor.

Depois que uma conexão é estabelecida, podemos abrir um determinado Bucket que usaremos para armazenar dados em nosso aplicativo e ler dados. O Bucket neste exemplo é denominado padrão e não tem senha.

É aqui que as coisas ficam interessantes:

Primeiro, tentamos obter um determinado documento em nosso Bucket pelo nome da chave. Se for lançado um erro por motivos como a inexistência dessa chave, nós o detectaremos e tentaremos criar um novo documento com essa chave.

Os dados inseridos podem ser tão complexos quanto você desejar. No Couchbase, eles são armazenados como JSON e são flexíveis, ao contrário das alternativas de bancos de dados relacionais.

Depois de ler os dados com êxito, podemos tentar imprimi-los de volta ao cliente:

Se quiséssemos, poderíamos usar outros comandos do SDK, como substituir ou remover dependendo de nossas necessidades. No entanto, na maioria das vezes, estaremos trabalhando com grandes quantidades de dados em que talvez não saibamos todas as chaves para consulta.

É aqui que o N1QL e o PHP podem se unir.

Execução de consultas SQL em NoSQL com PHP e N1QL

Se esta é a primeira vez que você ouve falar do N1QL, trata-se de uma sintaxe SQL que funciona com dados JSON no Couchbase. Isso significa que, se você conhece SQL de um banco de dados relacional como o Postgres, saberá a maior parte do N1QL.

Vamos usar o exemplo anterior de CRUD e prepará-lo para o N1QL:

Como no exemplo anterior, estamos estabelecendo uma conexão e abrindo um determinado Bucket NoSQL. Como planejamos consultar os documentos no banco de dados por valores diferentes de suas chaves, precisamos criar índices.

O procedimento acima cria um índice que estamos chamando de pessoas que indexa o sobrenome propriedade de documentos dentro do padrão Bucket. Isso significa que poderemos consultar todos os documentos com base em um sobrenome valor.

Se o índice já existir, receberemos uma exceção, e é por isso que estamos tentando capturá-la.

Com o índice instalado, queremos tentar consultar os documentos:

No exemplo acima, estamos construindo uma consulta para várias propriedades dentro de documentos que atendem à lógica condicional do ONDE cláusula. Se não quiséssemos definir cada propriedade, poderíamos ter usado facilmente o caractere asterisco.

Assim como em um banco de dados relacional, os bancos de dados NoSQL podem ser vítimas de ataques de injeção de SQL, e é por isso que estamos usando uma consulta parametrizada. Isso nos permite dividir em parâmetros os dados que são potencialmente gerados pelo usuário. Esses dados podem ter sido enviados por meio de um formulário.

Se os resultados da consulta anterior retornarem como uma matriz vazia, isso significa que nenhum documento foi encontrado com esse critério. Se a matriz estiver vazia, queremos criar novos dados de modo semelhante ao que fizemos no exemplo anterior. Desta vez, estamos criando dados por meio de uma consulta N1QL e um INSERIR declaração.

Depois que os dados são inseridos, queremos consultá-los. O problema aqui é que estamos consultando com base em um índice e esse índice pode não ter sido atualizado ainda. Para garantir que receberemos os dados mais recentes, podemos definir a consistência da consulta e aguardar até que o índice seja atualizado.

Por fim, imprimimos o resultado na tela.

Conclusão

Você acabou de receber uma rápida introdução ao uso de aplicativos de exemplo NoSQL e PHP executados em Couchbase. Nos exemplos que vimos, era tudo CRUD ou tudo N1QL. Você não é, de forma alguma, obrigado a usar um ou outro. Você pode usar CRUD e N1QL no mesmo aplicativo.

O Docker funciona muito bem para criar contêineres de microsserviço usando este exemplo. Para ver como colocar esse aplicativo em contêineres, confira o tutorial anterior que escrevi, intitulado, Implantar um aplicativo PHP com Couchbase como contêineres do Docker.

Se você quiser obter mais informações sobre como usar o SDK PHP do Couchbase, consulte a seção Portal do desenvolvedor do Couchbase.

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

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.

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.