2016-06-05 5 views
0

이 노드 내의 멤버 수가 언제 성능에 영향을 미치기 시작합니까?Firebase : 데이터 구조

예 노드

Groups 
    id_0 
     groupName: Bills Cooking 
     members 
     uid_0: true 
     uid_1: true 
     uid_2: true 

회원 그룹 내 키의 수가 너무 많은되고, 성능에 영향을 시작할 때 궁금하고있다.

각 그룹에는 연관된 모든 구성원에 대한 참조 ID가 들어 있습니다. 0 일 수도 있고 1000 개 이상일 수도 있습니다.

구성원 노드 (보이지 않음)는 자신이 속한 그룹을 나타내는 자체 참조를 갖습니다. 필자는 Firebase에서 데이터를 구조화하는 두 가지 방법 모두에서 참조 키를 사용하는 좋은 방법이라고 생각합니다.

테이블 뷰에 모든 그룹 이름을 나열하려면 모든 그룹 노드를 가져 와서 이름을 가져옵니다. 문제는 내가 모든 멤버 키를 동시에 가져 오는 것입니다. 10 개 정도면 괜찮습니다. 리팩터링 할 시점은 무엇인지 궁금합니다. 각 그룹에 100 개의 그룹과 1000 명의 사용자가있는 경우 많은 추가 데이터를 가져옵니다.

다른 노드를 생성하여이 문제를 피할 수 있다고 생각합니다.하지만이 방법으로 Firebase는 데이터 구조를 권장합니다. 자세한 here

감사로

답변

3

여기 대답에 열쇠 :

있는 tableview에있는 모든 그룹 이름을 나열 할 경우

100 개 그룹과 각각 1000 명의 사용자가있는 경우 그룹

각 그룹에 많은 사용자가 있더라도 그룹은 매우 작습니다. 이렇게 생각하면 ...

사용자가 로그인하면 속한 그룹을 반환하는 쿼리가 수행됩니다.

각 사용자가 좋은 사용자를 위해, 더 중요한 적은

(100)보다 그룹의 어떤 수를 반환합니다 (만약 그들이, 구조가 해제 필요한 것) 각 그룹의 구성원이 아닌 가정하면 경험에 따르면 한 번에 100 개의 그룹을 표시하지 않을 것입니다. 아마 15 정도.

응용 프로그램 메모리 공간이 걱정된다면 .ChatAdded를 사용하여 한 번에 모든 데이터를 반환하는 .Value를 통해 쿼리하는 대신 각 노드를 한 번에 하나씩 반환하는 쿼리를 사용하여 그룹 이름을 가져온 다음 나머지 데이터.

또 다른 생각은 그룹 이름을 분리하고 필요에 따라 코드를 살펴 보는 것입니다.

group_names 
     gid_0: Bills Cooking 
     gid_1: Jay's Big Band Extravagnza 
     gid_2: Kato's Karate Korner 

앱이 시작될 때만 100 개이므로 사전에 모두로드하십시오.사용자 노드에서 다음

users 
    uid_0 
    name: Jesse 
    groups: 
     gid_1: true 
     gid_2: true 

당신은 그가 1 군과 2에 속하는 그룹이 사전에서 이미 그 이름을 알고

할 groupName을 = groups_dict.objectForKey 사용자가 로그인 [ "gid_2"] // Kato 's Karate Korner