2013-04-08 4 views
1

백만 개의 항목과 백만 개의 사용자 목록을 가진 마스터 목록이 있고 각 사용자가 50 개의 항목으로 구성된 사용자 지정 정렬 된 하위 집합을 갖고 있다면 바로 모델링 할 수있는 방법이 될 것입니다. like :Firebase에서 정렬 된 목록을 관리하기위한 전략

items 
    [itemID] : { name : 'aaa', description : 'bbb', ... } 
    ... 

users 
    [userID1] : { 
     name : 'john', 
     token : 'xyz', 
     sortedItems : { 
      itemID1 : xx, 
      itemID2 : xx, 
      ... 
     } 
    } 

각 사용자는 필요한 순서에 따라 고유 한 sortedItem 컬렉션을 갖게됩니다. 이 문제는 전체 항목 데이터를 가져 오기 위해 항목 당 여러 개의 요청을 가져야한다는 것입니다. 정렬 된 목록에 대한 업데이트를 처리 한 후에는 마스터 목록을 쿼리하여 항목 데이터를 가져와야합니다. 큰 문제는 아니지만 권장 사항입니까?

또 다른 전략은 마스터 목록과 하위 목록에서 항목 데이터를 복제하거나 마스터 목록을 제거하는 것입니다. 그렇게하면 모든 데이터가 필요할 때 즉시 사용할 수 있습니다. 그 명백한 문제는 동기화입니다. 항목의 속성이 변경되면 어떻게됩니까? 모든 사용자의 sortedItems 목록을 반복하고 각 인스턴스를 업데이트해야합니다. 심각한 데이터 불일치를위한 방법입니다.

생각하십니까?

+1

내 github 프로젝트에서 이와 같은 색인을 사용하는 몇 가지 예를 확인할 수 있습니다. http://zenovations.github.io/FirebaseIndex/ – Kato

+0

매우 흥미로운 프로젝트입니다! 그것이 문자 그대로 정확히 내가하려고하는 것입니다. – Baz

답변

2

이것은 권장되는 방법입니다. 정규화되지 않은 시스템은 확장 가능한 시스템에서 매우 일반적이며 사용 사례에 적합해야합니다.

데이터 복제가 아닌 키만 복제하는 것이 좋습니다. 그렇게하면 동기화 문제가없고 모든 사람이 하나의 마스터 상태를 공유하게됩니다. 각 항목을로드 할 때 추가 왕복이 발생하지만 Firebase는 많은 콜백 및 캐싱 업데이트를 처리하는 것에 매우 영리하다는 점에 유의하십시오. 따라서 여전히 상당히 빠름을 알게 될 것입니다.

관련 문제