데이터베이스 관리

이 페이지에서는 Cloud Firestore 데이터베이스를 생성, 업데이트, 삭제하는 방법을 설명합니다. 프로젝트당 Cloud Firestore 데이터베이스 여러 개를 만들 수 있습니다. 여러 데이터베이스를 사용하여 프로덕션 및 테스트 환경을 설정하고 고객 데이터를 격리하며 데이터 리전화를 수행할 수 있습니다.

(default) 데이터베이스

앱에 데이터베이스가 여러 개 필요하지 않다면 (default) 데이터베이스를 사용합니다.

데이터베이스를 지정하지 않으면 Cloud Firestore 클라이언트 라이브러리와 Google Cloud CLI가 기본적으로 (default) 데이터베이스에 연결됩니다.

무료 할당량(default) 데이터베이스에서만 사용할 수 있습니다.

필요한 역할

데이터베이스를 만들고 관리하려면 Owner 또는 Datastore Owner Identity and Access Management 역할이 필요합니다. 이러한 역할은 필수 권한을 부여합니다.

필수 권한

데이터베이스를 관리하려면 다음 권한이 필요합니다.

  • 데이터베이스 만들기: datastore.databases.create
  • 데이터베이스 구성 읽기: datastore.databases.getMetadata
  • 데이터베이스 구성: datastore.databases.update
  • 데이터베이스 삭제: datastore.databases.delete

데이터베이스 만들기

데이터베이스를 만들려면 다음 방법 중 하나를 사용합니다.

콘솔
  1. Firebase Console에서 Firestore 데이터베이스 페이지로 이동합니다.

    Firestore 데이터베이스로 이동

  2. 이름이 지정된 데이터베이스를 처음 만드는 경우 데이터베이스 추가를 클릭합니다.
  3. 그렇지 않으면 (기본값)을 클릭한 다음 데이터베이스 추가를 클릭합니다.
  4. 데이터베이스를 구성합니다. 데이터베이스 ID를 입력합니다. 지역을 선택합니다. 데이터베이스 만들기를 클릭합니다.
gcloud

gcloud firestore databases create 명령어를 사용합니다.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

다음을 바꿉니다.

--delete-protection은 삭제 보호를 사용 설정하는 선택적 플래그입니다. 이 설정을 중지할 때까지는 삭제 보호가 사용 설정된 데이터베이스를 삭제할 수 없습니다. 이 설정은 기본적으로 사용 중지되어 있습니다.

Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

다음을 바꿉니다.

--delete-protection 은 삭제 보호를 사용 설정하는 선택적 인수입니다. 이 설정을 중지할 때까지는 삭제 보호가 사용 설정된 데이터베이스를 삭제할 수 없습니다. 이 설정은 기본적으로 사용 중지되어 있습니다.

Terraform
resource "google_firestore_database" "database" {
  project     = "project-id"
  name        = DATABASE_ID
  location_id = LOCATION
  type        = DATABASE_TYPE

  // Optional
  delete_protection_state = DELETE_PROTECTION_STATE
}

다음을 바꿉니다.

delete_protection_state은 삭제 보호를 사용 설정하는 선택적 인수입니다. 이 설정을 중지할 때까지는 삭제 보호가 사용 설정된 데이터베이스를 삭제할 수 없습니다. 이 설정은 기본적으로 사용 중지되어 있습니다.

데이터베이스 ID

유효한 데이터베이스 ID에는 (default) 및 다음을 준수하는 ID가 포함됩니다.

  • 문자, 숫자, 하이픈(-) 문자만 포함합니다.
  • 문자는 소문자여야 합니다.
  • 첫 번째 글자는 문자여야 합니다.
  • 마지막 글자는 문자 또는 숫자여야 합니다.
  • 최소 4자(영문 기준)입니다.
  • 최대 63자(영문 기준)입니다.
  • UUID이거나 UUID와 유사해서는 안 됩니다. 예를 들어 f47ac10b-58cc-0372-8567-0e02b2c3d479와 같은 ID를 사용하지 마세요.

데이터베이스를 삭제하면 5분 동안 데이터베이스 ID를 재사용할 수 없습니다.

보호 삭제

삭제 보호를 사용하여 데이터베이스가 실수로 삭제되는 것을 방지하세요. 삭제 보호가 사용 중지된 데이터베이스는 삭제 보호를 사용 중지할 때까지 삭제할 수 없습니다. 삭제 보호는 기본적으로 사용 중지되어 있습니다. 데이터베이스를 만들 때 삭제 보호를 사용 설정하거나 데이터베이스 구성을 업데이트하여 삭제 보호를 사용 설정할 수 있습니다.

데이터베이스에 Cloud Firestore Security Rules 설정

Firebase CLI를 사용하여 각 데이터베이스에 Cloud Firestore Security Rules을 배포합니다. Cloud Firestore Security Rules 관리 및 배포 가이드를 참조하세요.

클라이언트 라이브러리를 사용하여 이름이 지정된 데이터베이스에 액세스

이름이 지정된 데이터베이스에는 (default)가 아닌 모든 데이터베이스가 포함됩니다. 기본적으로 Firebase SDK 및 Google API 클라이언트 라이브러리는 프로젝트의 (default) Cloud Firestore 데이터베이스에 연결됩니다. 이름이 지정된 데이터베이스에 연결된 클라이언트를 만들려면 클라이언트를 인스턴스화할 때 데이터베이스 ID를 설정합니다.

데이터베이스 나열

다음 방법 중 하나를 사용하여 데이터베이스를 나열합니다.

콘솔

Google Cloud 콘솔에서 데이터베이스 페이지로 이동합니다.

데이터베이스로 이동

gcloud

gcloud firestore databases list 명령어를 사용하여 프로젝트의 모든 데이터베이스를 나열합니다.

gcloud firestore databases list
Firebase CLI

firebase firestore:databases:list 명령어를 사용하여 프로젝트의 모든 데이터베이스를 나열합니다.

firebase firestore:databases:list

데이터베이스 세부정보 보기

단일 데이터베이스에 대한 세부정보를 보려면 다음 방법 중 하나를 사용합니다.

gcloud

gcloud firestore databases describe 명령어를 사용합니다.

gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI

firebase firestore:databases:get 명령어를 사용합니다.

firebase firestore:databases:get DATABASE_ID

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

데이터베이스 구성 업데이트

데이터베이스의 구성 설정을 업데이트하려면 gcloud firestore databases update 명령어를 사용합니다. 이 명령어를 사용하여 삭제 보호를 사용 설정 또는 사용 중지합니다.

삭제 방지 설정 업데이트

데이터베이스에서 삭제 보호를 사용 설정하려면 gcloud firestore databases update 명령어를 --delete-protection 플래그와 함께 사용합니다. 예를 들면 다음과 같습니다.

gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection

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

데이터베이스에서 삭제 보호를 사용 중지하려면 gcloud firestore databases update 명령어를 --no-delete-protection 플래그와 함께 사용합니다. 예를 들면 다음과 같습니다.

gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

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

데이터베이스 삭제

데이터베이스를 삭제하려면 콘솔이나 명령줄 도구를 사용합니다.

데이터베이스에 삭제 보호 설정이 사용 설정된 경우 먼저 삭제 보호를 중지해야 합니다.

데이터베이스에 App Engine 검색 데이터 또는 blob 항목이 포함된 경우 이 데이터를 먼저 삭제해야 합니다.

데이터베이스를 삭제해도 해당 데이터베이스의 Eventarc 트리거가 자동으로 삭제되지 않습니다. 트리거가 이벤트 제공을 중지하지만 트리거를 삭제하기 전까지 계속 존재합니다.

콘솔
  1. Firebase Console에서 Firestore 데이터베이스 페이지로 이동합니다.

    Firestore 데이터베이스로 이동

  2. 데이터 탭에서 데이터베이스의 데이터 표 보기 위에 있는 를 클릭한 다음 데이터베이스 삭제를 선택합니다.
  3. 안내에 따라 데이터베이스를 삭제합니다.
gcloud

`gcloud firestore databases delete` 명령어를 사용합니다.

gcloud firestore databases delete --database=DATABASE_ID

DATABASE_ID를 삭제할 데이터베이스의 ID로 바꿉니다.

데이터베이스별 액세스 권한 구성

Identity and Access Management 조건을 사용하여 데이터베이스 수준별로 액세스 권한을 구성할 수 있습니다. 다음 예시에서는 Google Cloud CLI를 사용하여 하나 이상의 데이터베이스에 조건부 액세스 권한을 할당합니다. Google Cloud 콘솔에서 IAM 조건을 정의할 수도 있습니다.

기존 IAM 정책 보기

gcloud projects get-iam-policy PROJECT_ID

PROJECT_ID를 프로젝트 ID로 설정합니다.

데이터베이스에 대한 액세스 권한 부여

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

다음을 설정합니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • EMAIL: 특정 Google 계정을 나타내는 이메일 주소입니다. 예를 들면 alice@example.com입니다.
  • DATABASE_ID: 데이터베이스 ID
  • TITLE: 표현식의 제목(선택사항)입니다.
  • DESCRIPTION: 표현식의 설명(선택사항)입니다.

데이터베이스 1개를 제외한 모든 데이터베이스에 액세스 권한 부여

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

다음을 설정합니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • EMAIL: 특정 Google 계정을 나타내는 이메일 주소입니다. 예를 들면 alice@example.com입니다.
  • DATABASE_ID: 데이터베이스 ID
  • TITLE: 표현식의 제목(선택사항)입니다.
  • DESCRIPTION: 표현식의 설명(선택사항)입니다.

지정된 구성원 및 역할의 정책 삭제

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

다음을 설정합니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • EMAIL: 특정 Google 계정을 나타내는 이메일 주소입니다. 예를 들면 alice@example.com입니다.

Cloud Monitoring

Cloud Firestore 측정항목은 두 개의 모니터링 리소스 아래에 보고됩니다.

firestore.googleapis.com/Database를 확인하여 데이터베이스 수준에서 집계 측정항목을 검사할 수 있습니다. firestore_instance에 보고되는 측정항목은 프로젝트 수준에서 집계됩니다.

제한사항

  • 프로젝트당 최대 100개의 데이터베이스를 포함할 수 있습니다. 지원팀에 문의하여 이 한도 상향을 요청할 수 있습니다.
  • GAE 검색 데이터가 포함되어 있으면 (default) 데이터베이스를 삭제할 수 없습니다. GAE 검색 데이터를 삭제하려면 Index Delete API를 사용하세요. 최근에 GAE 검색 데이터를 삭제한 경우 데이터베이스를 삭제하려면 대기 기간이 지나야 할 수 있습니다.
  • blob 항목이 포함되어 있으면 (default) 데이터베이스를 삭제할 수 없습니다. Blobstore 데이터를 삭제하려면 Blobstore Delete API를 사용하세요. Google Cloud 콘솔에서 SELECT * FROM __BlobInfo__ GQL 쿼리를 실행하여 (default) 데이터베이스에 Blobstore 데이터가 있는지 확인할 수 있습니다.
  • 삭제 후 5분이 지나야 데이터베이스 ID를 재사용할 수 있습니다.
  • Cloud 함수 v1은 Firestore에서 이름이 지정된 데이터베이스를 지원하지 않습니다. Cloud Firestore 트리거(2세대)를 사용하여 이름이 지정된 데이터베이스의 이벤트를 구성하세요.
  • 데이터베이스가 삭제된 후 동일한 이름으로 새 데이터베이스를 생성하더라도 Firestore 함수 트리거 v1Firestore 이벤트 트리거가 작동이 중지될 수 있습니다.

다음 단계