실시간 vs Cloud Firestore: 선택할 Firebase 데이터베이스

게시 됨: 2018-10-12

기록은 그리 멀지 않은 Firebase 데이터베이스로 돌아갑니다. 모바일 및 웹 개발 플랫폼으로 설립된 Firebase는 2011년에 등장한 후 2014년에 거대 기술 기업인 Google에 인수되면서 운명이 바뀌었습니다.

Firebase 진화의 역사를 건너뛰고 Google에 인수된 지 1년 만에 Divshot과 합병되어 모바일 개발자를 위한 통합 플랫폼으로 확장되었습니다.

Firebase는 이제 다양한 다른 Google 서비스와 통합되어 개발자에게 더 광범위한 제품과 확장성을 제공합니다. 사실, 이것이 제공하는 이점으로 인해 스타트업용 Firebase는 트렌드 프로세스가 됩니다.

그렇다면 Firebase 데이터베이스는 무엇입니까? Firebase는 BaaS, 즉 Backend as a Service입니다. Firebase에서 제공하는 제품을 사용하여 고품질 애플리케이션을 구축할 수 있는 것은 모바일 개발자뿐만이 아닙니다. Google은 Firebase 웹 사용자를 위한 몇 가지 새로운 기능도 출시했습니다 .

방금 언급한 모든 애플리케이션을 빌드할 수 있게 해주는 두 가지 Firebase 제품이 있습니다. 실시간 및 Cloud Firestore.

Realtime은 Google의 Firebase 데이터베이스와 Cloud Firestore의 확고한 제품이며 더 나은 기술을 약속하지만 아직 베타 테스트 단계입니다.

Google 에 따라:

실시간 데이터베이스 는 Firebase의 원본 데이터베이스입니다. 클라이언트 간에 실시간으로 동기화된 상태가 필요한 모바일 앱을 위한 효율적이고 대기 시간이 짧은 솔루션입니다.

Cloud Firestore 모바일 앱 개발 을 위한 Firebase의 새로운 주력 데이터베이스입니다. 새롭고 보다 직관적인 데이터 모델로 실시간 데이터베이스의 성공을 향상시킵니다. 또한 Cloud Firestore는 실시간 데이터베이스보다 더 풍부하고 빠른 쿼리를 제공하며 확장성이 뛰어납니다.

실시간 데이터베이스 및 Cloud Firestore의 개별 속성에 대해 설명하기 전에 다음 프로젝트에 Firebase 데이터베이스를 사용할 때의 장단점을 살펴보겠습니다.

Firebase 데이터베이스의 장점:

Advantages of Firebase Database 모든 모바일 및 웹 앱 개발 을 위해 Firebase 데이터베이스를 원스톱 데이터베이스로 사용해야 하는 이유 목록을 살펴보면 Firebase db가 모바일 앱 개발 업계에서 큰 히트를 친 이유를 알 수 있습니다.

  • 손쉬운 데이터 마이그레이션 – 최근 개발은 개발자에게 데이터를 쉽게 마이그레이션할 수 있는 도구를 제공했습니다.
  • 추가 지식 필요 없음 – Firebase db에서 작동하는 데 devOps 또는 sysadmin에 대한 지식이 거의 필요하지 않습니다.
  • 다양한 데이터 유형 검증 – Firebase 데이터베이스 구조는 스키마가 없지만 여전히 다양한 데이터 유형을 검증하는 기본 기능이 있습니다.
  • 원스톱 도구 – 모든 것을 포괄하는 도구이며 소규모 모바일 애플리케이션의 백엔드에 반드시 필요한 유일한 도구입니다.
  • 사용하기 쉬움 – 사용 난이도는 평균보다 약간 높지만 분석 및 충돌 모니터링과의 통합과 관련하여 대부분의 다른 시스템보다 쉽습니다.
  • 무료 사용 – 초기 단계에서는 무료이므로 처음 사용하는 개발자는 큰 초기 투자를 걱정할 필요가 없습니다.
  • 풍부한 코드 라이브러리 – 프로그래밍 언어 전반의 모든 코드 라이브러리는 유사하며 신규 사용자에게도 잘 유지됩니다.
  • JSON 데이터 구조 – 데이터 구조는 UI JavaScript와 완벽하게 매핑되는 JSON입니다.
  • 빠른 개발 – 인증, 이메일, 버전 관리, 호스팅, 모니터링, DevOps, 가동 시간 등 처음부터 애플리케이션을 만드는 것은 매우 빠릅니다.
  • 간편한 스트리밍 – 실시간 기능 또는 스트리밍 업데이트가 매우 쉽습니다.

이제 Realtime 데이터베이스와 Cloud Firestore를 비교하여 언제 어느 것을 사용해야 하는지 더 명확하게 이해해 보겠습니다. Cloud Firestore는 아직 베타 테스트 단계에 있으며 Realtime 데이터베이스보다 더 유망한 방식으로 찾고 작업하고 있습니다. 이 비교에서 두 데이터베이스가 서로 어떻게 다른지, 누가 실시간 데이터베이스와 Cloud Firestore에서 승리하는지 확인할 수 있습니다.

데이터 모델

  • 실시간 데이터베이스 는 데이터를 하나의 큰 JSON 트리로 저장하므로 간단한 데이터를 매우 쉽게 저장할 수 있지만 복잡하거나 계층적인 데이터는 대규모로 구성하기가 더 어렵습니다.
  • 반면 Cloud Firestore 는 컬렉션으로 구성된 문서 형식으로 데이터를 저장합니다. 여기서 단순 데이터의 저장은 JSON과 유사하며 문서에 저장됩니다. 반면에 복잡하거나 계층적인 데이터는 문서 내의 하위 컬렉션을 사용하여 대규모로 구성하기가 쉽지 않습니다. 그리고 전반적으로 비정규화 및 데이터 병합이 덜 필요합니다.

실시간 및 오프라인 지원

  • 실시간 데이터베이스 는 Android 및 iOS 모바일 클라이언트에 대해서만 오프라인 지원을 제공합니다.
  • 반면 Cloud Firestore 는 Android, iOS 및 웹 클라이언트에 대한 오프라인 지원도 제공합니다.

쿼리

  • 실시간 데이터베이스 는 개발자가 단일 쿼리에서 속성을 정렬하거나 필터링할 수 있는 제한된 정렬 및 필터링 기능이 있는 심층 쿼리를 제공합니다. 그리고 모든 쿼리는 기본적으로 깊습니다. 즉, 항상 전체 하위 트리를 반환합니다.
  • Cloud Firestore 는 개발자가 필터를 연결하고 단일 쿼리에서 속성에 대한 필터링 및 정렬을 결합할 수 있는 복합 정렬 및 필터링으로 쿼리를 인덱싱합니다. 하위 컬렉션에 대한 얕은 쿼리를 작성할 수도 있습니다. 즉, 개발자는 전체 컬렉션이나 전체 문서 대신 문서 내에서 쿼리할 수 있습니다. 이뿐만 아니라 쿼리는 기본적으로 인덱싱되므로 쿼리 성능은 데이터 집합이 아닌 결과 집합의 크기에 비례합니다.

업무

  • 실시간 데이터베이스 에는 기본 쓰기 및 트랜잭션 작업이 있습니다. 쓰기 데이터는 개별 작업으로 작동하며 트랜잭션에는 기본 SDK의 완료 콜백이 필요합니다.
  • Cloud Firestore 는 원자적 쓰기 및 트랜잭션 작업을 허용합니다. 작업을 일괄 처리하고 자동으로 완료합니다. 또한 트랜잭션은 완료될 때까지 자동으로 반복됩니다.

성능 및 안정성

  • 실시간 데이터베이스 성숙한 제품입니다. 여러 번 시도하고 테스트 한 실제 제품의 안정성을 가지고 있습니다. 또한 대기 시간이 매우 짧기 때문에 빈번한 상태 동기화에 적합한 옵션입니다. 그러나 데이터베이스는 단일 지역의 영역 가용성으로 제한됩니다.
  • Cloud Firestore 성능은 아직 베타 단계 이므로 측정할 수 없습니다 . 그리고 베타 제품의 안정성은 정식 출시 제품의 안정성과 다릅니다. 그러나 안정성 측면에서 Cloud Firestore는 서로 다른 지역의 여러 데이터 센터에 있는 모든 데이터를 보관하므로 글로벌 확장성과 강력한 안정성을 보장합니다. 이론적으로 Cloud Firestore는 베타에서 나올 때마다 Realtime 데이터베이스보다 더 강력한 안정성을 갖게 됩니다.

확장성

  • 실시간 데이터베이스 에서 확장하려면 샤딩이 필요합니다 . 간단히 말해서 단일 데이터베이스에서 약 100,000개의 동시 연결과 초당 1000개의 쓰기로 확장하고 그 이상으로 확장하려면 여러 데이터베이스에 걸쳐 데이터를 샤딩해야 합니다.
  • Cloud Firestore 가 베타 버전으로 출시 되면 자동으로 확장되며 개발자는 여러 인스턴스에 걸쳐 데이터를 분할할 필요가 없습니다.

보안

  • 실시간 데이터베이스 에는 별도의 유효성 검사가 필요한 계단식 규칙이 있습니다. 여기서 Firebase 데이터베이스 규칙은 유일한 보안 옵션이며 개발자는 'validate' 규칙을 사용하여 데이터를 별도로 검증해야 합니다.
  • Cloud Firestore 는 IAM(Identity and Access Management)을 사용하는 모바일, 웹 및 서버 SDK에 대해 더 간단하고 강력한 보안을 제공합니다. 데이터 유효성 검사도 자동으로 수행됩니다. 또한 규칙은 쿼리를 제한할 수 있습니다. 즉, 쿼리 결과에 개발자가 액세스할 수 없는 데이터가 포함될 수 있는 경우 전체 쿼리가 실패합니다.

가격

  • 실시간 데이터베이스 대역폭과 스토리지에 대해서만 요금을 부과하지만 가격은 더 높습니다.
  • 반면 Cloud Firestore 는 주로 데이터베이스에서 수행되는 작업(읽기, 쓰기, 삭제)에 대해 더 낮은 요율, 대역폭 및 저장용량으로 요금을 청구합니다. 또한 Google App Engine 프로젝트에 대한 일일 지출 한도를 지원합니다.

Firebase가 어떻게 작동하는지 여전히 궁금하십니까? 위의 기사에서 우리가 알고 있는 내용을 요약해 보겠습니다.

How Does Firebase Work

실시간 데이터베이스를 사용하는 경우:

  • 데이터가 단순하고 복잡하거나 계층적이지 않은 경우
  • 100,000 동시 연결 미만으로 확장해야 하는 경우 단일 데이터베이스에서 초당 1000 쓰기
  • 수행되는 개별 작업이 아닌 전체 대역폭 및 스토리지에 대해 요금을 부과하는 데이터베이스가 필요할 때.

Cloud Firestore 데이터베이스를 사용하는 경우:

  • 데이터가 복잡하거나 계층적인 경우
  • 데이터가 100,000개 이상의 동시 연결을 확장하는 경우
  • 보다 정확한 지출 한도와 주로 1에 청구되는 데이터베이스가 필요한 경우 PicCollage, Fabulous, Shazam 및 Skyscanner가 있으며 우리 모두는 그들이 성공적으로 실행되고 있다는 데 동의할 수 있습니다.

결론적으로 Firebase db 모델은 잘 작동합니다. Realtime Firebase는 Cloud Firestore의 베타 버전 출시와 함께 현재와 작년에 성공적으로 실행되어 왔으며 모바일 앱 개발자와 앱 개발 회사에 더 좋은 일이 기다리고 있습니다.