Menu Docs
Página inicial do Docs
/ /

Balde AWS S3

O Atlas Data Federation permite buckets AWS S3 como armazenamentos de instância do banco de dados federado. Você deve definir mapeamentos em sua instância do banco de dados federado para seu bucket AWS S3 para executar consultas em seus dados.

Para definir um armazenar de instância do banco de dados federado para um bucket AWS S3, é possível especificar os parâmetros de configuração em JSON. A configuração contém o armazenamento de dados AWS e o mapeia para coleções virtuais que você pode consultar.

A configuração JSON para dados no AWS S3 bucket utiliza os seguintes campos:

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}

A configuração JSON para o armazenamento de dados do Amazon Web Services S3 contém dois objetos de nível superior: stores e databases.

O objeto stores define cada armazenamento de dados associado com a instância do banco de dados federado. Esta loja captura arquivos em um bucket do AWS S3. O Data Federation só pode acessar armazenamentos de dados definidos dentro do objeto stores.

O objeto stores contém os seguintes campos:

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 ]

A tabela a seguir descreve os campos no objeto stores:

Campo
Tipo
necessidade
Descrição
stores

array

necessário

Array de objetos em que cada objeto representa um armazenamento de dados a ser associado à instância do banco de dados federado. O armazenamento captura arquivos em um bucket AWS S3. O Atlas Data Federation só pode acessar os armazenamentos de dados definidos no objeto stores.

stores.[n].name

string

necessário

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

string

necessário

Define onde os dados são armazenados. O valor deve ser s3 para um bucket do AWS S3 .

stores.[n].region

string

necessário

Nome da região AWS na qual o bucket AWS S3 está hospedado. Para uma relação de nomes de regiões válidos, consulte Amazon Web Services (AWS).

stores.[n].bucket

string

necessário

Nome do bucket AWS S3. Deve corresponder exatamente ao nome de um bucket AWS S3 que o Atlas Data Federation pode acessar com as credenciais AWS IAM configuradas.

stores.[n].additionalStorageClasses

array

opcional

Array de Amazon Web Services S3 classes de armazenamento. O Atlas Data Federation incluirá os arquivos nessas classes de armazenamento nos resultados da query. Os valores válidos são:

  • INTELLIGENT_TIERING para incluir arquivos na classe de armazenamento Nívelinteligente

  • STANDARD_IA para incluir arquivos na classe de armazenamento Standard-Infrequent Access

IMPORTANTE: os arquivos na classe de armazenamento Padrão são suportados por padrão.

stores.[n].prefix

string

opcional

Adiciona um prefixo aos caminhos de pesquisa de arquivos no bucket AWS S3. O Atlas Data Federation adiciona o valor de prefix ao databases.[n].collections.[n].dataSources.[n].path para criar o caminho completo para os arquivos a serem ingeridos.

Se omitido, o Atlas Data Federation faz uma pesquisa de todos os arquivos a partir da raiz do bucket do AWS S3.

stores.[n].delimiter

string

opcional

Define um delimitador que separa os segmentos de caminho no armazenamento de instância do banco de dados federado . O Data Federation usa o delimitador para percorrer com eficiência os buckets do Amazon Web Services S3 com uma estrutura de diretório hierárquica. Você pode especificar qualquer caractere suportado pelas chaves de objeto do Amazon Web Services 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

booleano

opcional

Determina se devem ou não ser usadas tags do AWS S3 nos arquivos no caminho fornecido como atributos de partição adicionais. Os valores válidos são true e false.

Se omitido, o padrão é false.

Se configurado para true, o Atlas Data Federation faz o seguinte:

  • Adiciona as tags AWS 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 definido como true, o Atlas Data Federation processa os arquivos para obter atributos de partição adicionais, fazendo chamadas extras para o AWS S3 para obter as tags. Esse comportamento pode impactar o desempenho.

stores.[n].public

booleano

opcional

Especifica se o bucket é público.

Se configurado como true, o Atlas Data Federation não utiliza a função IAM configurada do AWS para acessar o bucket AWS S.3 Se configurado para false, o AWS IAM deve incluir permissões para acessar o bucket AWS S3, mesmo que esse bucket seja público.

Se omitido, o padrão é false.

O objeto databases define o mapeamento entre cada instância do banco de dados federado definido em stores e nas collections MongoDB nos bancos de dados.

O objeto database contém os seguintes campos:

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]

A tabela a seguir descreve os campos no objeto database:

Campo
Tipo
necessidade
Descrição
databases

array

necessário

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 e views.

databases.[n].name

string

necessário

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

necessário

Array de objetos em que cada objeto representa uma coleção e fontes de dados que mapeiam para um stores armazenamento de instância do banco de dados federado.

databases.[n].collections.[n].name

string

necessário

Nome da collection para a qual a 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 collection e um objeto na matriz stores.

Você pode gerar nomes de coleções dinamicamente a partir de caminhos de arquivos, especificando * para o nome da coleção e a função collectionName() no campo path. Consulte Gerar nomes de coleção dinâmicos a partir do caminho do arquivo para obter exemplos.

databases.[n].collections.[n].dataSources

array

necessário

Array de objetos em que cada objeto representa um stores instância do banco de dados federado para mapear com a collection.

databases.[n].collections.[n].dataSources.[n].storeName

string

necessário

Nome de um armazém de instância do banco de dados federado para mapear para o <collection>. Deve corresponder ao name de um objeto na array stores.

databases.[n].collections.[n].dataSources.[n].path

string

necessário

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 precede o stores.[n].prefix ao path para construir o caminho completo para pesquisa. Especifique / para capturar todos os arquivos e pastas do caminho prefix.

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 bucket metrics.

Um path de /hardware orienta o Atlas Data Federation a procurar somente nesse caminho os arquivos que serão processados.

Se o prefix for software, 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:

databases.[n].collections.[n].dataSources.[n].defaultFormat

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

IMPORTANTE: se o formato do arquivo for CSV ou TSV, 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.

Dica

databases.[n].collections.[n].dataSources.[n].provenanceFieldName

string

opcional

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 campo
Descrição

provider

Provedor (stores.[n].provider) na configuração de armazenamento da instância do banco de dados federado

region

Região doAmazon Web Services stores.[n].region()

bucket

Nome do bucket do Amazon Web Services S3 stores.[n].bucket()

key

lastModified

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

booleano

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 atributos

  • true - omitir os atributos

Se omitido, o padrão é false e o Atlas Data Federation adiciona os atributos.

Por exemplo:

Considere um arquivo chamado /employees/949-555-0195.json para o qual você configura o path /employees/{phone string}. O Atlas Data Federation adiciona o atributo phone: 949-555-0195 aos documentos neste arquivo se omitAttributes for false, independentemente de o par chave-valor já existir no documento. Se você definir omitAttributes como true, o Atlas Data Federation não adicionará o atributo ao documento na coleção virtual.

databases.[n].maxWildcardCollections

inteiro

opcional

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 entre 1 e 1000, inclusive. Se omitido, o padrão é 100.

databases.[n].views

array

opcional

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].name

string

necessário

Nome da visualização.

databases.[n].views.[n].source

string

necessário

Nome da coleção de origem da visualização. Se você deseja criar uma visualização com um estágio $sql, você deve omitir este campo, pois a instrução SQL especificará a collection de origem.

databases.[n].views.[n].pipeline

array

opcional

Array de fases do pipeline de agregação a ser(em) aplicado(s) à coleção source. Você também pode criar views usando o estágio $sql.

Exemplo

Considere um contêiner S3 datacenter-alpha com dados coletados de um datacenter:

|--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ão us-east-1 da AWS. O armazenamento de instâncias do banco de dados federado é especificamente restrito apenas aos arquivos de dados no caminho da pasta metrics.

  • Mapeia arquivos da pasta hardware para um banco de dados MongoDB datacenter-alpha-metrics e uma collection hardware. 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 bucket S3 datacenter-alpha e processa todos os arquivos em /metrics/hardware/. O collections utiliza a sintaxe de análise de 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.

Usuários conectados à instância do banco de dados federado podem usar a linguagem de query do MongoDB e as agregações compatíveis para analisar dados no bucket AWS S3 por meio da coleção datacenter-alpha-metrics.hardware.

Voltar

Definir Armazenamento de Dados

Nesta página