Docs Menu
Docs Home
/ /
Atlas App Services
/

내부 데이터베이스 사용량

Atlas App Services는 연결된 MongoDB Atlas cluster를 사용하여 일부 내부 작업을 managed합니다. 일반적으로 App Services를 사용하기 위해 이러한 작업에 대해 알 필요는 없습니다.

App Services 는 클러스터 에 연결된 각 앱 에 대해 MongoDB 사용자 를 자동으로 생성합니다. 이러한 사용자는 내부용으로만 사용해야 하며 편집하거나 수동으로 삭제할 수 없습니다. 앱을 삭제 하면 연결된 사용자도 삭제됩니다.

App Services에서 생성된 사용자의 이름은 다음과 같습니다. mongodb-realm-<your app id>

Atlas App Services는 표준 MongoDB Atlas cluster에 연결되므로 mongosh shell 또는 MongoDB Compass 와 같은 다른 도구를 사용하여 연결된 클러스터에 직접 연결할 수 있습니다. 다른 도구로 연결된 클러스터의 데이터를 읽을 때 특별히 고려해야 할 사항은 없습니다.

업데이트 작업을 실행 하는 동안 App Services 는 문서에 예약된 필드_id__baas_transaction 을(를) 일시적으로 추가합니다. 문서 가 성공적으로 업데이트되면 App Services 에서 이 필드 를 제거합니다. 다른 도구를 사용하여 컬렉션 의 데이터를 수정하려면 변경하기 전에 이 필드 를 설정 해제 해야 합니다.

예를 들어, mongosh shell 을 사용하여 제품 컬렉션의 문서를 업데이트하는 경우 명령은 다음 코드와 유사할 수 있습니다.

db.products.update(
{ sku: "unknown" },
{ $unset: { _id__baas_transaction: "" } }
)

동기화 된 컬렉션 의 문서 가 컬렉션의 스키마 를 준수하지 않는 경우 클라이언트 앱과 동기화할 수 없습니다. 동기화할 수 없는 문서가 100 000 개 이상 있는 경우 App Services 는 앱 과의 동기화를 중지합니다.

App Services는 동기화할 수 없는 문서에 대한 정보를 __realm_sync.unsynced_documents collection에 저장합니다.

중요

__realm_sync.unsynced_documents collection에서 읽을 수는 있지만 어떤 식으로든 수정해서는 안 됩니다.

100 000 동기화할 수 없는 문서 제한에 도달하여 Device Sync 가 일시 중지된 경우 두 가지 옵션이 있습니다.

문서가 동기화되지 않는 문제의 일반적인 원인은 앱의 컨텍스트 외부에서 데이터가 추가되거나 수정되었기 때문입니다.

다음 시나리오를 생각해 보겠습니다.

  1. 앱에 다음 스키마를 가진 pets collection이 있습니다.

    {
    "title": "Pet",
    "required": ["_id", "type", "name", "age"],
    "properties": {
    "_id": { "bsonType: "objectId" },
    "type": { "bsonType: "string" },
    "name": { "bsonType: "string" },
    "age": { "bsonType: "int" }
    }
    };
  2. 누군가가 MongoDB 드라이버, MongoDB Compass 또는 "시스템" 모드에서 실행되는 Atlas Function을 사용하여 pets 컬렉션에 직접 문서를 추가합니다. 문서의 age 필드에 앱의 스키마와 일치하지 않는 숫자가 아닌 문자열이 포함되어 있습니다. MongoDB는 기본적으로 앱의 스키마를 적용하지 않으므로 경고나 오류 없이 삽입을 허용합니다.

    {
    "_id": "5ae782e48f25b9dc5c51c4a5",
    "type": "dog",
    "name": "Fido",
    "age": "7"
    }
  3. 문서를 삽입하면 앱에서 스키마 유효성 검사에 실패하여 동기화할 수 없습니다. App Store은 실패를 unsynced_documents collection에 저장합니다.

    {
    "_id": "6183021879247167daacd8dc",
    "appId": "6183021373247568dcdcd3ed",
    "documentId": "5ae782e48f25b9dc5c51c4a5",
    "ns": {
    "db": "myDatabase",
    "coll": "pets"
    },
    "reason": "invalid schema"
    }
요약
Sync 클라이언트에서 데이터를 사용하지만 Atlas Device Sync 외부에서도 데이터를 생성하거나 수정할 수 있는 경우, 해당 생성 및 수정 사항이 컬렉션에 정의된 객체 스키마와 일치하는지 확인해야 합니다. 실패한 문서의 경우 각 문서를 교체, 업데이트 또는 삭제 및 다시 추가할 수 있습니다.

돌아가기

문서 미리보기