실시간 채팅에 파이어베이스(FireStore) 사용이유?

라형선·2023년 3월 9일
0

매우 저렴하고(여기서 유료 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

쿼리는 얕습니다. 특정 컬렉션 또는 컬렉션 그룹의 문서만 반환하고 하위 컬렉션 데이터는 반환하지 않습니다.

profile
형선

0개의 댓글