매우 저렴하고(여기서 유료 SDK 탈락) 자체 채팅 서버를 제대로 구축할 시간을 벌 수 있어(여기서 자체 서버 탈락) 부담이 줄기 때문이다.
실시간 데이터베이스와 Cloud Firestore는 모두 NoSQL 데이터베이스입니다.
• NoSQL기반 데이터베이스의 Document DB는, 현재 많이 사용되는 오라클이나 MySQL 같은 관계형 데이터베이스보다 빠르고 간편하다.
Cloud Firestore는 앱에서 많이 사용되는 데이터를 캐시하기 때문에 기기가 오프라인 상태가 되더라도 앱에서 데이터를 쓰고 읽고 수신 대기하고 쿼리할 수 있습니다.
쿼리할때 정렬 및 필터링할 수는 있지만 동시에 조건문을 걸 수는 없다.
그리고
큰단위 데이터 요청이 자주 발생한다면 firestore가 유리 할 것이고
가벼운 crud작업이 자주 발생하는 앱이라면 realtime database가 더 유리할 것
쿼리부부은 차이가 많이 나기 때문에 firestore를 사용하는 것이 좋을것 이다.
쿼리를 통해 데이터베이스에서 데이터를 검색, 정렬 및 필터링합니다.
실시간 데이터베이스 | 클라우드 파이어스토어 |
---|
| 제한된 https://firebase.google.com/docs/database/web/lists-of-data?authuser=1&hl=ko#sorting_and_filtering_data 이 있는 심층 쿼리.
• 쿼리는 속성을 정렬 하거나 필터링할 수 있지만 둘 다 할 수는 없습니다.
• 쿼리는 기본적으로 깊습니다. 항상 전체 하위 트리를 반환합니다.
• 쿼리는 JSON 트리의 개별 리프 노드 값까지 모든 세분성에서 데이터에 액세스할 수 있습니다.
• 쿼리에는 인덱스가 필요하지 않습니다. 그러나 특정 쿼리의 성능은 데이터 세트가 커짐에 따라 저하됩니다. | 복합 https://firebase.google.com/docs/firestore/client/query-data?authuser=1&hl=ko 을 사용한 인덱싱된 쿼리.
• 필터를 연결하고 속성에 대한 필터링과 정렬을 단일 쿼리로 결합할 수 있습니다.
• 쿼리는 얕습니다. 특정 컬렉션 또는 컬렉션 그룹의 문서만 반환하고 하위 컬렉션 데이터는 반환하지 않습니다.
• 쿼리는 항상 전체 문서를 반환해야 합니다.
• 쿼리는 기본적으로 인덱싱됩니다. 쿼리 성능은 데이터 세트가 아닌 결과 세트의 크기에 비례합니다. |
실시간 데이터베이스 | 클라우드 파이어스토어 |
---|
| 실시간 데이터베이스는 지역 솔루션입니다.
• 지역 구성에서 사용할 수 있습니다. 데이터베이스는 리전 내의 영역 가용성으로 제한됩니다.
• 대기 시간이 매우 짧고 빈번한 상태 동기화에 이상적인 옵션입니다.https://firebase.google.com/terms/service-level-agreement?authuser=1&hl=ko 에서 실시간 데이터베이스 성능 및 안정성 특성에 대해 자세히 알아보십시오. | Cloud Firestore는 자동으로 확장되는 지역 및 다중 지역 솔루션입니다.
• 서로 다른 지역의 여러 데이터 센터에 데이터를 보관하여 글로벌 확장성과 강력한 안정성을 보장합니다.
• 전 세계 지역 또는 다중 지역 구성에서 사용할 수 있습니다.https://cloud.google.com/firestore/sla?authuser=1&hl=ko 에서 Cloud Firestore 성능 및 안정성 특성에 대해 자세히 알아보세요. |
실시간 데이터베이스는 이전 데이터베이스 모델입니다.
Cloude Firestore가 좀 더 직관적이고 새로운 데이터 모델이며, 실시간 데이터베이스보다 풍부하고 빠른 쿼리와 원활한 확장성을 제공한다.
2023년 2/23일
Cloud Firestore
얕고 넓은 쿼리 제공
데이터 세트의 크기는 쿼리 성능에 직접적인 영향 없음
하지만 요청 쿼리 결과에 따라 쿼리 성능이 영향 받을 수는 있음
Realtime Database
깊고 좁은 쿼리 제공
결과값이 갖는 하위값 모두 반환하기 때문에 하위값에도 접근 가능함
데이터 세트의 크기가 커질수록 쿼리 성능 떨어짐
깊고 좁은 쿼리를 제공하기 때문에 데이터 크기에 영향받음
처음에는 cloud firestore가 기능이 더 많고 최신기능이라서 사용하려고 했는데 하위 컬랙션을 반환하지 않기 때문에 realtime database를 사용해야 될 수 있을 것 같다. =채팅리스트
채팅기능에는 cloud firestore를 써서 두개를 병합해서 사용 하는 것이 좋을지
아니면 realtime database만을 사용하는 것이 좋을지는 더 찾아봐야 될 것같다.
firestore 사용 하기로 결정
⇒복합 정렬 및 필터링 을 사용한 인덱싱된 쿼리.
realtimeDB
쿼리는 JSON 트리의 개별 리프 노드 값까지 모든 세분성에서 데이터에 액세스할 수 있습니다.
firestore
쿼리는 얕습니다. 특정 컬렉션 또는 컬렉션 그룹의 문서만 반환하고 하위 컬렉션 데이터는 반환하지 않습니다.