데이터 모델 만들기
개요
Device Sync 데이터 모델은 Atlas Device SDK에서 사용되는 Realm 객체 스키마와 Atlas App Services로 구성된 두 가지 일관된 스키마로 구성됩니다.
Realm 객체 스키마를 먼저 사용하거나 또는 App Services 스키마를 통해 앱의 데이터 모델을 만들 수 있습니다.
Realm 객체 스키마 App Services 스키마 생성: 모바일을 우선하여 개발 중이고 Atlas 클러스터에 아직 데이터가 없는 경우 Realm 객체 스키마를 App Services 스키마로 변환할 수 있습니다.
Atlas App Services 스키마에서 Realm 객체 스키마 생성하기: 사용자의 MongoDB Atlas 클러스터에 이미 데이터가 있다면 MongoDB가 해당 데이터를 샘플링하여 스키마를 생성합니다. 그런 다음 Atlas App Services가 Realm SDK로 해당 스키마를 Realm 객체 스키마로 변환하여 Atlas Device SDK로 모바일 애플리케이션에서 사용할 수 있습니다.
어떤 접근 방식을 사용하든, 각 데이터 모델을 사용하도록 Atlas 클러스터와 모바일 애플리케이션을 모두 구성하면 서버와 클라이언트 간에 데이터 모델에 대한 변경 사항이 자동으로 업데이트됩니다.
전제 조건
스키마를 만들려면 앱에 연결된 데이터 소스가 하나 이상 있어야 합니다.
그러나 서버리스 인스턴스 또는 연합 데이터베이스 인스턴스와의 동기화는 사용할 수 없습니다.
Realm 객체 모델에서 App Services 스키마 생성
모바일 클라이언트 SDK를 통해 Realm 객체 스키마를 변경하거나 정의할 수 있습니다. Realm 객체 스키마에 대한 변경은 개발 모드가 활성화된 경우에만 허용됩니다. App Services는 이러한 변경 사항을 App Services 스키마의 Realm 객체 스키마에 반영합니다.
Realm 객체 스키마 생성과 관련된 정보는 Atlas Device SDK용 설명서를 참조하세요.
Realm 객체 스키마 편집
애플리케이션을 계속 개발해 나가는 과정에서 변경 사항에 따라 다양한 데이터 유효성 검사 규칙을 실행하도록 데이터 모델을 수정해야 합니다. Development Mode가 켜져 있는 동안에는 클라이언트 코드에서 Realm 객체 스키마를 편집할 수 있습니다. 데이터 유효성 검사는 Development Mode가 꺼져 있을 때 실행되므로 Development Mode가 켜져 있지 않을 때는 App Services에서 Realm 객체 스키마의 변경 사항을 받아들이지 않습니다.
중요
Primary Key _id 필수
Atlas Device Sync로 작업하려면 데이터 모델에 _id
(이)라는 프라이머리 키 필드가 있어야 합니다. _id
의 유형은 string
, int
또는 objectId
일 수 있습니다.
예시
소셜 미디어 애플리케이션을 개발하고 있는 그룹이 있습니다. 이 그룹이 애플리케이션을 처음 개발할 때 사용자의 생일은 사용자 데이터 모델의 필수 필드였습니다. 그러나 저장되는 사용자 데이터의 양에 대한 개인 정보 보호 문제로 인해 경영진은 사용자의 생일 필드를 선택 필드로 만들도록 요청하게 되었습니다. 애플리케이션 개발자는 App Services UI에서 Development Mode 기능을 활성화한 다음 클라이언트 코드 내에서 사용자 모델을 편집합니다.
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 })
Realm 객체 스키마 변경 사항으로 App Services 스키마 업데이트
Development Mode이(가) 켜져 있는 동안에는 App Services가 데이터 모델에 대한 쓰기 유효성을 검사하지 않으므로 Realm 객체 모델을 자유롭게 업데이트할 수 있습니다. Development Mode을(를) 끄면 MongoDB App Services는 자동으로 App Services 스키마를 업데이트하고 이를 기반으로 Atlas 클러스터에 대한 데이터 유효성 검사를 시행하기 시작합니다.
Sync 화면에서 Development Mode 옆에 있는 슬라이더를 클릭해 Development Mode를 끕니다. UI는 개발 모드가 꺼진 상태임을 의미합니다.
참고
모바일 클라이언트 코드에서 향후 데이터 모델 업데이트를 수행하려면 이 절차를 다시 수행하면 됩니다.
App Services 스키마에서 Realm 객체 스키마 생성
App Services 스키마 정의
먼저 App Services 스키마가 정의되어 있는지 확인합니다. App Services는 이 App Services 스키마를 Realm Object Schema로 변환하여 모바일 애플리케이션에서 구성하고 활용할 수 있도록 합니다.
다음 요구 사항에 유의하세요.
App Services 스키마에는
_id
라는 기본 키 필드가 반드시 있어야 합니다._id
는string
,int
,objectId
유형일 수 있습니다.스키마 개체 유형 이름은 57 UTF-8 문자를 초과할 수 없습니다.
Realm 객체 스키마로 Realm 열기
생성된 Realm Object Schema(Realm 객체 스키마)는 클라이언트 애플리케이션에서 사용할 수 있습니다. 데이터 모델로 데이터 유효성 검사 실행을 시작하려면 Realm Object Schema(Realm 객체 스키마)를 사용하여 영역을 열면 됩니다. 이렇게 하면 모바일 클라이언트에서 부적절한 데이터가 데이터베이스에 입력되는 것을 방지할 수 있습니다.
모바일 애플리케이션 코드에 통합하려는 Object Model(객체 모델)에 대한 Realm Object Schema(Realm 객체 스키마)의 오른쪽에 있는 Copy를 클릭하세요. 그러면 선택한 SDK의 Realm Object Schema(Realm 객체 스키마) 코드가 클립보드로 복사됩니다.
IDE에서 모바일 애플리케이션 코드를 열고 Realm Object Schema(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 })
Realm 객체 스키마 생성과 관련된 정보는 Atlas Device SDK용 설명서를 참조하세요.
추가 읽기
이러한 스키마가 서로 매핑되는 방식에 대해 자세히 알아보려면 데이터 모델 매핑을 참조하세요.
기존 Sync 데이터 모델을 업데이트하려면 Update Your Data Model(데이터 모델 업데이트)을 참조하세요.
동기화된 클러스터의 컬렉션에 대한 스키마를 정의하는 방법을 알아보려면 스키마 정의 및 적용을 참조하세요.