Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Atlas
/ /

Armazenamento de blobs Azure

O Atlas Data Federation dá suporte a contêineres de Armazenamento de Blobsdo Azure como armazenamentos de instâncias de banco de dados federados. Você deve definir mapeamentos em sua instância de banco de dados federado para seus contêineres de Armazenamento de Blobs do Azure para executar queries em seus dados.

Observação

Enquanto nos referimos a blobs como arquivos e prefixos separados por delimitadores como diretórios nesta página, esses serviços de armazenamento blob não são realmente sistemas de arquivos e não têm os mesmos comportamentos em todos os casos como arquivos em um disco rígido.

Para definir um armazenamento de instância do banco de dados federado para um contêiner do Azure Blob Storage, você pode especificar os parâmetros de configuração no formato JSON. A configuração contém o armazenamento de dados do Armazenamento de Blobs do Azure e o mapeia para collections virtuais que você pode query.

A configuração JSON para dados em contêineres do Azure Blob Storage utiliza os seguintes campos:

1{
2 "stores" : [
3 {
4 "name" : "<string>",
5 "provider": "<string>",
6 "region" : "<string>",
7 "serviceURL" : "<string>",
8 "containerName" : "<string>",
9 "delimiter" : "<string>",
10 "prefix": "<string>",
11 "public": <boolean>
12 }
13 ],
14 "databases" : [
15 {
16 "name" : "<string>",
17 "collections" : [
18 {
19 "name" : "<string>",
20 "dataSources" : [
21 {
22 "storeName" : "<string>",
23 "path" : "<string>",
24 "defaultFormat" : "<string>",
25 "provenanceFieldName": "<string>",
26 "omitAttributes": <boolean>
27 }
28 ]
29 }
30 ],
31 "maxWildcardCollections" : <integer>,
32 "views" : [
33 {
34 "name" : "<string>",
35 "source" : "<string>",
36 "pipeline" : "<string>"
37 }
38 ]
39 }
40 ]
41 }
42

A configuração JSON para um Armazenamento de Blobs do Azure 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. O armazenamento da instância do banco de dados federado captura arquivos em um contêiner do Azure Blob Storage. O Data Federation só pode acessar armazenamentos de dados definidos no objeto stores.

O objeto stores contém os seguintes campos:

1"stores" : [
2 {
3 "name" : "<string>",
4 "provider" : "<string>",
5 "region" : "<string>",
6 "serviceURL" : "<string>",
7 "containerName" : "<string>",
8 "delimiter": "<string",
9 "prefix" : "<string>",
10 "public": <boolean>
11 }
12 ]

A tabela a seguir descreve os campos no objeto de armazenamentos :

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 de instância do banco de dados federado captura:

  • Arquivos em um contêiner do Azure Blob Storage

  • Documentos em um Atlas cluster

  • Arquivos armazenados em URLpublicamente acessíveis.

O Atlas Data Federation só pode acessar 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 azure para um contêiner do Azure Blob Storage.

stores.[n].region

string

necessário

Nome da região do Azure na qual os dados são armazenados.

stores.[n].serviceURL

string

necessário

URL da conta do Armazenamento de Blobs do Azure que contém seus contêineres de blobs. O serviceURL deve estar no seguinte formato:

https://<storage-account-name>.blob.core.windows.net/

onde storage-account-name é o nome da sua conta do Armazenamento de Blobs do Azure.

stores.[n].containerName

string

necessário

Nome do Azure Blob Storage container que contém os arquivos.

stores.[n].prefix

string

opcional

O prefixo Atlas Data Federation se aplica ao procurar arquivos no Azure Blob Storage.

Por exemplo, considere um contêiner do Azure Blob Storage metrics com a seguinte estrutura:

metrics
|--hardware
|--software
|--computed

O armazenamento de instância do banco de dados federado acrescenta o valor de prefix ao databases.[n].collections.[n].dataSources.[n].path para criar o caminho completo para a ingestão dos arquivos. Definir prefix 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 contêiner Armazenamento de Blob do Azure.

stores.[n].delimiter

string

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 atravessar eficientemente os contêineres do Azure Blob Storage com uma estrutura de diretório hierárquica.

Se omitido, o padrão é "/".

stores.[n].public

booleano

opcional

Especifica se o contêiner do Armazenamento de Blobs do Azure é público.

Se configurado para true, o Atlas Data Federation não utiliza o Azure Service Principal configurado para acessar seu Azure Blob Storage. Se configurado para false, o Service Principal configurado deve incluir permissões para acessar o contêiner de blob, mesmo que este contêiner de blob 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 databases 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 de bancos de dados :

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.

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 procura e analisa arquivos no storeName antes de mapeá-los para o <collection>. Atlas Data Federation precede o stores.[n].prefix ao path para construir o caminho completo para pesquisa. Especifica / para capturar todos os arquivos e diretórios do caminho prefix.

Por exemplo, considere um contêiner do Azure Blob Storage metrics com a seguinte estrutura:

metrics
|--hardware
|--software
|--computed

Um path de / direciona o Atlas Data Federation para procurar todos os arquivos e diretórios 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 o Atlas Data Federation a incluir todos os arquivos e diretórios a partir 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

string

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

Para obter mais informações, consulte Formatos de dados compatíveis

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

string

necessário

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ãodo stores.[n].region Azure ( ).

serviceURL

URL da conta do Azure Blob Storage que contém seus contêineres blob (stores.[n].serviceURL).

containerName

Nome do contêiner do Azure Blob Storagestores.[n].containerName()

key

Caminho ( ) para odatabases.[n].collections.[n].dataSources.[n].path arquivo.

IMPORTANTE: Você não pode definir esta configuração utilizando o Editor Visual na UI do Atlas .

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

booleano

necessário

Sinalizador que especifica se os atributos (pares de chave e valor) devem ser omitidos que o Atlas Data Federation adiciona à 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 denominado /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 ao documento se você definir omitAttributes como false. 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

Número máximo de coleções de curingas * no banco de dados. Cada coleção de curinga pode ter somente uma fonte de dados. O valor pode ser entre 1 e 1000, inclusive. Se omitido, o padrão é 100.

databases.[n].views

array

necessário

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

Etiqueta que identifica a vista.

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

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.

Exemplo

Considere o contêiner Azure Blob Storage datacenter-alpha contendo 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 de banco de dados federado no contêiner do datacenter-alpha Azure Blob Storage na eastus2 região Azure . O armazenamento da Federated database instance store é especificamente restrito para incluir apenas ficheiros de dados no caminho do diretório metrics.

  • Mapeia arquivos da pasta hardware para um banco de dados MongoDB datacenter-alpha-metrics e uma coleção 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",
"provider" : "azure",
"region" : "eastus2",
"containerName" : "datacenter-alpha",
"serviceURL" : "https://mystorageaccount.blob.core.windows.net/"
}
],
"databases" : [
{
"name" : "datacenter-alpha-metrics",
"collections" : [
{
"name" : "hardware",
"dataSources" : [
{
"storeName" : "datacenter",
"path" : "/hardware/{date date}"
}
]
}
]
}
]
}

A Federação de Dados do Atlas analisa o contêiner datacenter-alpha do Azure Blob Storage e processa todos os arquivos abaixo de /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 do date correspondente não existir em um documento, o Atlas Data Federation adicionará.

Os usuários conectados à instância do banco de dados federado podem usar a Linguagem de Query MongoDB e as aggregations compatíveis para analisar dados no bucket S3 por meio da datacenter-alpha-metrics.hardware coleção .

Voltar

Limitações

Nesta página