Balde AWS S3
Nesta página
O Atlas Data Federation permite buckets S3 como armazenamento de instância do banco de dados federado. Você deve definir mapeamentos em sua instância de banco de dados federado para o seu bucket S3 para executar queries em seus dados.
Exemplo de Configuração para Armazenamento de Dados no S3
Exemplo
Considere um bucket S3 datacenter-alpha
contendo dados coletados de um centro de dados:
|--metrics |--hardware
O caminho /metrics/hardware
armazena arquivos JSON com métricas derivadas do hardware do centro de dados, onde cada nome de arquivo é o carimbo de data/hora UNIX em milissegundos do período de 24 horas coberto por esse arquivo:
/hardware/1564671291998.json
A configuração a seguir:
Define um armazenamento de instância do banco de dados federado no bucket
datacenter-alpha
S3 na regiãous-east-1
da AWS. O armazenamento de instâncias do banco de dados federado é especificamente restrito apenas aos arquivos de dados no caminho da pastametrics
.Mapeia arquivos da pasta
hardware
para um banco de dados MongoDBdatacenter-alpha-metrics
e uma collectionhardware
. O mapeamento de configuração inclui lógica de análise para capturar o carimbo de data/hora implícito no nome do arquivo.
{ "stores" : [ { "name" : "datacenter-alpha", "provider" : "s3", "region" : "us-east-1", "bucket" : "datacenter-alpha", "additionalStorageClasses" : [ "STANDARD_IA" ], "prefix" : "/metrics", "delimiter" : "/" } ], "databases" : [ { "name" : "datacenter-alpha-metrics", "collections" : [ { "name" : "hardware", "dataSources" : [ { "storeName" : "datacenter-alpha", "path" : "/hardware/{date date}" } ] } ] } ] }
O Atlas Data Federation analisa o S3 bucket datacenter-alpha
e processa todos os arquivos em /metrics/hardware/
. O collections
usa a sintaxe de análise do caminho para mapear o nome do arquivo para o campo date
, que é uma data ISO-8601, em cada documento. Se um campo date
correspondente não existir em um documento, ele será adicionado.
Os usuários conectados à instância do banco de dados federado podem usar a linguagem de query MongoDB e as aggregations permitidas para analisar dados no bucket S3 por meio da collection datacenter-alpha-metrics.hardware
.
Formato de configuração
A configuração da instância do banco de dados federado tem o seguinte formato:
1 { 2 "stores" : [ 3 { 4 "name" : "<string>", 5 "provider": "<string>", 6 "region" : "<string>", 7 "bucket" : "<string>", 8 "additionalStorageClasses" : ["<string>"], 9 "prefix" : "<string>", 10 "includeTags": <boolean>, 11 "delimiter": "<string>", 12 "public": <boolean> 13 } 14 ], 15 "databases" : [ 16 { 17 "name" : "<string>", 18 "collections" : [ 19 { 20 "name" : "<string>", 21 "dataSources" : [ 22 { 23 "storeName" : "<string>", 24 "path" : "<string>", 25 "defaultFormat" : "<string>", 26 "provenanceFieldName": "<string>", 27 "omitAttributes": true | false 28 } 29 ] 30 } 31 ], 32 "maxWildcardCollections" : <integer>, 33 "views" : [ 34 { 35 "name" : "<string>", 36 "source" : "<string>", 37 "pipeline" : "<string>" 38 } 39 ] 40 } 41 ] 42 }
stores
- O objeto
stores
define cada armazenamento de dados associado com a instância do banco de dados federado. O armazenamento da instância do banco de dados federado captura arquivos em um bucket S3, documentos no Atlas cluster ou arquivos armazenados em URLs publicamente acessíveis. O Data Federation só pode acessar armazenamentos de dados definidos no objetostores
. databases
- O objeto
databases
define o mapeamento entre cada instância do banco de dados federado definido emstores
e nas collections MongoDB nos bancos de dados.
stores
1 "stores" : [ 2 { 3 "name" : "<string>", 4 "provider" : "<string>", 5 "region" : "<string>", 6 "bucket" : "<string>", 7 "additionalStorageClasses" : ["<string>"], 8 "prefix" : "<string>", 9 "delimiter" : "<string>", 10 "includeTags": <boolean>, 11 "public": <boolean> 12 } 13 ]
stores
Array de objetos em que cada objeto representa um armazenamento de dados a ser associado à instância do banco de dados federado. O armazenamento de instâncias de banco de dados federado captura arquivos em um bucket S3, documentos no Atlas cluster ou arquivos armazenados em URLs acessíveis publicamente. O Atlas Data Federation só pode acessar armazenamentos de dados definidos no objeto
stores
.
stores.[n].name
Nome de armazenamento da instância do banco de dados federado. O campo
databases.[n].collections.[n].dataSources.[n].storeName
referencia este valor como parte da configuração de mapeamento.
stores.[n].provider
Define onde os dados são armazenados. O valor deve ser
s3
para um bucket do AWS S3 .
stores.[n].region
Nome da região da AWS na qual o bucket S3 está hospedado. Para uma relação de nomes de regiões válidos, consulte Amazon Web Services (AWS).
stores.[n].bucket
Nome do bucket AWS S3. Deve corresponder exatamente ao nome de um bucket S3 que o Atlas Data Federation pode acessar com as credenciais configuradas do AWS IAM.
stores.[n].additionalStorageClasses
Opcional. Array de classes de armazenamento do AWS S3. O Atlas Data Federation incluirá os arquivos nessas classes de armazenamento nos resultados da consulta. Os valores válidos são:
INTELLIGENT_TIERING
para incluir arquivos na classe de armazenamento Intelligent TieringSTANDARD_IA
para incluir arquivos na classe de armazenamento Standard-Infrequent AccessObservação
Os arquivos na classe de armazenamento Padrão são suportados por padrão.
stores.[n].prefix
Opcional. O prefixo Atlas Data Federation se aplica ao procurar arquivos no bucket S3 .
Por exemplo, considere um bucket do S3
metrics
com a seguinte estrutura:metrics |--hardware |--software |--computed O armazenamento da instância do banco de dados federado acrescenta o valor de
prefix
aodatabases.[n].collections.[n].dataSources.[n].path
para criar o caminho completo para a ingestão dos arquivos. Definirprefix
como/software
restringe qualquer objetodatabases
que esteja usando o armazenamento de instância do banco de dados federado apenas aos subcaminhos/software
.Se omitido, o Atlas Data Federation pesquisa todos os arquivos a partir da raiz do bucket S3.
stores.[n].delimiter
Opcional. O delimitador que separa os segmentos do
databases.[n].collections.[n].dataSources.[n].path
no armazenamento de instância do banco de dados federado. O Data Federation usa o delimitador para percorrer com eficiência os buckets S3 com uma estrutura de diretório hierárquica. Você pode especificar qualquer caractere suportado pelas chaves de objeto S3como delimitador. Por exemplo, você pode especificar um sublinhado (_
) ou um sinal de mais (+
) ou vários caracteres, como sublinhados duplos (__
) como delimitador.Se omitido, o padrão é
"/"
.
stores.[n].includeTags
Opcional. Determina se devem ou não ser usadas marcações S3 nos arquivos no caminho fornecido como atributos de partição adicionais. Os valores válidos são
true
efalse
.Se omitido, o padrão é
false
.Se configurado para
true
, o Atlas Data Federation faz o seguinte:Adiciona as marcações S3 como atributos de partição adicionais.
Adiciona novos elementos BSON de nível superior que associam cada marcação a cada documento para os arquivos marcados.
Aviso
Se configurado para
true
, o Atlas Data Federation processa os arquivos para atributos de partição adicionais fazendo chamadas extras para S3 para obter as marcações. Esse comportamento pode afetar o desempenho.
stores.[n].public
Opcional. Especifica se o bucket é público.
Se definido como
true
, o Atlas Data Federation não usa a função configurada do AWS IAM para acessar o bucket do S3. Se definido comofalse
, o AWS IAM configurado deve incluir permissões para acessar o bucket do S3, mesmo que esse bucket seja público.Se omitido, o padrão é
false
.
databases
1 "databases" : [ 2 { 3 "name" : "<string>", 4 "collections" : [ 5 { 6 "name" : "<string>", 7 "dataSources" : [ 8 { 9 "storeName" : "<string>", 10 "defaultFormat" : "<string>", 11 "path" : "<string>", 12 "provenanceFieldName": "<string>", 13 "omitAttributes": <boolean> 14 } 15 ] 16 } 17 ], 18 "maxWildcardCollections" : <integer>, 19 "views" : [ 20 { 21 "name" : "<string>", 22 "source" : "<string>", 23 "pipeline" : "<string>" 24 } 25 ] 26 } 27 ]
databases
Array de objetos onde cada objeto representa um banco de dados, suas coleções e, opcionalmente, quaisquer visualizações nas coleções. Cada banco de dados pode ter vários objetos
collections
eviews
.
databases.[n].name
Nome do banco de dados para o qual o Atlas Data Federation mapeia os dados contidos no armazém de dados.
databases.[n].collections
Array de objetos em que cada objeto representa uma coleção e fontes de dados que mapeiam para um armazenamento de instância de banco de dados federado
stores
.
databases.[n].collections.[n].name
Nome da coleção para a qual o Atlas Data Federation mapeia os dados contidos em cada
databases.[n].collections.[n].dataSources.[n].storeName
. Cada objeto na array representa o mapeamento entre a coleção e um objeto na arraystores
.Você pode gerar nomes de coleção dinamicamente a partir de caminhos de arquivo especificando
*
para o nome da coleção e a funçãocollectionName()
no campopath
. Consulte Gerar nomes de coleção dinâmicos a partir do caminho do arquivo para obter exemplos.
databases.[n].collections.[n].dataSources
Array de objetos em que cada objeto representa um armazenamento de instância do banco de dados federado
stores
para mapear com a coleção.
databases.[n].collections.[n].dataSources.[n].storeName
Nome de um armazém de instância do banco de dados federado para mapear para o
<collection>
. Deve corresponder aoname
de um objeto na arraystores
.
databases.[n].collections.[n].dataSources.[n].path
Controla como o Atlas Data Federation pesquisa e analisa arquivos no
storeName
antes de mapeá-los para o<collection>
. A instância do banco de dados federado acrescenta ostores.[n].prefix
aopath
para criar o caminho completo para pesquisar. Especifique/
para capturar todos os arquivos e pastas do caminhoprefix
.Por exemplo, considere um bucket S3
metrics
com a seguinte estrutura:metrics |--hardware |--software |--computed Um
path
de/
direciona o Atlas Data Federation para procurar todos os arquivos e pastas no bucketmetrics
.Um
path
de/hardware
orienta o Atlas Data Federation a procurar somente nesse caminho os arquivos que serão processados.Se o
prefix
forsoftware
, o Atlas Data Federation pesquisará arquivos somente no caminho/software/computed
.Anexar o caractere curinga
*
ao caminho direciona a Atlas Data Federation a incluir todos os arquivos e pastas desse ponto no caminho. Por exemplo,/software/computed*
corresponderia a arquivos como/software/computed-detailed
,/software/computedArchive
e/software/computed/errors
.path
oferece suporte à sintaxe adicional para análise de nomes de arquivos, incluindo:Geração de campos de documento a partir de nomes de arquivo.
Utilização de expressões regulares para controlar a geração de campo.
Definição de limites para agrupar nomes de arquivos por registro de data/hora.
Consulte Definir Caminho para Dados do S3 para obter mais informações.
Ao especificar o
path
:Especifique o tipo de dados para o atributo de partição.
Certifique-se de que o tipo de atributo de partição corresponda ao tipo de dados para analisar.
Utilize o delimitador especificado em
delimiter
.
Ao especificar atributos do mesmo tipo, faça qualquer um dos seguintes:
Adicione um separador constante entre os atributos.
Use expressões regulares para descrever o padrão de pesquisa. Para saber mais, consulte Funções de análise não permitidas.
Opcional. Formato padrão que o Data Federation assume se encontrar um arquivo sem extensão ao pesquisar o
databases.[n].collections.[n].dataSources.[n].storeName
.Os seguintes valores são válidos para o campo
defaultFormat
:.json
,.json.gz
,.bson
,.bson.gz
,.avro,
.avro.gz
,.orc
,.tsv
,.tsv.gz
,.csv
,.csv.gz
,.parquet
Observação
Se o formato do arquivo for
CSV
ouTSV
, você deverá incluir uma linha de cabeçalho nos dados. Consulte CSV e TSV para obter mais informações.Se omitido, o Data Federation processa alguns bytes do arquivo para tentar detectar o tipo.
databases.[n].collections.[n].dataSources.[n].provenanceFieldName
Nome do campo que inclui a procedência dos documentos nos resultados. Se você especificar esta configuração na configuração de armazenamento, o Atlas Data Federation retornará os seguintes campos para cada documento no resultado:
Nome do campoDescriçãoprovider
Provedor (
stores.[n].provider
) na configuração de armazenamento da instância do banco de dados federadoregion
Região doAmazon Web Services
stores.[n].region
()bucket
Nome do bucket do Amazon Web Services S3
stores.[n].bucket
()key
Caminho ( ) para o
databases.[n].collections.[n].dataSources.[n].path
documentolastModified
Data e hora em que o documento foi modificado pela última vez.
Você não pode definir esta configuração utilizando o Editor Visual na UI do Atlas.
databases.[n].collections.[n].dataSources.[n].omitAttributes
Opcional. Sinalizador que especifica se devem ser omitidos os atributos (pares de chave e valor) que o Atlas Data Federation adiciona aos documentos na coleção. Você pode especificar um dos seguintes valores:
false
- para adicionar os atributostrue
- omitir os atributos
Se omitido, o padrão é
false
e o Atlas Data Federation adiciona os atributos.Exemplo
Considere um arquivo chamado
/employees/949-555-0195.json
para o qual você configura opath
/employees/{phone string}
. A Atlas Data Federation adiciona o atributophone: 949-555-0195
aos documentos neste arquivo seomitAttributes
forfalse
, independentemente de o par chave-valor já existir no documento. Se você definiromitAttributes
comotrue
, o Atlas Data Federation não adicionará o atributo ao documento na coleção virtual.
databases.[n].maxWildcardCollections
Opcional. Número máximo de coleções de curingas
*
no banco de dados. Cada coleção de curinga pode ter apenas uma fonte de dados. O valor pode ser entre1
e1000
, inclusive. Se omitido, o padrão é100
.
databases.[n].views
Array de objetos onde cada objeto representa um pipeline de agregação em uma coleção. Para saber mais sobre visualizações, consulte Visualizações.
databases.[n].views.[n].source
Nome da coleção de origem da visualização. Se quiser criar uma visualização com um estágio
$sql
, você deverá omitir este campo , pois a instrução SQL especificará a collection de origem.
databases.[n].views.[n].pipeline
Estágio(s) de pipeline de agregação a serem aplicados à coleção
source
. Você também pode criar visualizações usando o estágio$sql
.