Cloud Firestore Lite 웹 SDK

Firestore는 웹 클라이언트 간에 데이터의 동기화를 유지하는 데 적합한 확장 가능한 데이터베이스 솔루션입니다.

많은 앱에서 Firestore의 관리형 오프라인 지원이 특히 중요합니다. 이를 통해 네트워크 지연 시간이나 인터넷 연결에 관계없이 작동하는 반응형 앱을 빌드할 수 있게 하기 때문입니다. 하지만 기능이 다양한 SDK를 사용하면 크기와 관련된 비용이 늘어날 수 있습니다. 기본적인 만들기, 읽기, 업데이트, 삭제 작업만 사용하고 관리형 오프라인 지원은 필요 없는 앱에는 어떤 솔루션을 제공하는 것이 좋을까요?

솔루션: Firestore Lite

Firestore Lite는 일반 웹 SDK보다 작은 크기로 단일 문서 가져오기, 쿼리 실행, 문서 업데이트를 지원하는 경량의 독립형 REST 전용 Firestore SDK입니다. Firestore Lite에는 지연 시간 보정, 오프라인 캐싱, 쿼리 재개, 스냅샷 리스너가 생략되어 있지만 특정 사용 사례에서는 라이브러리 크기 감소 및 시작 시간 단축이라는 큰 장단점이 있습니다.

Firestore Lite 가져오기

Firestore Lite는 모듈형 SDK의 일부로 NPM을 통해 제공됩니다. 따라서 완전히 모듈형이며 트리 쉐이킹이 가능합니다.

다음과 같은 import 구문이 지원됩니다.

import { initializeApp } from "firebase/app";
import {
   getFirestore,
   getDoc,
   updateDoc
} from 'firebase/firestore/lite';

Firestore Lite에서 지원되지 않는 API 기능

크기 및 속도를 위해 Firestore Lite에는 표준 Firestore SDK에는 있는 다음 기능이 생략되어 있습니다.

  • DocumentSnapshot 이벤트 핸들러: onSnapshot 메서드와 DocumentChange, SnapshotListenerOptions, SnapshotMetadata, SnapshotOptions, Unsubscribe 객체는 포함되지 않습니다.
  • 지속성 도우미: enableIndexedDBPersistence, enableMultiTabIndexedDbPersistence, clearIndexedDbPersistence 메서드는 포함되지 않습니다.
  • Firestore 번들: loadBundle 메서드 및 관련 메서드와 LoadBundleTaskLoadBundleTaskProgress 객체는 포함되지 않습니다.

문서 가져오기, 쿼리, 업데이트 구현

Firestore Lite를 가져온 후에는 익숙한 API get 및 update 호출을 모두 수행할 수 있습니다. 데이터 추가데이터 가져오기 사용 사례가 모두 해당합니다.

import {
 getFirestore,
 getDoc,
 updateDoc,
 doc
} from '@firebase/firestore/lite';

const firestore = getFirestore(app);
const docRef = doc(firestore, 'collection/doc');
const docSnap = await getDoc(docRef);
await updateDoc(docRef, "field", 'value');

Firestore Lite를 사용해야 하는 경우

표준 Firestore SDK의 오프라인 지속성 및 캐싱 기능을 어떤 경우에 포기할지 판단하기가 어려울 수 있습니다. Firestore Lite의 낮은 오버헤드를 위해 포기를 결정하기 앞서 이러한 기능을 이해해야 합니다. 일반적으로 Firestore Lite 사용 여부를 결정할 때는 다음 요소를 고려하세요.

  • 온라인 상태 - Firestore Lite는 실시간 업데이트와 연결이 필요 없는 앱에 적합합니다.
  • 크기 제약 조건 - Firestore Lite는 전체 자바스크립트 번들 크기를 축소하려는 경우에 적합합니다.