기본 모드와 Datastore 모드 중 선택

Firestore 데이터베이스를 새로 만들 때 Datastore 모드로 실행되도록 데이터베이스 인스턴스를 구성하면 Datastore와의 하위 호환이 가능합니다. 이 페이지는 Native 모드Datastore 모드라는 두 가지 Firestore 데이터베이스 모드의 차이점을 이해하는 데 도움이 됩니다.

기본 모드의 Firestore

Firestore는 Datastore의 다음 주 버전이며 이 제품의 리브랜딩입니다. Datastore와 Firebase 실시간 데이터베이스를 최대한 활용하는 Firestore는 자동 확장, 고성능, 간편한 애플리케이션 개발을 위해 빌드된 NoSQL 문서 데이터베이스입니다.

Firestore는 다음과 같은 새로운 기능을 제공합니다.

  • strong consistency를 가진 새로운 스토리지 레이어
  • 컬렉션 및 문서 데이터 모델
  • 실시간 업데이트
  • 모바일 및 웹 클라이언트 라이브러리

Firestore는 Datastore의 이전 버전과 호환되지만 새로운 데이터 모델, 실시간 업데이트, 모바일 및 웹 클라이언트 라이브러리 기능은 호환되지 않습니다. 새로운 모든 Firestore 기능에 액세스하려면 기본 모드의 Firestore를 사용해야 합니다.

Datastore 모드의 Firestore

Datastore 모드의 Firestore는 Datastore 시스템 동작을 사용하지만 Firestore의 스토리지 레이어에 액세스하여 다음과 같은 Datastore 제한사항을 제거합니다.

  • Eventual consistency: eventual consistency를 명시적으로 요청하지 않으면 Datastore 쿼리는 strong consistency를 갖게 됩니다.
  • 트랜잭션의 쿼리는 더 이상 상위 쿼리일 필요가 없습니다.
  • 트랜잭션이 더 이상 25개의 항목 그룹으로 제한되지 않습니다.
  • 항목 그룹에 대한 쓰기가 더 이상 초당 1회로 제한되지 않습니다.

Datastore 모드에서는 Datastore와 호환되지 않는 Firestore 기능이 중지됩니다.

  • 프로젝트는 Datastore API 요청을 수락하고 Firestore API 요청을 거부합니다.
  • 프로젝트는 Firestore 색인 대신 Datastore 색인을 사용합니다.
  • 이 프로젝트에는 Datastore 클라이언트 라이브러리를 사용할 수 있지만 Firestore 클라이언트 라이브러리는 사용할 수 없습니다.
  • Firestore 실시간 기능은 사용할 수 없습니다.
  • Google Cloud 콘솔에서 데이터베이스가 Datastore 뷰어를 사용합니다.

Datastore 모드로 자동 업그레이드

기존 Datastore 데이터베이스는 자동으로 Datastore 모드의 Firestore로 업그레이드됩니다. Datastore 데이터베이스가 필요한 새 프로젝트는 Datastore 모드의 Firestore를 사용해야 합니다.

가격 책정 및 위치

기본 모드 데이터베이스와 Datastore 모드 데이터베이스는 동일한 가격 책정 구조를 사용하며 동일한 위치에서 사용될 수 있습니다. 가격 책정 및 위치는 다음 페이지에서 자세히 설명합니다.

기본 모드의 Firestore

Datastore 모드의 Firestore

데이터베이스 모드 선택

Firestore 데이터베이스를 새로 만들 때 데이터베이스 모드를 선택해야 합니다. 같은 프로젝트에서 Native 모드와 Datastore 모드를 모두 사용할 수는 없습니다. 데이터베이스 모드 선택 시 권장사항은 다음과 같습니다.

  • 새 서버 프로젝트에는 Datastore 모드의 Firestore를 사용합니다.

    Datastore 모드의 Firestore를 사용하면 설정된 Datastore 아키텍처를 사용하면서 기본적인 Datastore 제한사항을 제거할 수 있습니다. Datastore 모드는 초당 수백만 회의 쓰기로 자동 확장될 수 있습니다.

  • 새 모바일 및 웹 앱에는 기본 모드의 Firestore를 사용합니다.

    Firestore는 실시간 기능과 오프라인 기능이 있는 모바일 및 웹 클라이언트 라이브러리를 제공합니다. 기본 모드는 동시 클라이언트 수백만 개로 자동 확장될 수 있습니다.

기능 비교

다음 표는 데이터베이스 모드의 시스템 동작을 비교한 것입니다.

기본 모드의
Firestore
Datastore 모드의
Firestore
데이터 모델 문서와 컬렉션으로 구성된 문서 데이터베이스 종류 및 항목 그룹으로 구성된 항목
스토리지 레이어 항상 strong consistency를 가지는 새로운 스토리지 레이어 항상 strong consistency를 가지는 새로운 스토리지 레이어
쿼리 및 트랜잭션
  • 전체 데이터베이스에서 strong consistency를 가지는 쿼리
  • Datastore의 이전 일관성 제한사항을 제거합니다.
  • 전체 데이터베이스에서 strong consistency를 가지는 쿼리
  • 트랜잭션은 제한 없는 개수의 항목 그룹에 액세스할 수 있음
Datastore v1 API 지원 아니요, 요청이 거부됨
Firestore v1 API 지원 아니요, 요청이 거부됨
실시간 업데이트

실시간 업데이트를 위해 문서 또는 문서 집합을 리슨할 수 있는 기능을 지원합니다.

문서 하나 또는 문서 집합을 리슨하는 동안 클라이언트는 데이터 변경사항을 받고 최신 데이터 세트를 보냅니다.

지원되지 않음
오프라인 데이터 지속성 모바일 및 웹 클라이언트 라이브러리는 오프라인 데이터 지속성을 지원합니다. 지원되지 않음
클라이언트 라이브러리 Firestore 클라이언트 라이브러리:
  • 자바
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS+
  • C++
  • Unity
Datastore 클라이언트 라이브러리:
  • 자바
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
보안
  • ID 및 액세스 관리(IAM)는 데이터베이스 액세스를 관리합니다.
  • Firestore 보안 규칙이 모바일 및 웹 클라이언트 라이브러리에 대한 서버리스 인증 및 승인을 지원
IAM은 데이터베이스 액세스를 관리함
성능 수백만 개의 동시 클라이언트로 자동 확장됩니다. 초당 쓰기 수백만 회로 자동 확장됩니다.
SLA Firestore SLA Firestore SLA
위치

두 모드 모두 동일한 위치 지원

  • 미국(멀티 리전)
  • 유럽(멀티 리전)
  • 오리건
  • 로스앤젤레스
  • 솔트레이크시티
  • 라스베이거스
  • 몬트리올
  • 로스앤젤레스
  • 사우스캐롤라이나
  • 북 버지니아
  • 상파울루
  • 런던
  • 프랑크푸르트
  • 바르샤바
  • 취리히
  • 뭄바이
  • 싱가포르
  • 자카르타
  • 홍콩
  • 타이완
  • 도쿄
  • 오사카
  • 서울
  • 시드니
가격 책정

두 모드 모두 항목 및 문서 작업에 동일한 가격 책정 구조를 사용합니다.

Datastore 모드의 Firestore는 소규모 작업에 요금을 부과하지 않습니다.

두 모드 모두 저장된 데이터 및 네트워크 대역폭에 동일한 가격 책정 구조를 사용합니다.

가격 책정에 대한 자세한 내용은 다음을 참조하세요.

콘솔 Firebase Console 및 Google Cloud 콘솔 Firestore 뷰어 Google Cloud 콘솔 Datastore 뷰어
네임스페이스 지원되지 않음 네임스페이스가 지원됨
App Engine 클라이언트 라이브러리 통합

App Engine 표준 환경 Python 2.7 및 PHP 5.5 런타임에서는 지원되지 않음

App Engine 표준 환경, 다른 모든 런타임에서 지원됨

App Engine 가변형 환경, 모든 런타임에서 지원됨

모든 런타임에서 지원됨

Native 모드 또는 Datastore 모드로 변경

데이터베이스가 비어 있으면 기본 모드 또는 Datastore 모드로 변경할 수 있습니다.

데이터베이스를 Native 모드로 변경합니다.

gcloud

gcloud alpha firestore database update 명령어를 사용하여 데이터베이스를 Native 모드로 변경합니다.

gcloud alpha firestore databases update --type=firestore-native

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"FIRESTORE_NATIVE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=type"

데이터베이스를 Datastore 모드로 변경합니다.

gcloud

gcloud alpha firestore database update 명령어를 사용하여 데이터베이스를 Datastore 모드로 변경합니다.

 gcloud alpha firestore databases update --type=datastore-mode

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"DATASTORE_MODE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=type"