2017-11-15 9 views
2

아주 많은 양의 작은 itemDocs를 포함하는 itemsCollection 컬렉션이 있습니다. 각 itemDoc에는 통계, subcollection이 있습니다. 각 itemDoc에는 어느 사용자가 itemDoc를 소유하고 있는지를 나타내는 "owner"필드가 있습니다.Firebase Cloud Firestore 데이터베이스를 사용하여 대규모 데이터 세트에서 중복성이나 간단한 쿼리를 사용해야합니까?

itemsCollection 
    itemDoc1 
     statistics 
    itemDoc2 
     statistics 
    itemDoc3 
     statistics 
    itemDoc4 
     statistics 
    ... 

기본 사용자 정보를 포함하는 usersCollection 컬렉션도 있습니다.

usersCollection 
    user1 
    user2 
    user3 
    ... 

각 itemDoc은 특정 사용자에 속하기 때문에 각 사용자에게 자신이 소유 한 itemDocs를 표시해야합니다. 나는 쿼리를 사용하고있다 :

db.collection("itemsCollection").where("owner", "==", "user1") 

이것이 효과적으로 확장 될지 궁금하다. itemsCollection이 수백만 건의 레코드가 될 때마다? 그렇지 않다면, 각 itemDoc과 그것의 통계적인 subcollection을 사용자 문서의 subcollection으로 복사하는 최선의 해결책인가? 아니면 내가 다른 것을해야 하는가?

답변

0

Firebase의 제품 관리자 인 Alex Dufter는 Firebase Dev Summit 2017의 일에서 Firestore가 여러 해 동안 Firebase Realtime Database에 대해 여러 가지 방법으로 영감을 받았다고 설명했습니다. 그들은 다음과 같은 두 가지 유형의 문제에 직면했다.

  1. 데이터 모델링 및 쿼리. Firebase Realtime Database는 usypaly가 중복 데이터 또는 cliend-side 필터링을 포함하기 때문에 여러 속성을 쿼리 할 수 ​​없습니다. 우리는 이미 그것이 어떤 종류의 지저분한 것이라는 것을 이미 알고 있습니다.

  2. 실시간 데이터베이스는 자동으로 확장되지 않습니다.

이 새로운 제품을 사용하면 이제 한 줄의 코드를 변경하지 않고도 응용 프로그램을 빌드하고 행성 규모로 확장 할 수 있다고합니다. Cloud Firestore는 모바일 및 웹 앱 개발을 위해 특별히 제작 된 NoSQL database입니다. 모든 종류의 앱을 제작하고 크기에 상관없이 확장 할 수있는 유연성을 제공합니다.

새 데이터베이스가이 iusses를 알고 있기 때문에 duplication data is not nedeed anymore입니다. 따라서 데이터가 수백만 개의 레코드로 증가하더라도이 코드를 사용하는 것에 대해 걱정할 필요가 없습니다. will scale automatically. 하지만 기억해야 할 것은 여러 조건을 사용하는 경우 Firebase 콘솔에 색인을 추가하는 방법으로 인덱스를 사용하는 것입니다. 다음은 공식 문서의 두 가지 간단한 예입니다.

citiesRef.whereEqualTo("state", "CO").whereEqualTo("name", "Denver"); 
citiesRef.whereEqualTo("state", "CA").whereLessThan("population", 1000000);