Docs Menu
Docs Home
/ /
Atlas Device SDK
/

모델 데이터 - Node.js SDK

이 페이지의 내용

  • 객체 유형 및 스키마
  • Realm 스키마
  • 관계

모든 Realm 객체 는 특정 객체 유형 을 준수하며, 이는 기본적으로 사전 정의된 스키마 를 사용하여 해당 유형의 객체에 대한 속성 및 관계 를 정의하는 클래스입니다. Realm 은 영역 의 모든 객체가 해당 객체 유형의 스키마 를 준수하도록 보장 하고 객체가 생성, 수정 또는 삭제될 때마다 객체의 유효성을 검사합니다.

Realm 객체는 기본적으로 일반적인 JavaScript 객체 와 유사하지만 스키마 유효성 검사 및 실시간 쿼리 와 같은 몇 가지 추가 기능도 제공합니다. Node.js SDK 메모리는 Realm 객체를 네이티브 JavaScript 객체에 직접 매핑하므로 ORM 와 같은 특별한 데이터 액세스 라이브러리를 사용할 필요가 없습니다. . 대신 다른 객체 와 마찬가지로 Realm 객체로 작업할 수 있습니다.

다음 클래스에는 Car id, make, modelmiles 속성을 가진 Realm 객체 유형을 정의하는 스키마가 포함되어 있습니다. 또한 기본 키를 정의합니다.

class Car extends Realm.Object {
static schema = {
name: "Car",
properties: {
_id: { type: "objectId", default: () => new Realm.BSON.ObjectId() },
make: "string",
model: "string",
miles: "int?",
},
primaryKey: "_id",
};
}

영역 스키마 는 영역에 포함될 수 있는 유효한 객체 스키마 목록입니다. 모든 Realm 객체는 해당 Realm의 스키마에 포함된 객체 유형을 준수해야 합니다.

영역을 열 때 영역에 이미 데이터가 포함되어 있는 경우 Realm은 각 객체의 유효성을 검사하여 해당 유형에 대한 객체 스키마가 제공되었는지, 그리고 스키마에 지정된 모든 제약 조건을 충족하는지 확인합니다.

자동차 및 제조업체에 대한 기본 데이터가 포함된 Realm은 다음과 같은 스키마를 사용할 수 있습니다.

class Manufacturer extends Realm.Object {
static schema = {
name: "Manufacturer",
properties: {
_id: "objectId",
// A manufacturer that may have many cars
cars: "Car[]",
},
};
}
class Car extends Realm.Object {
static schema = {
name: "Car",
properties: {
_id: "objectId",
make: "string",
model: "string",
miles: "int?",
},
};
}

Realm 을 사용하면 앱의 객체 유형 간의 명시적인 관계를 정의할 수 있습니다. 관계 는 다른 Realm 객체 유형 을 참조하는 객체 속성 입니다. 속성 스키마에서 객체의 속성 을 다른 객체 유형으로 설정하여 관계를 정의할 수 있습니다.

관계는 영역의 다른 객체에 대한 직접 참조입니다. 관계형 데이터베이스에서처럼 관계를 정의하기 위해 브리지 테이블이나 조인을 만들 필요가 없습니다. 대신 관계를 정의하는 속성을 읽고 작성하여 관련 객체에 액세스할 수 있습니다.

Realm은 읽기 작업이 들어오면 느리게 실행됩니다. 관계 쿼리는 일반 속성을 읽는 것과 마찬가지로 성능이 뛰어납니다.

객체 간 관계에는 다음 세 가지 주요 유형이 있습니다.

참고

Realm 및 기타 데이터베이스 비교

객체에는 다른 객체에 대한 직접 참조가 포함되는 경우가 많습니다. 객체 및 참조로 작업할 때 데이터베이스 저장 에서 애플리케이션 메모리로 복사하는 경우가 많습니다. 이 상황에서는 개발자 가 메모리에 복사할 항목을 선택할 수 있습니다.

  • 참조된 객체 전체를 미리 복사할 수 있습니다. 즉, 참조된 모든 데이터를 항상 빠르게 사용할 수 있지만 많은 리소스를 사용할 수 있습니다. 사용 가능한 메모리의 양에 따라 실행 불가능할 수 있습니다.

  • 필요한 경우 전체 객체를 쿼리하는 데 사용할 수 있도록 각 객체에 대한 외래 키 값만 미리 복사할 수 있습니다. 이러한 참조 조회는 메모리 효율적입니다. 그러나 더 많은 쿼리 코드가 필요하고 조회가 너무 많으면 애플리케이션 속도가 느려질 수 있습니다.

Realm의 쿼리 아키텍처는 메모리 사용량과 계산 오버헤드 간의 절충을 피합니다. 대신 Realm 쿼리는 디스크의 관련 객체와 해당 속성을 직접 참조할 수 있습니다.

돌아가기

Realm 암호화