Mobile 개발/Android&IOS

Firebase - Realtime Database와 Cloud Firestore 비교

히핑소 2020. 12. 25. 12:00
반응형

 

Firebase에서 database는 Realtime Database와 Cloud Firestore 두가지를 제공해주고 있습니다. 하나의 프로젝트로 두개 모두 사용할 수도 있고 하나만 선택해서 사용할수도 있습니다. 처음에는 realtime database가 먼저 서비스가 되었지만 여러 단점들 보완 및 성능이 개선되어 Cloud Firestore가 서비스되기 시작하였습니다.

 

차이점을 설명해놓은 페이지는 공식문서인 이 페이지를 참고 바랍니다.

큰 차이점을 요약하자면 데이터 모델, 쿼리, 확장성, 가격 정책을 꼽을 수 있습니다.

 

데이터 모델

Realtime database에서는 데이터를 하나의 큰 JSON 트리로 저장합니다. 그렇기 때문에 복잡한 계층적 데이터를 정규화 시켜서 정리하기가 쉽지 않습니다. 이런점들 때문에 중복 데이터가 많이 발생하여 관리하기가 비교적 어렵습니다.

Cloud Firestore는 문서와 컬렉션으로 이루어져 있습니다. 각 문서에는 키-값 쌍이 들어 있고, 작은 문서가 많이 모인 컬렉션을 저장하는데 최적화되어 있습니다. 그래서 NOSQL이지만 SQL 처럼 테이블처럼 관리하기게 용이합니다. 컬렉션과 문서는 Cloud Firestore에서 암시적으로 생성이 되니 사용자는 그저 path를 지정하고 데이터를 할당하기만 하면 됩니다. Firestore의 데이터 모델은 이 공식 페이지를 참고 바랍니다.

 

쿼리

쿼리에서의 큰 차이점은 크게 두가지가 있습니다. 첫번째로, Realtime database는 쿼리할때 정렬 및 필터링을 할 수는 있지만 동시에 조건문을 걸수는 없습니다. 그리고 기본적으로 해당 depth의 데이터를 반환할때 그 이하의 모든 depth의 데이터도 함께 반환이 됩니다. 데이터 정규화가 제대로 이루어지지 않은 데이터베이스라면 불필요하게 큰 데이터까지 매번 가져와야 하기 때문에 매우 심각한 성능 저하가 발생할수 있습니다. 반면 Cloud Firestore는 쿼리할때 정렬 및 필터링 조건문을 동시에 사용이 가능합니다. 또한 쿼리가 얕아서 특정 컬렉션이나 컬렉션이 가지고 있는 문서만 반환하여 불필요한 하위 데이터까지 반환하는 성능 문제는 발생하지 않습니다.

물론 쿼리 조건문을 잘못 지정해서 불필요한 하위 컬렉션까지 반환되는 경우가 발생될수는 있으니 조심하셔야합니다.

그리고 반환시 문서 전체가 반환되고 특정 키-값만 반환될수는 없습니다.

 

확장성

realtime database의 단일 데이터베이스는 동시 연결이 약 100,000개, 초당 쓰기 약 1,000회까지 확장됩니다. 추가로 확장하려면 데이터를 여러 데이터베이스로 샤딩해야 합니다. 반면 cloud firestore는 샤딩을 이용하지 않고 자동으로 수행이 됩니다. 현재 확장 한도는 동시 연결 수 약 1,000,000개, 초당 쓰기 10,000회입니다. 개별 문서 또는 색인의 쓰기 속도에 적용되는 제한이 있는데 이 공식 문서에서 확인 가능합니다.

 

가격

Realtime database는 용량, 대역폭(다운로드 크기)에 대해 주로 과금을 하고 있습니다. 반면 Firestore는 용량, document CRUD 연산 횟수에 따라 과금을 주로 하고 있습니다.

 

만약, 큰 단위의 데이터 요청이 자주 발생한다면 Firestore가 유리 할 것이고, 가벼운 데이터이지만 문서에 대한 CRUD작업이 자주 발생하는 앱이라면 realtime database가 더 유리할 것입니다. 

 

아래 가격표 참고 바랍니다.

 

실시간 데이터베이스가 더 서비스 기간이 오래되었지만, Cloud Firestore가 업그레이드 된 후속작이라는 느낌이 강하게 들어서 가급적 Firestore 사용하기를 권장합니다. 특히 쿼리 부분은 차이가 많이 나기 때문에 꼭 realtime database를 사용해야 하지 않는다면 firestore를 사용하는게 좋을것 같습니다.



출처: https://softwaree.tistory.com/39

반응형