No Atlas Data Federation, vocĂȘ gerencia o esquema que a interface SQL usa por meio de trĂȘs comandos: sqlGenerateSchema, sqlGetSchema e sqlSetSchema. VocĂȘ executa esses comandos do mongosh em uma instĂąncia do banco de dados federado ou executa as açÔes equivalentes na IU do Atlas. Esta pĂĄgina documenta esses comandos e seus equivalentes de IU.
O Atlas Data Federation amostra documentos de suas coleçÔes para gerar o esquema inicial. Para obter informaçÔes de segundo plano sobre o gerenciamento de esquemas e os outros tipos de implantação compatĂveis, consulte Gerenciamento de esquemas.
Observação
Os sqlGenerateSchema sqlGetSchema sqlSetSchema comandos, e e seus equivalentes da UI do Atlas se aplicam somente ao tipo de sistema Atlas Data Federation . Eles nĂŁo se aplicam a sistemas Enterprise Advanced (EA) autogerenciados, que usam o CLI do MongoDB SQL Schema Builder, ou a queries em um Atlas cluster padrĂŁo que nĂŁo usa o Atlas Data Federation.
sqlGenerateSchema
O comando sqlGenerateSchema gera um esquema de interface SQL para as coleçÔes ou visualizaçÔes especificadas. O Atlas Data Federation amostra documentos de cada namespace para derivar o esquema.
Sintaxe
Ao usar o parĂąmetro sampleNamespaces, vocĂȘ deve executar o comando no banco de dados admin.
use admin db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: [<namespace>], sampleSize: <int>, setSchemas: true|false })
ParĂąmetros
Parùmetro | Tipo | Descrição | necessidade |
|---|---|---|---|
| array de strings | Especifica a lista separada por vĂrgula de namespaces para os quais gerar esquemas. Um namespace inclui o nome do banco de dados , um separador de ponto () | Opcional |
| inteiro | Especifica o nĂșmero de documentos a serem usados como amostra para criar o esquema. Se omitido, o padrĂŁo Ă© | Opcional |
| booleano | Especifica se o esquema gerado para a coleção ou visualização deve ser armazenar. O valor pode ser um dos seguintes:
Se omitido, o padrĂŁo Ă© | Opcional |
SaĂda
O comando retorna a seguinte saĂda se for bem-sucedido:
{ "ok" : 1, "schemas" : [ { "databaseName" : "<database-name>", "namespaces" : [ { "name" : "<collection-name>", "schema" : { "version" : NumberLong(1), "jsonSchema" : { ... } } } ] }, ... ] }
O objeto schemas contém os seguintes campos.
Parùmetro | Tipo | Descrição |
|---|---|---|
| string | Nome do banco de dados. |
| Array de objetos | Nome e esquema gerado de cada coleção ou visualização. |
| string | Nome da coleção ou visualização. |
| documento | Esquema da coleção ou visualização. |
| inteiro | Formatar versĂŁo do esquema. O valor Ă© sempre 1. |
| documento | Esquema JSON da coleção ou visualização. O esquema JSON pode conter os seguintes campos:
Para saber mais sobre esses campos, consulte Palavras-chave do JSON schema. |
Se vocĂȘ definir o esquema para a coleção ou visualização com a opção setSchemas, poderĂĄ verificar se o comando foi bem-sucedido executando o comando sqlGetSchema. O campo metadata.description do comando sqlGetSchema contĂ©m o seguinte valor:
"set using sqlGenerateSchema with setSchemas = true"
Errors
O comando retorna o seguinte erro se falhar:
"failedNamespaces": [ { "namespace" : "<db.ns>", "error" : "no documents found in sample namespace" } ]
O Atlas Data Federation retorna esse erro se os namespaces especificados não existirem na configuração de armazenamento ou estiverem vazios. O Atlas Data Federation também retorna esse erro se não conseguir definir o esquema para um determinado namespace.
sqlGetSchema
O comando sqlGetSchema recupera o esquema armazenado para a coleção ou visualização especificada.
Sintaxe
db.getSiblingDB("<dbName>").runCommand({ sqlGetSchema: "<collection-name>|<view-name>" })
ParĂąmetros
Parùmetro | Tipo | Descrição | necessidade |
|---|---|---|---|
| string | Nome da coleção para a qual recuperar o esquema. Forneça o nome da coleção ou o nome da exibição. | Condicional |
| string | Nome da visualização para a qual recuperar o esquema. Forneça o nome da visualização ou o nome da coleção. | Condicional |
SaĂda
O comando retorna a seguinte saĂda se a coleção ou visualização nĂŁo tiver um esquema:
{ "ok" : 1, "metadata" : { }, "schema" : { } }
O comando retorna uma saĂda semelhante Ă seguinte se a coleção ou visualização tiver um esquema:
{ "ok": 1, "metadata": { "description": "<description>" }, "schema": { "version": NumberLong(1), "jsonSchema": { ... } } }
O campo metadata.description descreve como o esquema foi definido para a coleção. O valor pode ser um dos seguintes:
generated automatically by Atlas Data FederationIndica que o esquema foi gerado automaticamente pelo Atlas Data Federation.
set using sqlGenerateSchema with setSchemas = trueIndica que o esquema foi definido pelo comando sqlGenerateSchema porque a
setSchemaopção foi definidatruecomo.
set using sqlSetSchemaIndica que o esquema foi definido usando o comando sqlSetSchema.
O documento schema contém os seguintes campos:
Parùmetro | Tipo | Descrição |
|---|---|---|
| inteiro | Formatar versĂŁo do esquema. O valor Ă© sempre 1. |
| documento | Esquema JSON da coleção ou visualização. O esquema JSON pode conter os seguintes campos:
Para saber mais sobre esses campos, consulte Palavras-chave do JSON schema. |
sqlSetSchema
O comando sqlSetSchema define ou remove o esquema para uma coleção ou visualização. O comando aplica o esquema que vocĂȘ fornece diretamente. O comando nĂŁo valida o esquema fornecido em relação aos dados na coleção.
Sintaxe
db.getSiblingDB("<dbName>").runCommand({ sqlSetSchema: "<collection-name>|<view-name>", schema: { "version": 1, "jsonSchema": <jsonSchema> } })
db.getSiblingDB("<dbName>").runCommand({ sqlSetSchema: "<collection-name>|<view-name>", schema: {} })
ParĂąmetros
Parùmetro | Tipo | Descrição | necessidade |
|---|---|---|---|
| string | Nome da coleção para a qual definir o esquema. Forneça um nome de coleção ou um nome de exibição. | Condicional |
| string | Nome da exibição para a qual definir o esquema. Forneça um nome de exibição ou um nome de coleção. | Condicional |
| documento | A versĂŁo do formato do esquema e:
VocĂȘ pode fornecer um Ășnico documento ou uma array de documentos no campo | ObrigatĂłrio |
SaĂda
O comando retorna a seguinte saĂda se for bem-sucedido:
{ "ok" : 1 }
VocĂȘ pode verificar se o comando foi bem-sucedido executando o comando sqlGetSchema . O campo metadata.description na resposta contĂ©m o seguinte valor:
"set using sqlSetSchema"
Exemplos
Considere uma coleção denominada egData em um banco de dados denominada sampleDB com os seguintes documentos:
{"a": {"b": {"c": [1, 2, 3]}}, "s": 1} {"a": {"b": {"c": [4, 5, 6]}}, "s": 2} {"a": {"b": [7, 8, 9]}, "s": 3} {"a": {"b": {"c": []}}, "s": 4} {"a": {"b": {"c": "hello"}}, "s": 5} {"a": {"b": {"c": {"d": 1}}}, "s": 6} {"a": {"b": {"c": null}}} {"s": 7}
Os exemplos a seguir usam os comandos de esquema do Atlas Data Federation para gerar, recuperar, definir e remover o esquema da coleção anterior.
Gerar um esquema
O comando a seguir gera um esquema para a coleção denominada sampleDB.egData na configuração de armazenamento. O comando utiliza dois documentos selecionados aleatoriamente da coleção para criar o esquema, pois o sampleSize é 2. O comando não define o esquema para a coleção porque a opção setSchemas não é especificada e o padrão é false.
use admin db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: ["sampleDB.egData"], sampleSize: 2 })
O comando anterior retorna a seguinte saĂda. Para saber mais sobre os campos na saĂda, consulte SaĂda.
{ "ok" : 1, "schemas" : [ { "databaseName" : "sampleDB", "namespaces" : [ { "name" : "egData", "schema" : { "version" : NumberLong(1), "jsonSchema" : { "bsonType" : [ "object" ], "properties" : { "a" : { "bsonType" : [ "object" ], "properties" : { "b" : { "bsonType" : [ "object" ], "properties" : { "c" : { "bsonType" : [ "array" ], "items" : { "bsonType" : [ "int" ] } } } } } }, "s" : { "bsonType" : [ "int" ] } } } } } ] } ] }
Gerar e definir um esquema
O comando a seguir gera um esquema para a coleção denominada sampleDB.egData na configuração de armazenamento. O comando utiliza até 1000 documentos na coleção para criar o esquema, pois a opção sampleSize não é especificada e padrão para 1000. O comando define o esquema gerado como o esquema a ser usado para a coleção porque setSchemas é true.
use admin db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: ["sampleDB.egData"], setSchemas: true })
Retrieve a Schema
O comando a seguir recupera o esquema armazenado para a coleção egData:
db.getSiblingDB("sampleDB").runCommand({ sqlGetSchema: "egData" })
O comando anterior retorna a seguinte saĂda. Para saber mais sobre os campos na saĂda, consulte SaĂda.
{ "ok" : 1, "metadata" : { "description" : "set using sqlGenerateSchema with setSchemas = true" }, "schema" : { "version" : NumberLong(1), "jsonSchema" : { "bsonType" : [ "object" ], "properties" : { "a" : { "bsonType" : [ "object" ], "properties" : { "b" : { "bsonType" : [ "object", "array" ], "properties" : { "c" : { "bsonType" : [ "array", "string", "object", "null" ], "properties" : { "d" : { "bsonType" : [ "int" ] } }, "items" : { "bsonType" : [ "int" ] } } }, "items" : { "bsonType" : [ "int" ] } } } }, "s" : { "bsonType" : [ "int", "object" ] } } } } }
Definir um esquema
O seguinte comando sqlSetSchema define o esquema para a coleção egData :
db.getSiblingDB("sampleDB").runCommand({ sqlSetSchema : "egData", "schema" : { "version" : NumberLong(1), "jsonSchema" : { "bsonType" : [ "object" ], "properties" : { "a" : { "bsonType" : [ "object" ], "properties" : { "b" : { "bsonType" : [ "object", "array" ], "properties" : { "c" : { "bsonType" : [ "array", "string", "object", "null" ], "properties" : { "d" : { "bsonType" : [ "int" ] } }, "items" : { "bsonType" : [ "int" ] } } }, "items" : { "bsonType" : [ "int" ] } } } }, "s" : { "bsonType" : [ "int", "object" ] } } } } })
O comando anterior retorna a seguinte saĂda:
{ "ok" : 1 }
Remover um esquema
O comando sqlSetSchema a seguir remove o esquema da coleção egData passando um documento schema vazio:
db.getSiblingDB("sampleDB").runCommand({ sqlSetSchema: "egData", schema: {} })
O comando anterior retorna a seguinte saĂda:
{ "ok" : 1 }
Gerenciar esquemas na IU do Atlas
VocĂȘ pode executar as mesmas açÔes de esquema na IU do Atlas na pĂĄgina Manage SQL Schemas. A IU amostra documentos para gerar esquemas, o mesmo que o comando sqlGenerateSchema.
Criar um esquema
Quando vocĂȘ cria uma conexĂŁo de inĂcio rĂĄpido, o Atlas Data Federation gera o esquema automaticamente. Para criar um esquema manualmente, use o seguinte procedimento.
No Atlas, acesse sua instĂąncia de banco de dados federado para seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o tĂtulo Services.
A pĂĄgina Data Federation Ă© exibida.
Gerar novamente um esquema
Regenere um esquema sempre que a forma dos dados subjacentes for alterada, como ao adicionar campos ou alterar os tipos de campo , para que as queries SQL reflitam os dados atuais. Para manter os esquemas atualizados automaticamente, consulte Agendar atualizaçÔes de esquema.
No Atlas, acesse sua instĂąncia de banco de dados federado para seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o tĂtulo Services.
A pĂĄgina Data Federation Ă© exibida.
Visualizar um esquema
No Atlas, acesse sua instĂąncia de banco de dados federado para seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o tĂtulo Services.
A pĂĄgina Data Federation Ă© exibida.
Navegue até a pågina Gerenciar esquemas SQL.
Na seção Federated Database Instances , clique em Ăcone Ă direita do esquema e selecione Manage SQL Schemas no menu suspenso.
Nesta pĂĄgina, vocĂȘ pode visualizar todos os esquemas existentes. Para visualizar um esquema especĂfico no formato JSON, clique em .
Editar esquema
No Atlas, acesse sua instĂąncia de banco de dados federado para seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o tĂtulo Services.
A pĂĄgina Data Federation Ă© exibida.
Excluir um esquema
No Atlas, acesse sua instĂąncia de banco de dados federado para seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o tĂtulo Services.
A pĂĄgina Data Federation Ă© exibida.
Excluir todos os esquemas
No Atlas, acesse sua instĂąncia de banco de dados federado para seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o tĂtulo Services.
A pĂĄgina Data Federation Ă© exibida.
AtualizaçÔes do esquema de agendamento
As atualizaçÔes de esquema agendadas ajudam a manter a precisão do esquema ao longo do tempo. As atualizaçÔes de esquema agendadas amostram cada namespace e mesclam o novo esquema com o existente. Por exemplo, as atualizaçÔes de esquema agendadas permitem que o Atlas Data Federation colete automaticamente novos campos adicionados às coleçÔes.
No Atlas, acesse sua instĂąncia de banco de dados federado para seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o tĂtulo Services.
A pĂĄgina Data Federation Ă© exibida.