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 .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Utilizar Globbing e Proveniência de Coleção no Data Federation

Benjamin Flast4 min read • Published Jan 30, 2023 • Updated Jun 28, 2023
AtlasFederação de Dados
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Um padrão comum para usuários do MongoDB que executam serviços multilocatários é modelar seus dados dividindo seus diferentes clientes em diferentes bancos de dados. Esta é uma excelente estratégia para manter os dados de seus vários clientes separados uns dos outros, além de ser útil para escalonamento no futuro. Mas uma desvantagem dessa estratégia é que você pode acabar tendo dificuldades para obter uma visão holística dos dados de todos os seus clientes. Há muitas maneiras de mitigar esse desafio, e uma das principais é copiar e transformar seus dados em outra solução de armazenamento. No entanto, isso pode levar a alguns compromissos infelizes. Por exemplo, agora você está pagando mais para armazenar seus dados duas vezes. Agora você precisa gerenciar o processo de cópia e transformação, que pode se tornar oneroso à medida que você adiciona mais clientes. E por último, e talvez o mais importante, agora você está observando um estado atrasado de seus dados.
Para resolver esses desafios exatos, estamos muito satisfeitos em anunciar dois recursos que transformarão completamente a forma como você usa os dados do cluster e a facilidade com que pode remodelá-los. O primeiro recurso é chamado de Proveniência. Essa funcionalidade permite que você peça ao Data Federation que injete campos em seus documentos durante o tempo de query que indicam de onde eles vêm. Por exemplo, você pode adicionar a collection de origem no Atlas cluster ao federar entre clusters ou pode adicionar o caminho do seu bucket AWS S3 onde os dados estão sendo lidos. O melhor de tudo é que agora você também pode consultar esses campos para obter dados apenas da fonte de sua escolha!
A outra funcionalidade que estamos adicionando é um pouco detalhada e a chamamos de "globbing. " Para aqueles que estão familiarizados com o Atlas Data Federation, provavelmente conhece o nosso "wildcard collections. " Essa funcionalidade permite gerar nomes de collection com base nas collections existentes em seus Atlas clusters subjacentes ou com base em seções de caminhos para seus arquivos em S3. Esse é um recurso útil para evitar a necessidade de definir explicitamente tudo em sua configuração de armazenamento. “Globbing” é um pouco semelhante, exceto que, em vez de gerar dinamicamente novas collection para cada collection em seu cluster, ele mesclará dinamicamente as collection para oferecer uma visão “global” de seus dados automaticamente. Para ajudar a ilustrar isso, vamos orientá-lo por um exemplo.
Imagine que você esteja administrando uma agencia de viagens de sucesso no MongoDB. Por vários motivos, você optou por armazenar os dados de seus clientes em diferentes bancos de dados com base em sua localização. (Talvez você queira fragmentar com base nisso e tenha bancos de dados diferentes em regiões diferentes para fins de conformidade.)
Isso funcionou bem, mas agora você gostaria de consultar seus dados com base nessas informações e obter uma visão holística de seus dados em todas as regiões em tempo real (sem afetar suas cargas de trabalho operacionais). Então, vamos discutir como resolver esse desafio!

Pré-requisitos

Para acompanhar este tutorial por conta própria, você precisará do seguinte:
  1. Experiência com a Federação de Dados Atlas.
  2. Um Atlas cluster com os dados de amostra nele.
Veja como os dados são modelados em meu cluster (os dados em seu cluster podem ser distribuídos entre as coleções da maneira que seu aplicativo exigir):
  • Cluster: MongoTravelServices
    • Banco de dados: Irlanda
      • Collection: user_feedback (8658 documentos)
      • Collection: Passageiro
      • Collection: Flights
    • Database: israel
      • Collection: user_feedback (8658 documentos)
      • Collection: Passageiro
      • Collection: Flights
    • Database: usa
      • Collection: user_feedback (8660 documentos)
      • Collection: Passageiro
      • Collection: Flights
collection dentro do MongoDB Atlas cluster que precisa ser remodelada
O objetivo aqui é consolidar esses dados em um banco de dados e, em seguida, fazer com que cada uma das collection de feedback do usuário, passageiros e voos represente os dados armazenados nas collection de cada banco de dados no cluster. Por fim, também queremos poder consultar o nome "database" como se fosse parte de nossos documentos.

Crie uma instância do banco de dados federado

  • A primeira coisa que você precisa fazer é navegar até a aba “Data Federation” no lado esquerdo do seu Atlas Dashboard e clicar em “set up manually” no menu suspenso "criar novo banco de dados federado" no canto superior direito da interface do usuário.
estado inicial da seção Data Federation do Atlas
Editor de configuração de armazenamento visual para uma instância de banco de dados federado
  • Depois, para este exemplo, editaremos manualmente a configuração de armazenamento, pois esses recursos ainda não estão disponíveis no editor de UI.
Editor de configuração de armazenamento JSON para uma instância do banco de dados federado
1{
2 "databases": [
3 {
4 "name": "GlobalVirtualDB",
5 "collections": [
6 {
7 "name": "user_feedback",
8 "dataSources": [
9 {
10 "collection": "user_feedback",
11 "databaseRegex": ".*", // This syntax triggers the globbing or combination of each collection named user_feedback in each database of the MongoTravelServices cluster.
12 "provenanceFieldName": "_provenance_data", // The name of the field where provenance data will be added.
13 "storeName": "MongoTravelServices"
14 }
15 ]
16 }
17 ],
18 "views": []
19 }
20 ],
21 "stores": [
22 {
23 "clusterName": "MongoTravelServices",
24 "name": "MongoTravelServices",
25 "projectId": "5d9b6aba014b768e8241d442",
26 "provider": "atlas",
27 "readPreference": {
28 "mode": "secondary",
29 "tagSets": []
30 }
31 }
32 ]
33}
Agora, ao se conectar, você verá:
1AtlasDataFederation GlobalVirtualDB> show dbs
2GlobalVirtualDB 0 B
3AtlasDataFederation GlobalVirtualDB> use GlobalVirtualDB
4already on db GlobalVirtualDB
5AtlasDataFederation GlobalVirtualDB> show tables
6user_feedback
7AtlasDataFederation GlobalVirtualDB>
E uma contagem simples resulta na contagem de todas as três collections agrupadas:
1AtlasDataFederation GlobalVirtualDB> db.user_feedback.countDocuments()
225976
3AtlasDataFederation GlobalVirtualDB>
25976 é a soma de 8660 documentos de feedback dos EUA, 8658 de Israel e 8658 da Irlanda.
E, por último, posso fazer query dos metadados de procedência usando o campo “provenancedata.databaseName:
1AtlasDataFederation GlobalVirtualDB> db.user_feedback.findOne({"_provenance_data.databaseName": "usa"})
2{
3 _id: ObjectId("63a471e1bb988608b5740f65"),
4 'id': 21037,
5 'Gender': 'Female',
6 'Customer Type': 'Loyal Customer',
7 'Age': 44,
8 'Type of Travel': 'Business travel',
9 'Class': 'Business',
10
11 'Cleanliness': 1,
12 'Departure Delay in Minutes': 50,
13 'Arrival Delay in Minutes': 55,
14 'satisfaction': 'satisfied',
15 '_provenance_data': {
16 'provider': 'atlas',
17 'clusterName': 'MongoTravelServices',
18 'databaseName': 'usa',
19 'collectionName': 'user_feedback'
20 }
21}
22AtlasDataFederation GlobalVirtualDB>

Em análise

Então, o que fizemos e o que aprendemos?
  1. Vimos como é rápido e fácil criar um banco de dados federado no MongoDB Atlas.
  2. Aprendo como você pode combinar e remodelar facilmente dados de seus clusters subjacentes do Atlas dentro do Atlas Data Federation com o Collection Globling. Agora, você pode consultar facilmente uma coleção user_feedback e fazer com que ela consulte dados nas coleções user_feedback em cada banco de dados.
  3. Vimos como adicionar dados de procedência aos nossos documentos e consultá-los.

Algumas coisas para lembrar sobre o Atlas Data Federation

  1. O globbing de collection é um novo recurso que se aplica às fontes de cluster Atlas e permite a manipulação dinâmica de collections de fontes semelhante a “wildcard collections.”
  2. A proveniência permite incluir metadados adicionais com seus documentos. Você pode indicar que o Atlas Data Federation deve incluir atributos adicionais, como cluster de origem, banco de dados, collection, o caminho de origem no S3 e muito mais.
  3. Atualmente, isso só é suportado no editor JSON do Data Federation ou por meio da definição da configuração de armazenamento no shell, não no editor de configuração de armazenamento visual.
  4. Isso é particularmente importante para implementações de vários inquilinos feitas no MongoDB.
Para saber mais sobre oAtlas Data Federation e se ele seria a solução certa para você, confira nossa documentação e tutoriais ou comece hojemesmo.

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

Pesquisa semântica com Jina Embeddings v2 e MongoDB Atlas


Dec 05, 2023 | 12 min read
Tutorial

Avaliação RAG: detectando alucinações com Patronus AI e MongoDB


Aug 15, 2024 | 11 min read
Tutorial

Integre os registros do Atlas Application Services no Datadog na AWS


Sep 09, 2024 | 2 min read
Artigo

A relevância do Atlas Search explicada


Aug 14, 2024 | 13 min read
Sumário
  • Pré-requisitos