Cluster do Atlas
Nesta página
O Atlas Data Federation suporta cluster do Atlas como instância do banco de dados federado armazenamentos. Você deve definir mapeamentos na instância do reconhecimento de data center para o cluster do Atlas para executar query nos seus dados.
Importante
As informações na sua configuração de armazenamento são visíveis internamente no MongoDB e armazenadas como dados operacionais para monitorar e melhorar o desempenho do Atlas Data Federation. Portanto, recomendamos que você não use PII em suas configurações.
Exemplo de Configuração para Armazenamento de Dados do Atlas
Exemplo
Considere um cluster do Atlas M10
ou superior denominado myDataCenter
contendo dados na collection metrics.hardware
. A collection metrics.hardware
contém documento JSON com métricas derivadas do hardware em um centro de dados. A configuração a seguir:
Especifica o cluster do Atlas denominado
myDataCenter
no projeto especificado como um armazenamento de instância do reconhecimento de data center federado.Mapeia documento da collection
metrics.hardware
no cluster do Atlas para a collectiondataCenter.inventory
na configuração de armazenamento.
{ "stores" : [ { "name" : "atlasClusterStore", "provider" : "atlas", "clusterName" : "myDataCenter", "projectId" : "5e2211c17a3e5a48f5497de3" } ], "databases" : [ { "name" : "dataCenter", "collections" : [ { "name" : "inventory", "dataSources" : [ { "storeName" : "atlasClusterStore", "database" : "metrics", "collection" : "hardware" } ] } ] } ] }
O Atlas Data Federation mapeia todos os documentos na collection metrics.hardware
para a collection dataCenter.inventory
na configuração de armazenamento.
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 Atlas cluster por meio da collection dataCenter.inventory
. Quando você executa queries, a query primeiro vai para Atlas Data Federation. Portanto, se você executar queries de agregação que são suportadas pelo seu Atlas cluster, mas não pelo Atlas Data Federation, as queries falharão. Para saber mais sobre os comandos com e sem suporte no Data Federation, consulte Comandos do MongoDB com suporte.
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 "clusterName": "<string>", 7 "projectId": "<string>", 8 "readPreference": { 9 "mode": "<string>", 10 "tagSets": [ 11 [{"name": "<string>", "value": "<string>"},...], 12 ... 13 ], 14 "maxStalenessSeconds": <int> 15 } 16 } 17 ], 18 "databases" : [ 19 { 20 "name" : "<string>", 21 "collections" : [ 22 { 23 "name" : "<string>", 24 "dataSources" : [ 25 { 26 "storeName" : "<string>", 27 "database" : "<string>", 28 "databaseRegex": "<string>", 29 "collection" : "<string>", 30 "collectionRegex" : "<string>", 31 "provenanceFieldName": "<string>" 32 } 33 ] 34 } 35 ], 36 "views" : [ 37 { 38 "name" : "<string>", 39 "source" : "<string>", 40 "pipeline" : "<string>" 41 } 42 ] 43 } 44 ] 45 }
stores
- O objeto
stores
define cada armazenamento de dados associado à instância do banco de dados federado. O armazenamento de instâncias do banco de dados federado captura arquivos em documentos no Atlas cluster. a instância do banco de dados federado 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 "clusterName" : "<string>", 6 "projectId": "<string>" 7 "readPreference": { 8 "mode": "<string>", 9 "tagSets": [ 10 [{"name": "<string>", "value": "<string>"},...], 11 ... 12 ], 13 "maxStalenessSeconds": <int> 14 }, 15 "readConcern": { 16 "level": "<string>" 17 } 18 } 19 ]
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
atlas
para uma collection em um cluster do Atlas.
stores.[n].clusterName
Nome do cluster do Atlas no qual a loja é baseada. O cluster deve existir no mesmo projeto que sua instância do banco de dados federado. O campo
source
no modelo de dados é o nome do cluster do Atlas.
stores.[n].projectId
Identificador único do projeto que contém o cluster do Atlas no qual a loja é baseada.
stores.[n].readPreference
Opcional. preferência de leitura de cluster , que descreve como rotear solicitações de leitura para o cluster.
Exemplo
A seguinte configuração
readPreference
especifica o modosecondary
eANALYTICS
nodeType.{ ... "stores": [ { "provider": "atlas", "clusterName": <CLUSTER_NAME>, "name": <STORE_NAME>, "projectId": <PROJECT_ID>, "readPreference": { "mode": "secondary", "tagSets": [ [ { "name": "nodeType", "value": "ANALYTICS" } ], ... ] } } ] }
stores.[n].readPreference.mode
Opcional. modo de preferência de leitura que especifica para qual membro do conjunto de réplicas as solicitações de leitura devem ser roteadas. O valor pode ser um dos seguintes:
primary
- para rotear todas as solicitações de leitura para o conjunto de réplicas primárioprimaryPreferred
- para rotear todas as solicitações de leitura do conjunto de réplicas primário e para membros secundários somente seprimary
não estiver disponívelsecondary
- para rotear todas as solicitações de leitura para os membros secundários do conjunto de réplicassecondaryPreferred
- para rotear todas as solicitações de leitura para os membros secundários do conjunto de réplicas e o primary em clusters fragmentados somente se os membrossecondary
não estiverem disponíveisnearest
- para rotear todas as solicitações de leitura para um membro aleatório qualificado do conjunto de réplicas, independentemente de esse membro ser primário ou secundário
Se omitido, o padrão é
local
.
stores.[n].readPreference.tagSets
Opcional. Arrays de conjuntos de tags ou documentos de especificação de tags que contêm pares de nome e valor para o membro do conjunto de réplicas. Se especificado, o Atlas Data Federation roteia solicitações de leitura para membros ou membros do conjunto de réplicas associados às tags especificadas. Para saber mais, Leia Conjuntos de tags de preferência.
Observação
O Atlas Data Federation não suporta
tagSets
para clusters fragmentados.
stores.[n].readPreference.maxStalenessSeconds
Opcional. Atraso máximo de atraso de replicação, ou "obsoleto", para leituras de secundários . Para saber mais sobre
maxStalenessSeconds
, consulte Preferência de leitura maxStalenessSeconds.
stores.[n].readConcern
Opcional. Propriedades de consistência e isolamento dos dados lidos de um Atlas cluster. Para saber mais, consulte Read concern. O valor para o nível de consistência e disponibilidade pode ser um dos seguintes:
local
- para retornar dados de uma instância sem garantia de que os dados tenham sido gravados na maioria dos membros do conjunto de réplicas. Para saber mais, consulte Read concern "local".available
- para retornar dados de uma instância sem garantia de que os dados tenham sido gravados na maioria dos membros do conjunto de réplicas. Isso pode retornar documentos órfãos ao ler de uma coleção fragmentada. Para saber mais, consulte Read Concern "available".majority
- para retornar dados que foram confirmados pela maioria dos nós no Atlas cluster. Para saber mais, consulte Read Concern "maioria".linearizable
- para retornar dados que reflitam todas as gravações bem-sucedidas reconhecidas pela maioria que foram concluídas antes do início da operação de leitura. Para saber mais, consulte Read concern "linearizável".snapshot
- para retornar dados comprometidos pela maioria como eles aparecem nos fragmentos a partir de um único ponto específico no passado recente. Para saber mais, consulte Read Concern "snapshot".
databases
1 "databases" : [ 2 { 3 "name" : "<string>", 4 "collections" : [ 5 { 6 "name" : "<string>", 7 "dataSources" : [ 8 { 9 "storeName" : "<string>", 10 "database" : "<string>", 11 "databaseRegex": "<string>", 12 "collection" : "<string>", 13 "collectionRegex" : "<string>", 14 "provenanceFieldName": "<string>" 15 } 16 ] 17 } 18 ] 19 } 20 ]
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 reconhecimento de data center para o qual o Atlas Data Federation mapeia os dados contidos no armazém de dados. Você pode gerar reconhecimento de data center dinamicamente especificando
*
para o nome do reconhecimento de data center. Bancos de dados gerados dinamicamente:Pode existir ao lado de reconhecimento de data center explicitamente definidos. No entanto, o Atlas Data Federation não gerará dinamicamente reconhecimento de data center com nomes que entrem em conflito com reconhecimento de data center explicitamente definidos na configuração de armazenamento.
Só pode ser de um único cluster do Atlas. O Atlas Data Federation não gerará dinamicamente reconhecimento de data center a partir de vários cluster do Atlas ou outros armazenamentos 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 do banco de dados federado
stores
. Para bancos de dados gerados dinamicamente, você pode definir apenas um objeto de coleção curinga (*
) na configuração de armazenamento.
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ções dinamicamente, especificando
*
para o nome da coleção e omitindo o campocollection
. Para gerar dinamicamente coleções curinga (*
) para bancos de dados curinga gerados dinamicamente (*
), especifique a opçãodatabases.[n].collections.[n].dataSources.[n].storeName
e omita a opçãodatabases.[n].collections.[n].dataSources.[n].database
. Observe que, para bancos de dados gerados dinamicamente, você pode definir apenas um objeto de coleção curinga (*
) na configuração do armazenamento.Para coleção curinga (
*
), você também pode definir padrões regex usando o campodatabases.[n].collections.[n].dataSources.[n].collectionRegex
para filtrar apenas as coleção.
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].database
Nome do reconhecimento de data center no cluster do Atlas que contém a collection. Você deve omitir essa configuração para:
Crie uma collection curinga (
*
) para um reconhecimento de data center curinga (*
).Glob vários reconhecimento de data center.
databases.[n].collections.[n].dataSources.[n].databaseRegex
Opcional. Padrão regex a ser usado para reconhecimento de data center globalizados para combinar várias collection. Se você especificar esta opção, a instância do banco de dados federado conterá um único reconhecimento de data center com collection de vários reconhecimento de data center. Para globalizar bancos de dados, você deve fazer o seguinte:
Omitir o campo
database
.Especifique um nome válido para o campo
databases.[n].collections.[n].dataSources.[n].collection
.
Exemplo
Suponha que você tenha 2 bancos de dados chamados
foo
ebar
, cada um com uma collection chamadaSales
. Você pode combinar a coleçãoSales
defoo
ebar
usando a opçãodatabaseRegex
na configuração de armazenamento:{ "databases": [ { "name": "Transactions", "collections": [ { "name": "AllSales", "dataSources": [ { "storeName": "atlasStore", "databaseRegex": ".*", "collection": "Sales" } ] } ] } ] } Para o objeto
databases
anterior, o Atlas Data Federation gera o seguinte em sua instância do banco de dados federado:Um reconhecimento de data center virtual chamado
Transactions
.Uma collection virtual denominada
AllSales
que contém dados da collection denominadaSales
em todos os reconhecimento de data center cujo nome corresponde ao padrão regex especificado na opçãodatabaseRegex
.
Se você especificar esta opção, deverá especificar o nome da collection. Não é possível especificar essa opção para collection de curingas.
databases.[n].collections.[n].dataSources.[n].collection
Nome da collection no cluster do Atlas no qual o armazenamento de instância do banco de dados federado é baseado. Você deve omitir essa configuração para:
Criando uma collection curinga (
*
).Criando nomes de coleções curingas que correspondem a padrões regex.
Combinar várias collection em um reconhecimento de data center usando padrões regex.
databases.[n].collections.[n].dataSources.[n].collectionRegex
Condicional: opcional para collection curinga, necessário para combinar collection em um reconhecimento de data center.
Padrão regex a ser usado para criar a collection curinga (
*
) ou para combinar várias collection em um reconhecimento de data center.Para usar padrões regex para nomes de collection curinga (''*''), você deve fazer o seguinte:
Especifique um curinga (
*
) como o valor paradatabases.[n].collections.[n].name
.Omit
databases.[n].collections.[n].dataSources.[n].collection
.
Se você especificar esse campo para gerar collection curinga, a instância de instância do reconhecimento de data center conterá somente collection com nomes que correspondam à expressão regular especificada. As collection na configuração de armazenamento da instância do reconhecimento de data center federado usam seus nomes originais no cluster do Atlas.
Para usar padrões regex para combinar várias coleções em um database, você deve fazer o seguinte:
Especifique um nome que não seja o curinga (
*
) como valor paradatabases.[n].collections.[n].name
.Omit
databases.[n].collections.[n].dataSources.[n].collection
.
Se você especificar este campo para combinar múltiplas coleções, a coleção na instância do banco de dados federado conterá dados de todas as coleções do Atlas com nomes que correspondem à expressão regular especificada. A collection na configuração de armazenamento da instância do banco de dados federado usa o nome que você especifica como valor para
databases.[n].collections.[n].name
.Para saber mais sobre a sintaxe regex, consulte Linguagem de programação Go.
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 federadoclusterName
Nome do Atlas cluster
stores.[n].clusterName
()databaseName
Nome do banco de dados (
databases.[n].collections.[n].dataSources.[n].database
) no Atlas clustercollectionName
Nome da coleção
databases.[n].collections.[n].name
()Você não pode definir esta configuração utilizando o Editor Visual na UI do Atlas.
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
.