Native 모드와 Datastore 모드 중 선택

Firestore 데이터베이스를 새로 만들 때 Datastore 모드로 실행되도록 데이터베이스 인스턴스를 구성하면 Datastore와의 하위 호환이 가능합니다. 이 페이지는 기본 모드와 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를 명시적으로 요청하지 않는 한 이제 모든 Datastore 쿼리가 strong consistency를 가집니다.
  • 트랜잭션의 쿼리는 더 이상 상위 쿼리일 필요가 없습니다.
  • 트랜잭션이 더 이상 25개의 항목 그룹으로 제한되지 않습니다.
  • 항목 그룹에 대한 쓰기가 더 이상 초당 1회로 제한되지 않습니다.

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

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

가격 책정 및 위치

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

기본 모드의 Firestore

Datastore 모드의 Firestore

데이터베이스 모드 선택

Firestore 데이터베이스를 새로 만들 때 데이터베이스 모드를 선택해야 합니다. 동일한 프로젝트에 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
  • C++
보안
  • 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 모드로 새 Firestore 데이터베이스를 만들 수 있습니다. 이러한 선택은 프로젝트의 기존 데이터베이스 모드에 좌우되지 않습니다.

자세한 내용은 데이터베이스 만들기 및 관리하기를 참고하세요.

기본 모드 또는 Datastore 모드로 변경

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

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

gcloud

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

gcloud firestore databases update --type=firestore-native --database='DATABASE_ID'

DATABASE_ID를 데이터베이스 ID로 바꿉니다.

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/DATABASE_ID?updateMask=type"

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • DATABASE_ID: 데이터베이스 ID

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

gcloud

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

 gcloud firestore databases update --type=datastore-mode --database='DATABASE_ID'

DATABASE_ID를 데이터베이스 ID로 바꿉니다.

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/DATABASE_ID?updateMask=type"

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • DATABASE_ID: 데이터베이스 ID