[Firebase]데이터베이스 비교(Realtime vs Cloud Firestore)

2해승·2023년 2월 27일
0

파이어베이스는 실시간 데이터 동기화를 지원하며 클라이언트에서 액세스할 수 있는 클라우드 기반 2가지의 데이터베이스 솔루션을 제공한다.


[Realtime Database (실시간 데이터베이스)]
Firebase의 기존 데이터베이스로, 여러 클라이언트에서 실시간으로 상태를 동기화해야하는 모바일 앱을 위한 효율적이고 지연 시간이 짧은 솔루션

[Cloud Firestore]
모바일 앱 개발을 위한 Firebase의 최신 데이터베이스로서 실시간 데이터베이스를 바탕으로 더욱 직관적인 새로운 데이터 모델을 선보인다.
실시간 데이터베이스보다 풍부하고 빠른 쿼리와 원활한 확장성을 제공한다.

Realtime Database(실시간 데이터베이스)

1. 비관계형 클라우드 데이터베이스
-기존의 관계형 데이터베이스와 다른 접근 방식을 가진다.
-관계형의 table -> 비관계형 collection, 관계형의 record -> 비관계형 Document가 담당한다.

2. 실시간이 가능하다.
-필요할 때 마다 데이터에 접근하는 방식이 아닌 동기화 방식을 사용한다.

3. 오프라인 상태에서도 데이터를 유지할 수 있다.
-오프라인 상태의 경우 APP 로컬에 저장하고 있다가 네트워크에 연결되면 로컬에 저장했던 데이터를 동기화 시킨다.

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


Cloud Firestore

실시간 데이터베이스를 바탕으로 나온 모델이기 때문에 위에서 언급된 4가지 기능은 똑같이 제공된다.

1. 유연성
-Cloud Firestore 데이터 모델은 유연한 계층적 데이터 구조를 지원한다.

2. 표현형 쿼리
-쿼리를 사용해 개별 문서를 가져오거나 쿼리 매개변수와 일치하는 컬렉션의 모든 문서를 가지고올 수 있다.


Realtime Database vs Cloud Firestore

데이터베이스를 비교해보기 전에 공통점을 확인해보자면
NoSQL 데이터베이스이며, 두 데이터베이스 기능 모두 쿼리를 통해 데이터를 정렬하고 필터링하여 사용자에게 제공한다는 공통점이 있다.

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



서비스 선택시 고려사항 정리

[Realtime Database]

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

[Cloud Firestore]

  • 고급 쿼리, 정렬, 트랜젝션
  • 대용량 데이터가 자주 읽힘
  • 구조화된 컬렉션
  • 단일 데이터베이스





[참고]https://firebase.google.com/docs/firestore/rtdb-vs-firestore?hl=ko
[참고]https://iamthejiheee.tistory.com/246

profile
노드 취준생

0개의 댓글