Combinando seu banco de dados com o Azure Blob Storage usando o Data Federation
Tim Kelly7 min read • Published Aug 29, 2024 • Updated Oct 08, 2024
APLICATIVO COMPLETO
Avalie esse Tutorial
Desde que você analise restaurantes, você armazena seus dados no MongoDB. A multiplicidade de dados que você coletou é tão substancial que você decide se juntar a seus amigos para hospedar esses dados online, para que outros clientes do restaurante possam decidir onde come, informados por suas informações detalhadas. Mas seu amigo tem armazenado os dados no Azure. Eles usam JSON agora, mas têm avaliações e mais avaliações armazenadas como arquivos
.csv
. Como podemos obter todos esses dados agrupados sem o processo muitas vezes árduo de migrar bancos de dados ou transformar dados? Com a Atlas Data Federation do MongoDB, você pode combinar todos os seus dados em uma visão unificada, permitindo pesquisar facilmente o melhor restaurante francês em seu bairro.Este tutorial orientará você pelas etapas de combinação do MongoDB database com o armazenamento do Azure Blob, utilizando o Atlas Data Federation.
Antes de começar, você precisará de alguns pré-requisitos para acompanhar este tutorial, incluindo:
- Uma conta do Microsoft Azure com uma conta de armazenamento e configuração de contêiner. Se você não tiver isso, siga as etapas na documentação da Microsoft para a conta de armazenamento e o container.
- O Azure CLIou você pode instalar o Azure PowerShell, mas este tutorial usa o Azure CLI. Inicie sessão e configure a ferramenta de linha de comando seguindo os passos na documentação para CLI do Azure e Azure PowerShell.
- Node.js 18 ou superior e npm: certifique-se de ter o Node.js e o npm (gerenciador de pacotes Node.js) instalados. O Node.js é o ambiente de execução necessário para executar seu código JavaScript no lado do servidor. npm é usado para gerenciar as dependências.
Para ter algo para exibir quando seus armazenamentos de dados estiverem conectados, vamos adicionar algumas revisões ao seu blob. Primeiro, você adicionará uma avaliação para um novo restaurante que acabou de avaliar em Manhattan. Crie um arquivo chamado example1.json e copie o seguinte:
1 { 2 "address":{ 3 "building":"518", 4 "coord":[ 5 { 6 "$numberDouble":"-74.006220" 7 }, 8 { 9 "$numberDouble":"40.733740" 10 } 11 ], 12 "street":"Hudson Street", 13 "zipcode":"10014" 14 }, 15 "borough":"Manhattan", 16 "cuisine": [ 17 "French", 18 "Filipino" 19 ], 20 "grades":[ 21 { 22 "date":{ 23 "$date":{ 24 "$numberLong":"1705403605904" 25 } 26 }, 27 "grade":"A", 28 "score":{ 29 "$numberInt":"12" 30 } 31 } 32 ], 33 "name":"Justine's on Hudson", 34 "restaurant_id":"40356020" 35 }
Carregue este arquivo como um blob para seu container:
1 az storage blob upload --account-name <YourStorageAccountName> --container-name <YourContainerName> --name <BlobName> --file <PathToFile>
Aqui,
BlobName
é o nome que você deseja atribuir ao seu blob (basta usar o mesmo nome do arquivo) e PathToFile
é o caminho para o arquivo que você deseja carregar (por exemplo1.json).Mas você não está restrito apenas ao JSON em seu banco de dados federado. Você vai criar outro arquivo, chamado exemplo2.csv. Copie os seguintes dados no arquivo:
1 Restaurant ID,Name,Cuisine,Address,Borough,Latitude,Longitude,Grade Date,Grade,Score 2 40356030,Sardi's,Continental,"234 W 44th St, 10036",Manhattan,40.757800,-73.987500,1927-09-09,A,11
Carregue o exemplo2.csv em seu blob usando o mesmo comando acima.
Você pode listar os blobs no seu container para verificar se o arquivo foi carregado:
1 az storage blob list --account-name <YourStorageAccountName> --container-name <YourContainerName> --output table
As primeiras etapas serão configurar seu cluster MongoDB. Para este tutorial, você criará um cluster M0 gratuito. Depois de criado, clique em "Carregar conjunto de dados de amostra". No conjunto de dados de amostra, você verá um banco de dados chamado
sample_restaurants
com uma coleção chamada restaurants
, contendo milhares de restaurantes com avaliações. Esta é a coleção em que você se concentrará.Agora que você tem o Armazenamento do Azure e o cluster do MongoDB configurados, está pronto para implantar sua instância de banco de dados federado.
- Selecione "Data Federation" no menu de navegação à esquerda.
- Clique em "Create New Federated Database" e, no menu suspenso, selecione "Set up manually (Configurar manualmente)."
- Escolha Azure como seu provedor de nuvem e dê um nome à instância do banco de dados federado.
- Para adicionar sua fonte de dados, clique em "Adicionar fonte de dados" e selecione Azure Blob Storage como seu armazenamento de dados.
- Em seguida, você precisa selecionar um Azure Service Principal. Você pode usar um existente, mas criará um novo para este tutorial. Na lista suspensa, selecione "Autorizar um Azure Service Principal" e clique em Continuar.
- Para atribuir os relacionamentos, siga as instruções na tela. Neste tutorial, você usará o AzureCLI.
- Primeiro, você precisa obter o ID do locatário executando o comando:
1 az account show --query tenantId - Em seguida, execute o seguinte comando para criar seu novo Princípio de serviço para Atlas e copie o "ID" da saída:
1 az ad sp create --id 9efedfcc-2eca-4b27-a613-0cad1e114cb7
- Você precisa conceder seu acesso. Novamente, haverá prompts na tela para orientá-lo nas etapas, mas você pode acompanhar aqui.
- Primeiro, execute
az storage account list --query "[].id"
para obter a ID do recurso da conta de armazenamento. Isso preencherá automaticamente o comando na página que você pode copiar e executar em seu terminal para configurar a delegação de credenciais. - Em seguida, configure o acesso ao seu contêiner de armazenamento. Escolha se deseja conceder privilégios "Somente leitura" ou "Leitura e gravação". Selecione a região do container de armazenamento e insira o nome do container de armazenamento. Isso preencherá automaticamente o comando abaixo na página que você pode copiar e colar.
- Agora, você precisa fornecer exemplos de caminhos para que possa consultar seus dados. Se você acompanhou este exemplo simples, copie o caminho
https://<YourStorageAccount>.blob.core.windows.net/<YourContainerName>/sample.json
- é claro, com os nomes da conta e do contêiner - para a caixa. - Para vincular seus componentes do caminho do Azure Blob Storage, no menu suspenso, aceite " qualquer valor (*) " e clique em “Next.”
- Você deve ver o nome do seu container em suas fontes de dados agora. Tudo que você precisa fazer é arrastar seu conjunto de dados e soltá-lo em sua collection virtual.
Vamos adicionar seu conjunto de dados do MongoDB ao seu banco de dados federado agora.
- Clique em "Adicionar fontes de dados" e escolha "Atlas Cluster. "
- Selecione o cluster que contém o conjunto de dados de amostra.
- Isso abrirá todos os bancos de dados no cluster. Clique na seta suspensa ao lado de
sample_restaurants
para visualizar as coleções dentro desse banco de dados, escolharestaurants
e clique em "Next. " - Agora, você deve ver
sample_restaurants.restaurants
em fontes de dados. Você pode arrastar seu conjunto de dados para sua collection virtual, como antes.
Agora que você tem os dois conjuntos de dados em sua instância de banco de dados federado, clique em "Create," e é hora de visualizar seus dados.
Há muitas maneiras de visualizar os dados no banco de dados federado. Para este tutorial, você criará um aplicativo Node.js simples. Para fazer isso, você precisará de uma string de conexão. Depois que sua instância de banco de dados federado for criada, você poderá vê-la em " Data Federation " no menu de navegação à esquerda. Na sua instância, clique em "Connect. " Selecione "Driver " como seu método de conexão e copie sua connection string. Agora, abra um IDE de sua escolha.
Para este tutorial, apenas um aplicativo Node.js simples é necessário. Se você quiser saber mais sobre como desenvolver com MongoDB e JavaScript, consulte a Central do Desenvolvedor, onde você encontrará uma variedade de tutoriais, ou confira o MongoDB com outras linguagens.
Antes de começar, verifique se o Node.js está instalado em seu ambiente.
- Configurar um novo projeto Node.js:
- Crie um novo diretório para o seu projeto.
- Inicialize um novo projeto Node.js executando
npm init -y
em seu terminal dentro desse diretório. - Instale o driver Node.js do MongoDB executando
npm install mongodb
.
- Criar um arquivo JavaScript:
- Crie um arquivo chamado searchApp.js no seu diretório de projeto.
- Implementar o aplicativo:
- Edite searchApp.js para incluir o código a seguir, que se conecta ao seu MongoDB database e cria um cliente.
1 const { MongoClient } = require('mongodb'); 2 3 // Connection URL 4 const url = 'yourConnectionString'; 5 // Database Name 6 const dbName = 'yourDatabaseName'; 7 // Collection Name 8 const collectionName = 'yourCollectionName'; 9 10 // Create a new MongoClient 11 const client = new MongoClient(url); - Agora, crie uma função chamada
searchDatabase
que recebe uma string de entrada e um campo da linha de comando e procura documentos que contenham essa string no campo especificado.
1 // Function to search for a string in the database 2 async function searchDatabase(fieldName, searchString) { 3 try { 4 await client.connect(); 5 console.log('Connected successfully to server'); 6 const db = client.db(dbName); 7 const collection = db.collection(collectionName); 8 9 // Dynamic query based on field name 10 const query = { [fieldName]: { $regex: searchString, $options: "i" } }; 11 const foundDocuments = await collection.find(query).toArray(); 12 console.log('Found documents:', foundDocuments); 13 } finally { 14 await client.close(); 15 } 16 } - Por fim, crie uma função principal para controlar o fluxo do aplicativo.
1 // Main function to control the flow 2 async function main() { 3 // Input from command line arguments 4 const fieldName = process.argv[2]; 5 const searchString = process.argv[3]; 6 7 if (!fieldName || !searchString) { 8 console.log('Please provide both a field name and a search string as arguments.'); 9 return; 10 } 11 12 searchStringInDatabase(fieldName, searchString) 13 .catch(console.error); 14 } 15 16 main().catch(console.error); - Execute seu aplicativo com
node searchApp.js fieldName "searchString"
.- O script espera dois argumentos de linha de comando: o nome do campo e a string de pesquisa. Ele constrói um objeto de consulta dinâmica usando esses argumentos, em que o nome do campo é determinado pelo primeiro argumento e a string de pesquisa é usada para criar uma consulta regex.
No terminal, você pode digitar a query
node searchApp.js "Restaurant ID" "40356030"
para localizar seu arquivoexample2.csv
como se ele estivesse armazenado em um MongoDB database. Ou talvez node searchApp.js borough "Manhattan"
, para encontrar todos os restaurantes em seu banco de dados virtual (em todos os seus bancos de dados) em Manhattan. Você não está limitado apenas a queries simples. A maioria dos operadores e agregações está disponível em seu banco de dados federado. Existem algumas limitações e variações nos Operadores do MongoDB e Estágios de Aggregation Pipeline em seu banco de dados federado que você pode ler em nossa documentação.Seguindo as etapas descritas, você aprenderá como configurar o armazenamento do Azure Blob, carregar diversos formatos de dados como JSON e CSV e conectá-los ao seu conjunto de dados MongoDB usando um banco de dados federado.
Este tutorial destaca o potencial da federação de dados para eliminar silos de dados, promover a interoperabilidade de dados e aprimorar a experiência geral de análise de dados. Quer você seja um revisor de restaurantes que deseja compartilhar insights ou uma empresa que busca unificar fontes de dados diferentes, o Data Federation do MongoDB e o armazenamento do Azure Blob fornecem uma plataforma robusta, escalável e fácil de usar para atender às suas necessidades de integração de dados.
Você está pronto para começar a construir com Atlas no Azure? Comece hoje mesmo gratuitamente a utilizar oMongoDB Atlas no Azure Marketplace. Se você encontrou este tutorial útil, não deixe de conferir mais alguns de nossos artigos na Central do Desenvolvedor, como o Tutorial do MongoDB Provider para EF Core. Ou visiteos fóruns da nossa comunidade para ver o que outras pessoas da comunidade estão criando!
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.