파이어베이스는 실시간 데이터 동기화를 지원하며 클라이언트에서 액세스할 수 있는 클라우드 기반 2가지의 데이터베이스 솔루션을 제공한다.
[Realtime Database (실시간 데이터베이스)]
Firebase의 기존 데이터베이스로, 여러 클라이언트에서 실시간으로 상태를 동기화해야하는 모바일 앱을 위한 효율적이고 지연 시간이 짧은 솔루션
[Cloud Firestore]
모바일 앱 개발을 위한 Firebase의 최신 데이터베이스로서 실시간 데이터베이스를 바탕으로 더욱 직관적인 새로운 데이터 모델을 선보인다.
실시간 데이터베이스보다 풍부하고 빠른 쿼리와 원활한 확장성을 제공한다.
1. 비관계형 클라우드 데이터베이스
-기존의 관계형 데이터베이스와 다른 접근 방식을 가진다.
-관계형의 table -> 비관계형 collection, 관계형의 record -> 비관계형 Document가 담당한다.
2. 실시간이 가능하다.
-필요할 때 마다 데이터에 접근하는 방식이 아닌 동기화 방식을 사용한다.
3. 오프라인 상태에서도 데이터를 유지할 수 있다.
-오프라인 상태의 경우 APP 로컬에 저장하고 있다가 네트워크에 연결되면 로컬에 저장했던 데이터를 동기화 시킨다.
4. 서버 없이 앱 만으로도 동작할 수 있다.
-앱에서 직접 Firebase Realtime Database에 접근할 수 있기때문에 별도의 서버 없이 동작할 수 있다.
실시간 데이터베이스를 바탕으로 나온 모델이기 때문에 위에서 언급된 4가지 기능은 똑같이 제공된다.
1. 유연성
-Cloud Firestore 데이터 모델은 유연한 계층적 데이터 구조를 지원한다.
2. 표현형 쿼리
-쿼리를 사용해 개별 문서를 가져오거나 쿼리 매개변수와 일치하는 컬렉션의 모든 문서를 가지고올 수 있다.
데이터베이스를 비교해보기 전에 공통점을 확인해보자면
NoSQL 데이터베이스이며, 두 데이터베이스 기능 모두 쿼리를 통해 데이터를 정렬하고 필터링하여 사용자에게 제공한다는 공통점이 있다.
Realtime Database | Cloud Firestore |
---|---|
데이터를 하나의 큰 json 덩어리로 저장 | 문서 컬렉션으로 저장 |
하나의 쿼리에는 필터링/정렬 하나만 가능함 | 하나의 쿼리에 정렬과 필터링 모두 가능함(복합적인 쿼리 가능) |
깊고 좁은 쿼리제공(결과값이 갖는 하위값 모두 반환하기 때문에 하위값에도 접근 가능함) | 얕고 넓은 쿼리제공(결과값이 갖는 컬렉션의 문서만 반환하고 해당 문서가 하위에 컬렉션을 갖고 있더라도 반환 안함) |
데이터 세트의 크기가 커질수록 쿼리 성능이 떨어짐(데이터 크기에 영향 받음) | 데이터 세트의 크기는 쿼리 성능에 직접적인 영향 없음(그러나 요청 쿼리 결과에 따라 쿼리 성능이 영향 받을 수는 있음) |
최대한 데이터 평면화 필요(하위값도 모두 반환하기 때문에 최대한 평면적인 구조가 필요함) | 하위값은 반환하지 않기때문에 평면적인 구조는 영향이 적음 |
[Realtime Database]
[Cloud Firestore]
[참고]https://firebase.google.com/docs/firestore/rtdb-vs-firestore?hl=ko
[참고]https://iamthejiheee.tistory.com/246