Search

Firestore 데이터 모델링 Tip

Firestore 쿼리 속도

Firestore는 컬렉션의 데이터 양이 쿼리 성능에 영향을 미치지 않는다. 따라서 컬렉션의 10Gb 데이터에서 10Mb의 데이터를 얻는 경우 10Tb 컬렉션에서 동일한 10Mb를 가져올 때와 동일한 시간이 소요됩니다.

Collection

컬렉션 제약조건

1.
컬렉션에는 도큐먼트(문서)만 저장될 수 있다.
2.
도큐먼트의 이름은 고유한 값이다. (중복 X)
3.
도큐먼트에 도큐먼트 저장 불가
1.
도큐먼트를 만들기 이전에 컬렉션이 존재해야한다.
2.
컬렉션의 모든 도큐먼트가 삭제되면 해당 컬렉션은 존재 X

도큐먼트에 중첩 객체를 저장하는 법 ( array, map )

크게 3가지가 있다.
1.
중첩 데이터 도큐먼트
2.
하위 컬렉션
3.
루트 레벨 컬렉션

1. 중첩 데이터 도큐먼트

비교적 정적인 특성을 갖는 중첩 객체 저장에 용이
중첩 객체가 많아지면 많아질 수록 도큐먼트는 점점 무거워진다.
채팅 메세지 같은 경우에는 적합하지 않다

2. 컬렉션 - 하위 컬렉션

비교적 동적인 특성을 갖는 중첩 객체 저장에 용이
각 도큐먼트에 각각 하위 컬렉션을 만들어 줄 수 있다.
데이터의 계층 구조화 → 액세스가 쉬워진다.
다른 컬렉션과 연결되어야 하는 경우,

3. 컬렉션 - 루트 레벨

빠른 쿼리 속도가 필요한 경우 용이
다른 루트 수준 컬렉션과의 원활한 연결
비교적 동적인 특성을 갖는 중첩 객체 저장에 용이
데이터베이스가 점점 커지면 데이터 계층화가 필요해질 수 있다.

정규화 & 비정규화

정규화 → 중복 최소화

데이터의 중복, 데이터의 모순을 줄이기 위한 테크닉이다.
정규화를 사용하면 테이블 수가 증가한다.
1.
하위 컬렉션 사용
장점
1.
중복 데이터의 감소 → 처리속도 증대
2.
훨씬 더 뛰어난 유연성과 적응력
3.
보안

비정규화 → 읽는 시간 최적화

NoSQL 데이터베이스에서 자주 사용되는 기술
장점
1.
쿼리 성능 향상
단점
1.
중복 데이터 증가