Realtime database VS Firestore 무엇을 써야할까?

Kim Young Jae·2023년 6월 16일
1

본 포스팅은 Firebase에서 제공되는 Realtime database 와 Firestore에 관해 과연 어떤 서비스를 써야 하는지, 둘의 차이점은 무엇인지 알아보는 지극히 개인적인 내용입니다.


Realtime database

1. 비관계형 클라우드 데이터베이스

  • 기존의 관계형 데이터베이스와 다른 접근 방식을 갖는다.
  • 관계형에서 table의 역할은 비관계형에서는 Collection이 담당. Record(관계형)는 Document(비관계형)이 담당한다.

2. 실시간이 가능하다.

  • 필요할 때 마다, HTTP 요청을 전송하고 응답 받아 데이터에 접근하는 방식이 아닌 동기화 방식을 사용한다.

3. 오프라인 상태에서도 데이터를 유지할 수 있다.

  • 오프라인 상태인 경우, App 로컬에 저장하고 있다가 네트워크가 연결되면 로컬에 저장했던 데이터를 동기화시킨다.

2. 서버 없이 앱 만으로도 동작할 수 있다.

  • 앱에서 직접 Firebase Realtime Database에 접근할 수 있기 때문에 별도의 서버 없이 동작할 수 있다.

Firestore

Firebase에서 제공하는 또 다른 데이터베이스로, 비교적 최근에 나온 기능이다.

위에서 언급한 4가지의 기능(비관계형 데이터베이스, 실시간, 오프라인 가능, 서버 없이 동작 가능)은 똑같이 제공된다.

홈페이지에서 제공하는 주요 기능 리스트이다.
유연성, 표현형 쿼리, 실시간 업데이트, 오프라인 지원, 확장형 설계


Realtime Database vs Cloud Firestore :: 차이점

Realtime DatabaseCloud Firestore
데이터를 하나의 큰 json 덩어리로 저장함문서 컬렉션으로 저장함.
하나의 쿼리에는 필터링/정렬 하나만 가능함하나의 쿼리에 정렬과 필터링 모두 가능함. (복합적인 쿼리 가능)
깊고 좁은 쿼리 제공 -> 결과값이 갖는 하위값 모두 반환하기 때문에 하위값에도 접근 가능함얕고 넓은 쿼리 제공 -> 결과 값이 갖는 컬렉션의 문서만 반환하고, 해당 문서가 하위에 컬렉션을 갖고 있더라도 반환 안함
데이터 세트의 크기가 커질수록 쿼리 성능 떨어짐 -> 깊고 좁은 쿼리를 제공하기 때문에 데이터 크기에 영향받음데이터 세트의 크기는 쿼리 성능에 직접적인 영향 없음 -> 하지만 요청 쿼리 결과에 따라 쿼리 성능이 영향 받을 수는 있음
최대한 데이터 평면화 필요함 -> 하위값도 모두 반환하기 때문에 최대한 평면적인 구조 필요함하위값은 반환하지 않기 때문에 평면적인 구조는 영향이 적음

그렇다면 나는 어떤 데이터베이스를 써야할까?

앱의 특성에 따라 권장하는 데이터베이스가 다르다.
각 데이터베이스별로 적합한 앱의 특성은 아래와 같다.

1. Realtime Database

  • 기본적인 데이터 동기화
  • 적은 양의 데이터가 자주 변경
  • 간단한 json 트리
  • 많은 데이터베이스

2. Cloud Firestore

  • 고급 쿼리, 정렬, 트랜젝션

  • 대용량 데이터가 자주 읽힘

  • 구조화된 컬렉션

  • 단일 데이터베이스

    권장 데이터베이스의 체크리스트를 통해서 확인 할 수 있다.

profile
프론트엔드 뭐시기 주로 하는 사람

0개의 댓글