모델 데이터 - React Native SDK
모든 Realm 객체는 특정 객체 유형 을 준수합니다. 객체 유형은 사용자가 정의한 클래스로, 사전 정의된 스키마를 사용하여 해당 유형의 객체에 대한 속성 및 관계 를 포함합니다.
Realm은 Realm의 모든 객체가 해당 객체 유형의 스키마를 준수하도록 보장하고 객체가 생성, 수정 또는 삭제될 때마다 객체의 유효성을 검사합니다.
Realm 객체는 기본적으로 일반적인 JavaScript 객체와 유사하지만 스키마 유효성 검사 및 라이브 쿼리와 같은 몇 가지 추가 기능도 제공합니다.
React Native SDK 메모리는 Realm 객체를 네이티브 JavaScript 객체에 직접 매핑하므로 ORM 와 같은 특별한 데이터 액세스 라이브러리를 사용할 필요가 없습니다. . 대신 다른 객체 와 마찬가지로 Realm 객체로 작업할 수 있습니다.
Realm 스키마
영역 스키마 는 영역에 포함될 수 있는 유효한 객체 스키마 목록입니다. 모든 Realm 객체는 해당 Realm의 스키마에 포함된 객체 유형을 준수해야 합니다.
영역을 열 때 영역에 이미 데이터가 포함되어 있는 경우 Realm은 각 객체의 유효성을 검사하여 해당 유형에 대한 객체 스키마가 제공되었는지, 그리고 스키마에 지정된 모든 제약 조건을 충족하는지 확인합니다.
@realm/react
을(를) 사용하여 개별 객체 스키마를 RealmProvider
또는 createRealmContext()
에 전달하여 Realm 스키마를 정의합니다.
import Profile from './Models/Profile'; import {createRealmContext} from '@realm/react'; export const SyncedRealmContext = createRealmContext({ // Pass all of your models into the schema value. schema: [Profile], });
관계
영역에 있는 객체 간의 관계를 정의할 수 있습니다. Realm은 관계를 Realm에서 주어진 유형의 다른 객체를 가리키는 객체 속성으로 모델링합니다. 값이 다른 객체 유형인 유형의 스키마에서 속성을 선언하여 유형 수준에서 관계를 정의합니다.
관계 쿼리는 일반 속성만큼 성능이 뛰어납니다. 관계는 다른 객체에 대한 직접 참조이므로 관계형 데이터베이스에서처럼 조인과 복잡한 모델을 사용하여 정의하고 사용할 필요가 없습니다. 대신 관계 속성을 직접 읽고 작성하여 관련 객체에 액세스할 수 있습니다.
객체 간 관계에는 다음 세 가지 주요 유형이 있습니다.
참고
Realm 및 기타 데이터베이스 비교
객체에는 다른 객체에 대한 직접 참조가 포함되는 경우가 많습니다. 객체 및 참조로 작업할 때 일반적으로 데이터베이스 스토리지에서 애플리케이션 메모리로 데이터를 복사합니다. 이 상황에서는 개발자가 메모리에 복사할 항목을 선택할 수 있습니다.
참조된 모든 객체를 미리 메모리에 복사할 수 있습니다. 즉, 모든 참조 데이터는 항상 빠르게 사용할 수 있지만 많은 리소스를 사용할 수 있습니다. 시스템의 메모리가 제한된 경우에는 실행 불가능할 수 있습니다.
각 객체의 외래 키 값만 복사할 수 있습니다. 나중에 필요할 때 키를 사용하여 전체 객체를 조회할 수 있습니다. 이러한 "지연" 조회는 모든 참조 객체를 미리 복사하는 것보다 메모리 효율적입니다. 그러나 더 많은 쿼리 코드를 유지 관리하고 런타임 조회를 사용해야 하므로 앱 속도가 느려질 수 있습니다.
Realm의 쿼리 아키텍처는 메모리 사용량과 계산 오버헤드 간의 균형을 피합니다. 대신 Realm 쿼리는 디스크의 관련 객체 와 해당 속성을 직접 참조할 수 있습니다.