Parse에서 데이터간의 관계 설정 방법 : Point, Relation, Array, Table


(이종은(Jong Lee)) #1

Parse에는 데이터 간의 관계를 지정하는 방법에 대해 잘 설명되어 있는 동영상이 있습니다.
비록 4년전 동영상이긴 하지만 Parse에서 관계 설정하는 방법을 이해하는데 많은 도움이 되었던 영상입니다.

Relation Type 사용시 참고 사항

이 동영상에 나와있지 않은 최근에 한가지 알게 된 새로운 사실이 있어 공유해봅니다.

위 동영상을 보면 Relation Type을 이용한 지정의 경우 대량의 데이터를 다루기에 좋다고 나와있습니다. 하나씩 관계를 무수히 추가하는 상황(예. 댓글)에서는 Relation이 매우 적절합니다. 댓글이 1만개 달리고 최근 댓글 100개만 불러와야하는 상황이 필요하다면 Relation이 매우 적절합니다. 왜냐하면 Relation은 별도의 query로 가져오기 때문에 subset이 필요한 경우에 사용하기 좋습니다.

댓글처럼 차근차근 관계가 추가되는 경우가 아닌 한번에 대량으로 관계를 지정하는 경우(예. 이메일에서 수신인에 엄청 많은 주소를 넣는 경우) Relation Type은 생성시 아주 오랜 시간이 걸립니다. 즉 Relation Column에 한번의 Save로 대량의 object를 추가하는 경우 CPU사용률이 100%가 되면서 save가 완료되기까지 아주 오래 걸립니다.(몇 천개만 추가해도 100%에 도달합니다. :scream:) 특별히 관계의 subset이 필요한 경우가 아니라면 Array를 이용하세요. 특별한 지연없이 저장됩니다.

제가 파악한 내용은 여기까지 입니다. 혹시 더 좋은 방법이 있다며 알려주세요.^^


(InGrowth) #2

Array 필드에 여러 class의 pointer를 담을 수 있고, 이를 include로 한번에 부를 수 있어서, 너무 너무 너무 너무 좋아요!!!


(이종은(Jong Lee)) #3

@DongWoo_Gim array의 경우 넣는 개수가 엄청 많으면 cloumn의 데이터 길이 제한에 걸릴텐데 데이터 제한이 얼마인지 아세요?


(이종은(Jong Lee)) #4

기록 차원에서 남겨봅니다.

Array에서 편리한 점은

  • include, select 까지 편하게 할 수 있다. select는 그냥 다음과 같이 하면 됩니다.
// userArray는 pointer를 넣은 배열인데. user의 전체 정보가 아닌 value 컬럼만 가져올 경우
query.select('userArray.value');
  • matchesQuery가 동작합니다. (relation에서는 동작안함)
  • pointer를 중복 없이 할 경우 addUnique를 쓰면 잘 동작합니다.