Firebase Realtime Database와 Cloud Firestore는 모두 Google의 Firebase플랫폼에서 제공하는 NoSQL 기반의 클라우드 데이터베이스 서비스 이다.
NoSQL 즉, 비관계형 데이터베이스로 데이터 구조를 테이블과 관계로 표현하지 않는다.
공통 특징
NoSQL 데이터 베이스
- 관계형 데이터 베이스가 아닌 NoSQL 데이터베이스로, 자유로운 데이터 모델과 유연한 스키마 제공
실시간 동기화
- 데이터의 변경이 발생하면 즉시 모든 클라이언트에 업데이트가 전송되어 데이터를 동기화
- 여러 사용자 간의 실시간 업데이트에 적합
오프라인 동작
- 네트워크 연결이 끊어진 경우에도 로컬에 저장
- 오프라인 상태에서도 앱이 동작하며, 네트워크가 연결되면 변경 사항이 서버로 전송되고 동기화 됨
서버 없어 액세스
- 클라이언트에서 직접 데이터베이스에 액세스할 수 있어, 서버 없이도 데이터 관리 가능
비교
Firebase Realtime Database
1. 데이터 모델
- JSON 형식의 모델 사용하여 중첩된 데이터를 효과적으로 다룰 수 있음
- 데이터는 경로에 저장되고, 해당 경로의 변경 시 항위 경로에 연결된 모든 클라이언트에게 실시간 업데이트 제공
2. 실시간 업데이트
- 데이터의 변경이 발생하면 해당 경로에 연결된 클라이언트에 실시간으로 업데이트 제공
- 간단한 구조의 데이터와 실시간 업데이트가 필요한 제품에 적합
3. 실시간 규칙(Realtime Rules)
- Firebase 실시간 규칙을 사용하여 데이터베이스에 대한 읽기 및 쓰기 권한을 정의
Cloud Firestore
1. 데이터 모델
- 문서=컬렉션 모델 사용, 개별 문서는 키-값 쌍의 집합으로 구성
- 복잡한 쿼리와 조인 작업을 지원하여 효과적으로 검색하고 구성 가능
2. 복잡한 쿼리
- NoSQL의 장점인 유연성을 유지하면서 복잡한 쿼리 수행 가능
- 여러 컬렉션에 대한 조인도 가능하며, 복잡한 데이터 구조를 다둘 때 유리
3. 보안 규칙(Security Rules)
- 보안 규칙을 사용하여 데이터베이스에 대한 읽기 및 쓰기 권한을 정의, Firebase Authentication과 통합하여 사용자 인증을 강화
어떤 것을 사용할까?
- Firebase Realtime Database
- 중첩된 데이터 및 실시간 업데이트에 중점을 둔 경우
- 간단한 구조의 데이터를 다루거나, 실시간 업데이트가 필수적인 경우
- Cloud Firestore
- 복잡한 쿼리 및 조인이 필요한 경우
- 복잡한 데이터 모델이나 다양한 쿼리가 필요한 경우
마치면서
각 데이터베이스 서비스는 프로젝트 특성에 따라 선택되어야 하며, 각각의 강점을 살려 적절한 용도로 사용하자.
그런데 나는 Firestore가 좋다... ㅎ