Uso interno do banco de dados
O Atlas App Services usa seu MongoDB Atlas cluster para managed algumas operações internas. Em geral, você não precisa saber sobre essas operações para usar o App Services.
Usuários de cluster gerados pelo sistema
O App Services cria automaticamente um usuário do MongoDB para cada aplicativo vinculado a um cluster. Esses usuários são apenas para uso interno e não podem ser editados ou excluídos manualmente. Se você excluir uma aplicação, o usuário associado também será excluído.
Os usuários gerados pelo App Services têm nomes no formato:
mongodb-realm-<your app id>
Travas transacionais
Atlas App Services se conecta a clusters padrão do MongoDB Atlas , o que significa que você pode se conectar diretamente a um cluster vinculado usando outra ferramenta, como o mongosh shell ou o MongoDB Compass. Não há considerações especiais ao ler dados de um cluster vinculado com outra ferramenta.
Ao executar operações de atualização, os App Services adicionam temporariamente um campo reservado, _id__baas_transaction
, aos documentos. Depois que um documento é atualizado com êxito, o App Services remove esse campo. Se você quiser usar outra ferramenta para modificar dados em uma coleção, certifique-se de $unset este campo antes de fazer alterações.
Por exemplo, se você estiver usando o shell mongosh para atualizar documentos na coleção de produtos, seu comando poderá se assemelhar ao código a seguir:
db.products.update( { sku: "unknown" }, { $unset: { _id__baas_transaction: "" } } )
documento não sincronizados
Se um documento em uma coleção sincronizada não estiver em conformidade com o esquema da coleção, ele não poderá ser sincronizado com aplicativos cliente . Se houver 100,000 ou mais documentos não sincronizáveis, o App Services interromperá a sincronização com o aplicativo.
O App Services armazena informações sobre documento não sincronizáveis na collection __realm_sync.unsynced_documents
.
Importante
Você pode ler a partir da coleção __realm_sync.unsynced_documents
, mas não deve modificá-la de forma alguma.
Se o Device Sync estiver pausado devido a atingir o limite de documento não sincronizáveis 100,000 , você terá duas opções:
Entre em contato com o suporte e solicite um aumento temporário no limite de documentos não sincronizáveis.
Uma causa comum para documentos não sincronizáveis são os dados adicionados ou modificados fora do contexto do seu aplicativo.
Considere o seguinte cenário:
Um aplicativo tem uma collection
pets
com o seguinte esquema:{ "title": "Pet", "required": ["_id", "type", "name", "age"], "properties": { "_id": { "bsonType: "objectId" }, "type": { "bsonType: "string" }, "name": { "bsonType: "string" }, "age": { "bsonType: "int" } } }; Uma pessoa adiciona um documento diretamente à collection
pets
usando um driver do MongoDB, um MongoDB Compass ou uma Função de Realm em execução no modo "sistema". O campoage
do documento contém uma string, não um número, que não corresponde ao esquema do seu aplicativo. O MongoDB não impõe nativamente o esquema do seu aplicativo, portanto, permite a inserção sem aviso ou erro.{ "_id": "5ae782e48f25b9dc5c51c4a5", "type": "dog", "name": "Fido", "age": "7" } Depois de inserido, o documento falha na validação de esquema em seu aplicativo e não pode ser sincronizado. O aplicativo armazena a falha na coleção
unsynced_documents
:{ "_id": "6183021879247167daacd8dc", "appId": "6183021373247568dcdcd3ed", "documentId": "5ae782e48f25b9dc5c51c4a5", "ns": { "db": "myDatabase", "coll": "pets" }, "reason": "invalid schema" }
- Resumo
- Se seus dados forem usados por clientes do Realm Mobile Sync, mas também puderem ser criados ou modificados fora do Atlas Device Sync, você deverá garantir que essas criações e modificações correspondam ao esquema de objetos definido na collection. Para documentos que falharam, você pode substituir, atualizar ou excluir e adicionar novamente cada documento.