Criar um Modelo de Dados
Nesta página
Visão geral
O modelo de dados do Device Sync consiste em dois esquemas consistentes: o esquema de objetos de Realm usado no Atlas Device SDK e o esquema do App Services.
Você pode criar o modelo de dados para seu aplicativo por meio do esquema de objetos de Realm primeiro ou por meio do esquema do App Services primeiro:
Crie um esquema do App Services a partir de um esquema de objetos de Realm: se você estiver desenvolvendo o mobile-first e ainda não tiver dados no cluster do Atlas, poderá traduzir seu esquema de objetos de Realm em um esquema do App Services.
Crie um esquema de objetos de Realm a partir de um esquema do App Services: se você já tiver dados em seu cluster do MongoDB Atlas, o MongoDB gera um esquema por amostragem de seus dados. O Atlas App Services pode converter esse esquema em um esquema de objetos de Realm para usar em seu aplicativo móvel com o Atlas Device SDK.
Independentemente da abordagem adotada, quando você configura o cluster do Atlas e o aplicativo móvel para usar o respectivo modelo de dados, as alterações no modelo de dados entre o servidor e o cliente são atualizadas automaticamente.
Pré-requisitos
Sua aplicação deve ter pelo menos uma fonte de dados vinculada para criar um esquema.
No entanto, não pode ser uma instância sem servidor ou instância do banco de dados federado.
Criar um esquema do App Services a partir de um Realm Object Model
Você pode alterar ou definir um esquema de objetos de Realm por meio do SDK do cliente móvel. As alterações no esquema de objeto de Realm só são permitidas quando o Modo de Desenvolvimento está habilitado. O App Services refletirá quaisquer alterações em seu esquema de objetos de Realm em seu esquema do App Services.
Consulte a documentação específica do Atlas Device SDK para criar esquemas de objetos de Realm.
Editar seu esquema de objetos do Realm
À medida que você continuar desenvolvendo o aplicativo, precisará modificar o modelo de dados com ele para aplicar diferentes regras de validação de dados com base nessas alterações. Enquanto Development Mode estiver ativado, você poderá editar o Esquema de Objeto de Realm no código do cliente. A Validação de Dados ocorre quando Development Mode está desativado, portanto, os App Services não aceitam alterações no Esquema de Objeto de Realm enquanto Development Mode não estiver ativado.
Importante
Chave primária _id obrigatória
Para trabalhar com o Atlas Device Sync, seu modelo de dados deve ter um campo de chave primária chamado _id
. _id
pode ser do tipo string
, int
ou objectId
.
Exemplo
Um grupo está desenvolvendo um aplicativo de mídia social. Quando o grupo desenvolveu seu aplicativo pela primeira vez, o aniversário de um usuário era um campo obrigatório do modelo de dados do usuário. No entanto, devido a preocupações de privacidade sobre a quantidade de dados do usuário armazenados, o gerenciamento cria um novo requisito para tornar o campo de aniversário do usuário um campo opcional. Os desenvolvedores de aplicativos ativam Development Mode na interface do usuário do App Services e, em seguida, editam o modelo de usuário no código do cliente.
const realmObjectModel = { name: 'User', properties: { _id: 'objectId', _partition: 'string', name: 'string', // developers set optional: true to adhere to the new requirement birthday: {type: 'date', optional: true}, }, primaryKey: '_id' }; Realm.open({schema: realmObjectModel, sync: {/*...*/}}) .then(realm => { // ... use the realm instance to read and modify data })
Atualizar seu esquema do App Services com as alterações no esquema de objetos do Realm
Enquanto o Development Mode estiver ativado, o App Services não valida as gravações em seu modelo de dados, permitindo que você atualize livremente seu Modelo de objetos de Realm. Quando você desativa o Development Mode, o MongoDB App Services atualiza automaticamente seu Esquema de App Services e começa a forçar a validação de dados para seu Atlas cluster com base nele.
Na tela Sync , desative Development Mode clicando no controle deslizante ao lado de Development Mode. A UI indica que o modo de desenvolvimento foi desativado.
Observação
Para fazer atualizações futuras do modelo de dados a partir do código do cliente móvel, você pode seguir este procedimento novamente.
Criar um esquema de objeto do Realm a partir de um esquema do App Services
Definir um esquema do App Services
Para começar, certifique-se de ter um esquema de App Services definido. O App Services converterá esse esquema de App Services em um Esquema de objetos do Realm a ser configurado e utilizado em seu aplicativo móvel.
Observe os seguintes requisitos:
O esquema do App Services deve ter um campo de chave primária denominado
_id
._id
pode ser do tipostring
,int
ouobjectId
.Os nomes de tipo do seu objeto de esquema não podem exceder 57 caracteres UTF-8.
Exibir o esquema de objetos de Realm
O esquema de objetos de Realm define e valida seus dados em seu aplicativo de cliente móvel. Para visualizar seu esquema de objetos de Realm, navegue até a página Atlas Device SDKs e clique na aba Realm Object Models. Nesta página, você pode visualizar seu esquema do App Services como um esquema de objetos de Realm gerado no idioma de sua escolha.
Abrir um Realm com o esquema de objetos de Realm
Você pode usar o Esquema de objetos de Realm gerado em seu aplicativo cliente. Para começar a forçar a validação de dados com seu modelo de dados, você pode abrir um Realm com o Esquema de objetos de Realm. Isso evitará que dados impróprios entrem em seu banco de dados a partir do seu cliente móvel.
Clique em Copy no lado direito do Esquema de objetos de Realm para o Object Modelque você deseja integrar ao código do aplicativo móvel. Isso copiará o código do Esquema de objetos de Realm para o SDK de sua escolha na área de transferência.
Abra o código do aplicativo móvel no IDE e cole o código do Esquema de objetos de Realm.
const UserSchema = { // your copied and pasted Realm Object Schema name: 'User', properties: { _id: 'objectId', _partition: 'string', name: 'string', birthday: 'date' }, primaryKey: '_id' }; // Initialize a realm with your Realm Object Schema Realm.open({schema: UserSchema, sync: { /* ... */ }}) .then(realm => { // ... use the realm instance to read and modify data })
Consulte a documentação específica do Atlas Device SDK para usar o esquema de objetos de Realm gerado.
Leitura adicional
Para saber mais sobre como estes esquemas mapeiam uns aos outros, consulte Mapeamento de Modelo de Dados.
Para atualizar um modelo de dados de sincronização existente, consulte Atualizar seu modelo de dados.
Para saber como definir um esquema para uma coleção em seu cluster sincronizado, consulte Definir e impor um esquema.