Servidor Couchbase

Criar um aplicativo de galeria de fotos com marcação automática usando o AWS Rekognition e o Couchbase - Parte 1

Ratnopam Chakrabarti é um desenvolvedor de software que trabalha atualmente para a Ericsson Inc. Ele tem se concentrado em IoT, tecnologias máquina a máquina, carros conectados e domínios de cidades inteligentes por um bom tempo. Ele adora aprender novas tecnologias e colocá-las em prática. Quando não está trabalhando, gosta de passar o tempo com seu filho de 3 anos.

Ratnopam Chakrabarti

Esta é a Parte 1 de uma série de publicações em que apresentarei um aplicativo de galeria de fotos que permite que os usuários carreguem qualquer imagem de sua escolha (em formato .png ou .jpg) e vejam todas as imagens que foram carregadas por outros usuários. O aplicativo permite que os usuários "curtam" uma determinada imagem. Depois que um usuário carrega uma imagem, o aplicativo usa o serviço Amazon Web Services' API de reconhecimento para digitalizar e detectar rótulos para essa imagem. Os rótulos retornados com maior confiança são usados para marcar as imagens. O aplicativo também permite que os usuários cliquem em uma determinada etiqueta para visualizar todas as imagens com essa etiqueta.

Demonstração

Aqui está um link para a demonstração do aplicativo finalizado.

A pilha de tecnologia

Couchbase - Para armazenar metadados de imagens

Express - Para criar o front-end com o nó

AWS SDK e S3 - Para armazenar os arquivos de imagem e também para o reconhecimento de imagens

Node.js - Para criar o back-end do aplicativo

Além disso, o jQuery é usado para fazer chamadas Ajax do lado do cliente para os arquivos server.js.

O Node.js é usado para criar todas as APIs RESTful que o aplicativo utiliza. Ele usa as seguintes dependências para realizar o trabalho:

Veja para que servem esses módulos:

  • O aws-sdk - usado para chamar as APIs do AWS Rekognition
  • knox - usado para interagir com o Amazon S3
  • gm - usado para redimensionar a imagem (não queremos armazenar imagens de tamanho grande no S3, afinal, ele tem um preço)
  • formidable - usado para processar os arquivos de entrada
  • hogan-express - fornece Bigode mecanismo de modelo para a estrutura express
  • socket.io - usado para emitir eventos do servidor para o cliente que podem ser acionados
  • couchbase - usado para interagir com o banco de dados do Couchbase
  • uuid - usado para gerar IDs de documentos aleatórios para armazenar documentos JSON no Couchbase

Função do Couchbase

Estou usando o Couchbase neste aplicativo para

  1. armazenar metadados da imagem, como o nome do arquivo
  2. armazenar outras informações úteis, como o número de "curtidas" de uma imagem e as tags atribuídas a uma imagem

Nesta postagem (Parte 1), descreverei as etapas necessárias para usar o Couchbase com o aplicativo de galeria de fotos. O código-fonte completo do aplicativo está disponível em GitHub.

Instalar o Couchbase e outros módulos do Node

Para instalar todos os módulos listados no package.json acima, vá para o diretório raiz do aplicativo e digite:

Depois que todos os módulos, inclusive o Couchbase, estiverem instalados, sua tarefa agora é usá-los no aplicativo.

Config.json

Defina algumas das informações configuráveis em um arquivo .json chamado config.json.

Aqui, especifiquei o host e a porta do Couchbase Server e também o bucket em que as informações de metadados da imagem serão armazenadas.

server = 127.0.0.1:8091 (se você estiver executando o Couchbase localmente)

Depois que a configuração é definida, a próxima tarefa é importar essa configuração para o aplicativo expresso.

Aqui está um trecho do código do aplicativo:

Estamos usando algumas variáveis de ambiente aqui para identificar o host do Couchbase e o bucket. Se elas não forem fornecidas em tempo de execução, os valores serão padronizados para o config.json mencionado acima.

Executar e configurar o Couchbase

Como pré-requisito para executar o aplicativo localmente, primeiro é necessário instalar e executar o Couchbase Server. Vá para o diretório BASE DE SOFÁ DOWNLOAD PÁGINA e instale de acordo com seu próprio sistema operacional. No meu caso, estou executando uma instalação do Couchbase 4.6 em meu sistema Windows. Quando o Couchbase estiver instalado e funcionando, crie um bucket chamado "photogallery". Esse bucket armazenará todas as meta-informações da imagem. Um aspecto importante a ser observado é que é necessário criar um índice no bucket antes de usá-lo. Para criar um índice:

Depois que o índice for criado, vá até a guia Índice e o índice deverá ser listado.

pasted image 0

Em um ambiente de produção, não é recomendável ter um índice secundário global, pois isso pode causar degradação do desempenho. No entanto, para a escala do nosso aplicativo, não há problema em tê-lo.

Salvar e recuperar documentos no Couchbase

O aplicativo de galeria de fotos faz as seguintes coisas:

  • Quando o usuário seleciona o arquivo e clica em upload, o aplicativo armazena o arquivo em um bucket do Amazon S3.
  • Depois que o arquivo é salvo no S3 com êxito, ele chama a API do AWS Rekognition para atribuir tags à imagem.
  • Depois que as tags são atribuídas, o aplicativo armazena as informações de metadados da imagem no Couchbase Galeria de fotos balde.

Para salvar os dados no Couchbase, precisamos do seguinte trecho de código:

O que o código acima faz é importar as dependências apropriadas para interagir com o banco de dados Couchbase e definir uma função para salvar os dados. Um corpo JSON é criado com o nome do arquivo, os gostos e as tags de uma imagem e, em seguida, a função upsert() é chamada para salvar os dados. Se um documento não tiver um atributo "id" atribuído, a função criará um usando uuid.v4().

Para a recuperação de documentos, dê uma olhada no seguinte trecho de código:

O trecho de código acima retorna todas as imagens do compartimento usando a consulta N1QL. Isso é útil para listar todas as imagens do compartimento da galeria de fotos. Observe que o bucket do Couchbase armazena somente o nome do arquivo, uma parte da url do Amazon s3 é estática e a url completa é criada anexando o nome do arquivo à url estática do s3 de uma imagem.

Parte estática -> https://s3.amazonaws.com/la-image-tagger-chakrar27/

Parte dinâmica -> nome do arquivo

Aqui, la-image-tagger-chakrar27 é o bucket s3 que criei. Para criar esse bucket, faça upload de este modelo cloudformation para o AWS e crie uma pilha. Ele criará o bucket s3.

Esta postagem faz parte do Programa de Redação da Comunidade Couchbase

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

Author

Posted by Laura Czajkowski

Laura Czajkowski é a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela é responsável pelo nosso boletim informativo mensal para desenvolvedores.

Um comentário

  1. [...] Na Parte 1 desta série do blog, vimos como podemos armazenar e recuperar metadados de imagens de e para um bucket do Couchbase. Nesta [...]

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.