관계 스키마
14 분
이 가이드는 Back4app에서 관계형 스키마를 사용하는 방법을 설명합니다. 관련 클래스를 생성하고 Parse Server를 사용하여 효율적인 쿼리를 수행하는 방법을 포함합니다. 포인터와 관계를 효과적으로 사용하는 방법과 실용적인 예제를 배울 수 있습니다.
관계형 스키마란 무엇인가요?
관계형 스키마는 데이터를 서로 연결된 다양한 클래스로 구성합니다. Parse Server에서는 이러한 관계가 다음을 통해 관리됩니다:
- 포인터: 단일 객체를 직접 참조합니다.
- 관계: 여러 연결(다대다 관계)을 관리합니다.
이 도구들은 복잡한 쿼리를 효율적이고 일관되게 수행할 수 있게 해줍니다.
목표
이 가이드를 마치면 다음을 할 수 있게 됩니다:
- 포인터와 관계를 사용하여 클래스 간의 관계를 생성합니다.
- 연결된 데이터를 검색하기 위한 관계형 쿼리를 수행합니다.
- 더 나은 성능을 위해 스키마를 최적화합니다.
전제 조건
1 - 관련 클래스 만들기
실용적인 예: 주와 도시
도시가 주와 연관된 시스템을 모델링하고 싶다고 상상해 보세요:
- state_name 필드를 가진 State 클래스.
- city_name 필드를 가진 City 클래스와 State에 대한 포인터.
클래스 및 관계 생성
async function createStateAndCity() {
try {
// Create a State
const State = Parse.Object.extend('State');
const california = new State();
california.set('state_name', 'California');
const savedState = await california.save();
console.log(`State created with objectId: ${savedState.id}`);
// Create a City with a pointer to State
const City = Parse.Object.extend('City');
const losAngeles = new City();
losAngeles.set('city_name', 'Los Angeles');
losAngeles.set('state', savedState);
const savedCity = await losAngeles.save();
console.log(`City created with objectId: ${savedCity.id}`);
} catch (error) {
console.error('Error creating state and city:', error.message);
}
}
createStateAndCity();2 - 관련 데이터 쿼리하기
이제 데이터가 관련되었으므로, 이를 검색하기 위한 쿼리를 수행할 수 있습니다.
예제 1: 특정 주의 도시 가져오기
# Query State:
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
"https://parseapi.back4app.com/classes/State?where={\"state_name\":\"California\"}"
# Query Cities:
# Replace STATE_OBJECT_ID with the objectId from the state query.
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
"https://parseapi.back4app.com/classes/City?where={\"state\":{\"__type\":\"Pointer\",\"className\":\"State\",\"objectId\":\"STATE_OBJECT_ID\"}}"예제 2: 관련 도시와 함께 쿼리 상태
도시에 연결된 주를 반환하는 쿼리를 생성하십시오:
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
"https://parseapi.back4app.com/classes/City?where={\"state\":{\"$inQuery\":{\"className\":\"State\"}}}&include=state"모범 사례
Back4App의 Parse Server를 사용하여 관계형 스키마로 효과적으로 작업하려면 성능, 유지 관리 및 확장성을 보장하기 위해 다음 모범 사례를 따르십시오:
올바른 관계 유형 선택
- 포인터 사용 for 일대일 관계, 예를 들어 사용자를 프로필에 연결하는 경우.
- 관계 사용 for 다대다 관계, 예를 들어 프로젝트를 여러 작업에 연결하는 경우.
효율적인 쿼리 작성
- 사용하기 .include() 관련 데이터를 동일한 쿼리에서 로드하여 여러 요청의 필요성을 줄입니다.
- 결과 제한하기 limit() 및 skip()를 사용하여 한 번에 대량의 데이터 세트를 가져오는 것을 피합니다.
- 자주 쿼리되는 필드 인덱싱하기 검색 속도를 높입니다.
과도한 중첩 피하기
- 쿼리를 평탄하게 유지하기 복잡성을 줄이고 성능을 향상시킵니다. 중첩 쿼리는 가급적 적게 사용하고 필요할 때만 사용하세요.
복잡한 쿼리를 클라우드 코드로 오프로드하기
- 여러 관계가 포함된 복잡한 쿼리 또는 대량의 데이터 세트에 대해서는 클라우드 코드로 오프로드하여 클라이언트를 가볍고 반응성이 있도록 유지하세요.
결론
이 가이드에서는 클래스 간의 관계를 생성하고 Back4app에서 관련 객체를 쿼리하는 방법을 배웠습니다. 특정 SDK 문서를 계속 탐색하여 더 깊이 들어가세요!