Eae pessoALL, tudo bem? Hoje vou falar um pouquinho sobre a nova funcionalidade disponível no MongoDB Atlas - o MongoDB Atlas Data Lake! Ainda está na versão Beta, mas já podemos testar e sentir um pouco mais sobre o que essa funcionalidade vai nos proporcionar... se você preferir no final do artigo tem o link para o vídeo onde eu demonstro como fazer. Vamos lá?
MongoDB Atlas Data Lake
Seguindo as tendências de Big Data, e olhando para o esse universo tão grande, em Junho durante o MongoWorld fomos apresentados a uma ferramenta que permite utilizar MQL (MongoDB Query Language) para fazer consultas em diversos tipos de arquivos num bucket do S3 na AWS (até agora é o único repositório compatível). Com apenas alguns cliques e algumas configurações é possível já sair executando consultas nos arquivos do bucket como se estivesse em um cluster MongoDB sem a necessidade de importação dos arquivos. Vários formatos são suportados como TXT, CSV, PARQUET, AVRO e claro, JSON.
Configurando um novo Data Lake
Como disse anteriormente, esse recurso é parte do MongoDB Atlas, portanto, para utilizá-lo você precisará ter um projeto rodando lá. Se você ainda não tem não se preocupe, é super simples e requer apenas seu e-mail e uma senha (não é necessário cartão de crédito), para saber como iniciar um projeto no MongoDB Atlas veja aqui.
Após criado o projeto você verá no menu a opção "Data Lake Beta":
Entrando nessa opção clique em "Try MongoDB Atlas Data Lake", você será guiado por um passo-a-passo bem simples:
Clicando em "Configure a New Data Lake", vamos dar um nome para nosso novo Data Lake:
Agora vamos dizer o nome do nosso bucket no S3. A configuração do bucket no S3 não é o foco do artigo, aqui presumo que você já tenha criado uma conta na AWS e tenha um bucket configurado, o meu bucket é o meetupatlasdatalake:
Note que você pode conectar mais de um bucket, é só separar os nomes por vírgula!
Após informar qual é o bucket, clique em "Save and Continue". Nesse momento o Atlas Data Lake nos informará o Unique External ID e o Atlas AWS IAM User ARN. Esses dados serão utilizados para a configuração da AWS IAM role bem como para a criação de uma policy no S3.
Basicamente iremos dar um nome para a role que será criada na AWS, no meu caso a role se chama dataLakeRole.
Seguindo o passo-a-passo, agora criaremos um arquivo chamado dl-role-trust.json, esse arquivo vai descrever uma política que você precisará para criar a IAM role. Copie o conteúdo descrito no passo 2 e cole nesse arquivo json:
O passo três utiliza o AWS CLI para rodarmos o comando para a criação da IAM role para o Atlas utilizar:
A saída desse comando nos dará uma informação para utilizarmos mais a frente, copie o conteúdo da chave Arn:
Agora criaremos mais um arquivo chamado dl-s3-role-policy.json e colocaremos nele o conteúdo do passo quatro. Esse arquivo tem as ações que são permitidas para a IAM role que criamos no passo anterior:
E finalmente utilizaremos novamente o AWS CLI para executar o comando para vincularmos essas ações à IAM role (esse comando não gerará nenhuma saída, não se preocupe!):
Clicando no botão "Next", vamos agora informar a Role Arn, é justamente o conteúdo da chave Arn gerada no passo três:
Agora é só clicar no botão "Validate & Launch"...
Conectando no Atlas Data Lake
Com os acessos configurados, agora já podemos nos conectar ao nosso novo Data Lake, como passo 2 da tela que está sendo exibida, clicaremos em connect e vamos escolher como iremos nos conectar:
É muito importante lembramos de liberar o nosso IP para acesso ao MongoDB Atlas e criar um usuário para o projeto (no caso de um projeto novo):
Após o IP liberado e usuário criado eu escolhi me conectar através do Mongo Shell, só precisaremos copiar a linha de comando e substituir o usuário e senha que acabamos de criar para nos conectarmos:
Feito isso já estaremos dentro de uma instância MongoDB conectada diretamente com o nosso bucket no S3!
Configurando o acesso aos arquivos no bucket
Nesse passo definimos alguns parâmetros para a "criação" do database e das collections a partir dos arquivos que estão no bucket. Utilizei um script bem simples que irá criar um database chamado sample e uma collection para cada arquivo no meu bucket, no meu caso tenho apenas o arquivo restaurants.json lá. Para todas as definições de configuração dê uma olhada na documentação. O script abaixo tem o necessário para podermos acessar os arquivos que estão lá:
use admin;
db.runCommand( { "storageSetConfig": {
"stores": [{
"s3": {
"name": "s3store", // Cria um store S3
"region":"us-east-1", // Altera o código da região do bucket
"bucket": "meetupatlasdatalake" // Altera o nome do seu bucket
}
}],
"databases": {
"sample": { // Cria um novo database chamado sample
"*": [{ // Criará uma collection para cada arquivo no bucket
"store": "s3store", // Link o store S3 especificado acima
"definition": "/{collectionName()}"
}]
}
}
}})
Após executar o comando acima já teremos o database criado e a collection restaurants:
Agora é só executar alguns comandos como se estivéssemos numa instância normal de MongoDB:
db.restaurants.count()
db.restaurantes.findOne()
E até mesmo operações utilizando o Aggregation Framework
db.restaurants.aggregate([
{
$match: {
name: "Wendy'S"
}
},
{
$group: {
_id: "$name",
total: {
$sum: 1
}
}
}
])
Acompanhando o consumo
Muito bacana, mas quanto isso custa? Bem, hoje o preço é de 5 USD por TB trafegado e você pode acompanhar o consumo através do painel do Atlas Data Lake:
Conclusão
Bem, viram como é simples conectar? Como disse é um funcionalidade que ainda está em Beta, e com certeza ainda vai evoluir muito!
Não deixe de conferir também o vídeo que explica todos isso que fizemos aqui e também compartilhe à vontade e deixe seu like aqui!
Um abraço e até mais!
Top comments (0)