A Voyage AI se une ao MongoDB para impulsionar aplicativos de AI mais precisos e confiáveis no Atlas.

Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Desenvolvedor do MongoDB
Centro de desenvolvedores do MongoDB
chevron-right
Produtos
chevron-right
Atlas
chevron-right

Gerenciando uma arquitetura de metadados de catálogo de produtos inteligentes com MongoDB Atlas e Google Cloud Platform Google Cloud Platform

Pedro Bereilh, Diego Canales, Angie Guemes Estrada9 min read • Published Dec 11, 2024 • Updated Dec 16, 2024
JavaScriptAtlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
A transformação digital no varejo foi acelerada por meio da adesão de plataformas de e-commerce pelos clientes como seus canais de compra selecionados, com a expectativa de que as transações atinjam um valor de $8.1 triliões por 2026. Para aproveitar o potencial do mercado, os varejistas precisam criar um catálogo de produtos moderno, que possa lidar com vários tipos de informações e modernização dos portais e-commerce , criando a próxima geração de compras online.
Este tutorial demonstra como aproveitar os serviços do MongoDB Atlas e do Google Cloud Platform para implementar uma arquitetura de armazenamento de metadados, que será chamada de Gerenciador de metadados docatálogo de produtos. Essa arquitetura armazena os metadados do catálogo de produtos no MongoDB e os links para as imagens em buckets do Google Cloud Platform Storage (GVS), permitindo que os revendedores armazenem dados com segurança e forneçam acesso fácil para modificações.
Em resumo, o processo funciona da seguinte forma:
  1. As imagens armazenadas em buckets GCS são disponibilizadas com segurança para a aplicação por meio de um URL1 assinado. Esses metadados são armazenados dentro da coleção do MongoDB.
  2. Um Atlas trigger agendado trigger chama API uma API implantada em uma Google Cloud Platform máquina virtual (VM) do Google Cloud Platform, que executa um microsserviço que assina a URL de cada imagem. Isso demonstra perfeitamente como MongoDB e LC podem ser integrados perfeitamente. Para simplificar, esta demonstração usa um único processo para criar as URLs assinadas. Para o sistema de produção, isso teria medidas de resiliência em vigor.
  3. Em seguida, cada documento de produto na collection do MongoDB é atualizado com as novas URLs assinadas das imagens armazenadas no bucket do GCS. Para simplificar, isso é atualizado a cada 12 horas. Na prática, um revendedor projetaria a estratégia de atualização com base nos requisitos de tamanho e atualização de seu catálogo – por exemplo, atualizações menores em vez de em massa para evitar picos de banco de dados de dados ou utilização de técnicas de cache.
  4. Por fim, os documentos ficam disponíveis para serem consumidos pelo aplicação do cliente. Nesse caso, o catálogo do produto está sendo consultado por um aplicação NextJS que exibirá as imagens em um site de demonstração e-commerce .
Esta demonstração mostra os principais conceitos para integrar o MongoDB ao Google Cloud Google Cloud Platform Platform. Embora forneça uma base sólida para a arquitetura, integrações e aprimoramentos adicionais podem ser necessários para os ambientes de produção.

Considerações sobre o armazenamento de dados do catálogo de produtos com MongoDB e Google Cloud Platform Google Cloud Platform

Os catálogos de produtos são cruciais para o sucesso online dos revendedores, pois representam o ponto de conexão com os clientes. Além disso, os catálogos exigem que as informações do produto sejam exibidas em vários canais - por exemplo, no celular, em um website, em um aplicativo -, pois atualmente os clientes esperam poder fazer transações por meio de várias rotas. Nesse cenário, as empresas geralmente se deparam com a complexidade de integrar um sistema de catálogo moderno devido a uma variedade de obstáculos, incluindo infraestrutura de dados rígida e cara, expansão descontrolada de tecnologia, multiplicação de dados isolados, compliance de normas de proteção de dados e duplicação de informações em vários sites.
O Gerenciador de Metadados do Catálogo de Produtos permite que os revendedores resolvam os desafios anteriores aprimorando seu catálogo com os seguintes recursos:
  • Consolidação de uma única visualização com a aprovação do document model modelo de documento e do Atlas como a camada operacional dos dados do produto.
  • Diminuição da duplicação de informações, pois as imagens são armazenadas apenas uma vez em buckets do Cloud Storage e vinculadas por meio de URLs ao banco de banco de dados MongoDB .
  • Aumentando os padrões de segurança com imagens protegidas contra usuários não autorizados e falsificação de imagens. Embora isso não impeça que usuários ou bots de scraping baixem a imagem enquanto os URLs estiverem ativos, ele ainda adiciona uma camada extra de segurança ao expirar o URL se apenas os metadados forem recuperados. Os revendedores podem considerar a possibilidade de colocar marcas d'agua nas imagens ou colocá-las atrás de um gateway de autenticação para aumentar esse padrão de segurança.
  • Redução de despesas por meio da aprovação de buckets de armazenamento em nuvem acessíveis para armazenamento de imagens e transferências de strings de URL string para o banco de dados de dados, em vez de arquivos de imagens pesados.
  • Automatizando o fluxo de trabalho de dados por meio do Atlas Triggers.
Além disso, com os metadados de produtos no MongoDB Atlas, as empresas podem oferecer facilmente uma experiência aprimorada ao usuário em seu catálogo. Por exemplo, com o Atlas Search e o Vector Search, os clientes podem encontrar produtos relevantes sem esforço. Além disso, por meio de modelos de incorporação de vetores, como modelos de idioma grandes, os clientes podem receber recomendações personalizadas de produtos com base em suas preferências ou padrões de compra.

Construindo a arquitetura do Gerenciador de Metadados do Catálogo de Produtos

Vamos explorar os aspectos técnicos por meio de uma plataforma simulada e-commerce chamada Leafy Pop-up Store. A figura 1 mostra a saída final de como as imagens serão exibidas na interface do usuário. Além do Gerenciador de metadados do catálogo de produtos, esta demonstração integra outros recursos, como preços dinâmicos com base na Google Cloud Platform Vertex AI AI do Google Cloud Platform e no MongoDB Atlas.
Este é um portal e-commerce que mostra uma lista de produtos MongoDB figura 1. – Leafy Pop-up Store, uma demonstração e-commerce .
Para a implementação do Gerenciador de Metadados do Catálogo de Produtos, os revendedores podem consultar o diagrama na figura 2, dividido em sete partes.
Um diagrama de sete etapas que ilustra o fluxo de dados entre os serviços do MongoDB Atlas e do Google Cloud Platform Google Cloud Platform para gerenciar um catálogo de produtos figura 2.- Diagrama de arquitetura do Gerenciador de metadados do catálogo de produtos. Visão geral de alto nível
Os pontos 1 e 2 da figura 2 explicam o processo de fluxo de dados, enquanto os pontos 3 a 7 fornecem insights sobre elementos individuais da arquitetura.

1. Atualize periodicamente os URLs assinados

A primeira metade da viagem começa com o uso de serviços automatizados integrados do MongoDB Atlas e recuperação de imagens de buckets GCS. Nessa arquitetura, as imagens devem ser tratadas de acordo com as regras de negócios e devem ser protegidas contra acesso não autorizado.
Seguindo essa lógica, um Atlas Trigger trigger está programado para ser executado a cada 12 horas. Esse trigger trigger é responsável por enviar uma solicitação GET para um microsserviço hospedado em uma VM no GCP GCP Compute Engine por meio de seu IP IP externo. Ao receber uma solicitação GET no /signURLs endpoint, o microsserviço recupera todas as imagens armazenadas no bucket do Cloud Storage e gera uma nova URL assinada para cada arquivo. Todas essas URLs assinadas são temporariamente armazenadas em uma array. Essas URLs assinadas são endereços por tempo limitado que fornecem acesso público a recursos específicos do Cloud Storage, como imagens.
Durante esse processo, o microsserviço acessa com segurança o bucket privado do Cloud Storage por meio de autenticação, o que garante que somente uma conta de serviço com os privilégios de autorização necessários possa examinar esse bucket, impedindo que usuários não autorizados recuperem os arquivos do catálogo de produtos.

2. Atualizar catálogo de produtos MongoDB

A segunda metade da viagem refere-se ao gerenciamento de catálogo. Consiste em operações CRUD realizadas nos dados do produto — neste contexto, a atualização dos documentos do banco de dados de dados, seguida pelo consumo do catálogo de produtos pelo aplicação do cliente.
Neste ponto, o microsserviço contém uma array com os novos valores para cada URL de imagem . O microsserviço atualiza a coleção do catálogo de produtos percorrendo cada valor e modificando os documentos MongoDB dentro da coleção de produtos com uma nova URL assinada. Especificamente, ele ajusta um parâmetro chamado "product.image.url " que é enviado ao cliente. Agora, o aplicação cliente , implantado pelo projeto Next.js, solicita a lista de produtos do banco de banco de dados MongoDB e a exibe na Leafly Pop-up Store.
A arquitetura do Gerenciador de Metadados do Catálogo de Produtos está concluída. As URLs retornadas são sempre públicas e atualizadas a cada 12 horas. Em seguida, vamos prosseguir para seus principais componentes.

3. Configurar o Atlas trigger

Primeiro, a arquitetura usa um trigger chamado "bucketSignerTrigger, " que é criado dentro do Atlas Data Services. Ele tem um tipo de agendamento básico, definido para ser executado uma vez a cada 12 horas. Consulte os detalhes de configuração na figura 3 abaixo.
Um formulário de criação com "Trigger Type " definido como "scheduled, " "scheduled Type " definido como "basic, " e "Report once by " definido como "Hour every 12 hours " figura 3.- Configuração de trigger agendada dentro do MongoDB Atlas
O trigger acionador exige um tipo de evento . Escolha a opção "Function, " e, dentro do bloco de código, inicie o microsserviço fazendo uma solicitação GET para a API.
1// Making a GET request to the microservice
2exports = async function(payload, response) {
3 const url = "http://127.0.0.1:3000/signURLs"; // This is an example URL
4 try {
5 const httpResult = await context.http.get({ url: url });
6 if (httpResult.status == "200 OK") {
7 return httpResult.body.text();
8 } else {
9 return { error: "Failed to fetch data", statusCode: httpResult.status };
10 }
11 } catch (error) {
12 return { error: error.message };
13 }
14};
Observe que a URL consiste em um IP externo da VM, uma porta de escuta e um endpoint.
A composição da URL apontando para os três elementos: “VM Instance External IP, " "Listening port for server, " e "Endpoint " figura 4.- composição de URL do microsserviço

4. Hospede o microsserviço no Google Cloud Platform Compute Engine

O próximo elemento do Gerenciador de Metadados do Catálogo de Produtos é a VM chamada "retail-store. " Essa instância está sempre em execução e é responsável por hospedar o microsserviço e torná-lo acessível ao trigger do MongoDB Atlas por meio de seu endereço IP externo. Este microsserviço atualiza os metadados dos produtos da seguinte maneira.
Primeiro, ele conecta MongoDB e GS. Para MongoDB, a conexão é estabelecida por meio do Driver Node.js. Quanto ao TG, algumas etapas estão envolvidas: Uma conta de serviço é criada dentro do projeto. Em seguida, os papéis são atribuídos. Finalmente, uma chave JSON é gerada e baixada.
Siga o tutorial passo a passo se quiser replicar.
Em seguida, ele obtém os recursos do bucket privado atribuindo a chave JSON baixada à variável serviceAccountKey e passando-a para o objeto de armazenamento. Em seguida, ele acessa todos os arquivos dentro do bucket e os armazena dentro da array [arquivos], como elementos do tipo Arquivo.
1// Getting bucket resources
2const serviceAccountKey = await loadJson(jsonFilePath);
3const storage = new Storage({
4 credentials: serviceAccountKey,
5 });
6
7const bucketName = process.env.GC_STORAGE_BUCKET;
8const folderName = process.env.GC_BUCKET_FOLDER;
9
10const bucket = storage.bucket(process.env.GC_STORAGE_BUCKET);
11const [files] = await bucket.getFiles({ prefix: folderName });
Em seguida, ele lida com os metadados do arquivo com o método File.getSignedUrl() método da biblioteca do cliente do Cloud Storage Node.js para gerar uma URL assinada. Com outras soluções, operações adicionais, como download, exclusão e atualização, podem ser usadas.
1// Updating URL expiration time
2const [signedUrl] = await file.getSignedUrl({
3 action: "read",
4 expires: Date.now() + 14 * 60 * 60 * 1000, // 14 hours
5 });
Por fim, ele atualiza o banco de banco de dados MongoDB atribuindo o valor assinadoUrl ao campo imagem.url .
1// Updating MongoDB collection
2const updateResult = await collection.updateOne(
3 { id: id },
4 { $set: { "image.url": signedUrl } }
5 );

5. Armazene as imagens do catálogo de produtos no Cloud Storage

Dentro do Cloud Storage, a arquitetura contém um bucket privado chamado "retail-product-images " (figura 5) que armazena as imagens de todos os produtos. Ao contrário dos buckets públicos, onde os objetos podem ser acessados por qualquer pessoa com o URL}, os buckets privados exigem autenticação e autorização para acessar os arquivos armazenados.
Google Cloud Platform Armazenamento da Google Cloud Platform com um bucket dentro de imagens de produtos de varejo figura 5. bucket privado do cloud storage
No varejo, ter controle de acesso às imagens do catálogo ajuda a evitar a falsificação de imagens. Além disso, cada arquivo de imagem gera metadados que são usados para lidar com o objeto. A figura 6 exibe os metadados do objeto de bucket.
Os metadados que compõem o arquivo de bucket, como: tipo, tamanho, data de criação e muito mais figura 6.- Metadados de um objeto de bucket
Desses metadados, há dois campos principais a serem destacados. Primeiro, o URL público , que contém o link para permitir o acesso de qualquer pessoa ao objeto—neste caso, não é aplicável. Em seguida, o acesso público define as permissões do arquivo — nesse caso, os arquivos não são públicos.

6. Inspecionar o esquema do catálogo de produtos no MongoDB

O catálogo de produtos é armazenado como uma collection dentro do MongoDB, salvando cada artigo em um documento. Por exemplo, a figura 7 mostra o document model modelo de documento para calçados black Feminino.
O document model modelo de documento de um produto no lado esquerdo e, no lado direito, o mesmo produto exibido dentro do portal e-commerce figura 7.- Modelo de documento de catálogo de produtos
Dentro do documento, dois parâmetros são importantes para o microsserviço. O ID campo ID representa o identificador numérico da imagem do produto. Esse número corresponde ao nome do arquivo de imagem dentro do bucket do Cloud Storage após remover sua extensão (por exemplo, .png, .JPG, .jpeg). Da mesma forma, o campo imagem contém o URL da imagem do produto (string). Esse domínio contém a URL de endereço público gerada pelo microsserviço.

7. Conecte o cliente ao MongoDB

Finalmente, no lado do cliente, a Leafy Pop-up Store é construída usando a estrutura NextJS. Todos os produtos são recuperados chamando uma solicitação POST para a collection do MongoDB e, posteriormente, definindo a variável de estado para a array.
1// Retrieving the products catalog from the API.
2const response = await axios.post("/api/getProducts", filters);
3const transformedProducts = response.data.products.map((product) => ({
4id: product.id,
5photo: product.image.url,
6 name: product.name,
7 brand: product.brand,
8 price: `${product.price.amount.toFixed(2)}`,
9 pred_price: `${product.pred_price.toFixed(2)}`,
10 items: product.items,
11}));
12
13setProducts(transformedProducts);
1// getProducts API
2import { NextResponse } from "next/server";
3import { connectToDatabase } from "../../_db/connect";
4
5export async function POST(request) {
6 const filters = await request.json();
7 const db = await connectToDatabase();
8 const collection = db.collection("products");
9
10 let queryBrand = {};
11 let queryCategory = {};
12
13 if (filters.selectedBrands && filters.selectedBrands.length > 0) {
14 queryBrand = { brand: { $in: filters.selectedBrands } };
15 }
16 if (filters.selectedCategories && filters.selectedCategories.length > 0) {
17 queryCategory = { masterCategory: { $in: filters.selectedCategories } };
18
19 }
20
21 const products = await collection
22 .find(
23 { $and: [queryBrand, queryCategory] },
24 {
25 projection: {
26 name: 1,
27 price: 1,
28 brand: 1,
29 image: 1,
30 id: 1,
31 _id: 0,
32 pred_price: 1,
33 items: 1,
34 },
35 }
36 )
37 .toArray();
38
39 return NextResponse.json({ products }, { status: 200 });
40}
Em seguida, o aplicativo do cliente percorre os produtos para exibir cada um na Leafy Pop-up Store.
1// Displaying products in the UI
2{products.map((product, index) => (
3 <div key={index}>
4 <ProductCard
5 id={product.id}
6 photo={product.photo}
7 name={product.name}
8 brand={product.brand}
9 price={product.price}
10 items={product.items}
11 />
12 </div>
13))}
O cliente corresponde a um aplicação Next.js . No entanto, pode ser qualquer outro aplicação que se conecta a um banco de banco de dados do MongoDB Atlas com diferentes frameworks, servidores ou linguagens de programação.
Consulte a documentação oficial para saber mais sobre os métodos de conexão.

Conclusão

Nessa arquitetura, o MongoDB Atlas e Google Cloud Platform o Google Cloud Platform foram integrados perfeitamente para criar uma arquitetura de catálogo de produtos moderna para os revendedores. Adotar processos automatizados e ter uma estratégia para armazenar, acessar e modificar os dados do produto é uma mudança radical para os revendedores. Isso deixa tempo para que os desenvolvedores se concentrem na criação de funcionalidades novas e diferenciadoras, gerando uma vantagem comparativa para seus negócios. Para saber mais sobre as soluções da MongoDB para o varejo, comece hoje mesmo com nossa plataforma de dados para desenvolvedores.
Sinta-se à vontade para dar uma olhada no microsserviço dentro do Github repositório do Github para explorar o código ou executar o serviço por conta própria.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Atlas Online Archive: gerencie com eficiência o ciclo de vida dos dados


Jan 13, 2025 | 8 min read
Tutorial

Criando aplicações de IA com o Microsoft Semantic Kernel e o MongoDB Atlas Vector Search


Nov 27, 2023 | 8 min read
Artigo

Como pausar e retomar clusters do Atlas de maneira fácil


Sep 11, 2024 | 5 min read
Notícias e Anúncios

Descontinuando o MongoDB Atlas GraphQL e serviços de hospedagem


Feb 10, 2025 | 2 min read
Sumário