색인 관리

이 페이지에서는 색인을 관리하는 방법을 설명합니다. 색인에 대한 자세한 내용은 색인 개요를 참고하세요.

시작하기 전에

MongoDB 호환성을 갖춘 Firestore에서 색인을 만들려면 먼저 다음 역할 중 하나를 할당받아야 합니다.

  • roles/datastore.owner
  • roles/datastore.indexAdmin
  • roles/editor
  • roles/owner

역할을 부여하려면 단일 역할 부여를 참고하세요. Firestore 역할 및 관련 권한에 대한 자세한 내용은 사전 정의된 역할을 참고하세요.

커스텀 역할을 정의한 경우 다음 권한을 모두 할당하여 색인을 만듭니다.

  • datastore.indexes.create
  • datastore.indexes.delete
  • datastore.indexes.get
  • datastore.indexes.list
  • datastore.indexes.update

색인 만들기

색인을 만들려면 다음 단계를 완료합니다.

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

    데이터베이스로 이동

  2. 데이터베이스 목록에서 데이터베이스를 선택합니다.
  3. 탐색 메뉴에서 색인을 클릭합니다.
  4. 색인 만들기를 클릭합니다.
  5. 컬렉션 ID를 입력합니다.
  6. 필드 경로를 하나 이상 추가하고 각 필드에 색인 옵션을 선택합니다.
  7. 비희소 또는 희소 필드 존재 옵션을 선택합니다.
  8. 원하는 경우 multikey index 옵션을 설정합니다.
  9. 만들기를 클릭합니다.
  10. 새 색인이 색인 목록에 표시되고 MongoDB 호환성을 갖춘 Firestore에서 색인 생성을 시작합니다. 색인이 생성되면 색인 옆에 녹색 체크표시가 나타납니다. 색인이 생성되지 않으면 색인 빌드 오류에서 가능한 원인을 확인하세요.
Terraform

google_firestore_index 리소스를 사용하고 api_scopeMONGODB_COMPATIBLE_API로 설정합니다.

resource "google_firestore_index" "index" {
  database   = "DATABASE_ID"
  collection = "COLLECTION"
  api_scope  = "MONGODB_COMPATIBLE_API"

  // You can include multiple field blocks
  fields {
    field_path = "FIELD_PATH"
    order      = "ORDER"
  }

  // Optional
  multikey = true
  density  = "DENSITY"
}

다음을 바꿉니다.

  • DATABASE_ID: 선택한 데이터베이스의 데이터베이스 ID입니다.
  • COLLECTION: 색인을 생성할 컬렉션의 이름
  • FIELD_PATH: 색인을 생성할 필드의 이름
  • ORDER: ASCENDING 또는 DESCENDING 중 하나
  • DENSITY: SPARSE_ALL 또는 DENSE 중 하나

색인 삭제

색인을 삭제하려면 다음 단계를 완료하세요.

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

    데이터베이스로 이동

  2. 데이터베이스 목록에서 필요한 데이터베이스를 선택합니다.

  3. 탐색 메뉴에서 색인을 클릭합니다.

  4. 색인 목록에서 삭제하려는 색인의 더보기 버튼 에서 삭제를 선택합니다.

  5. 색인 삭제를 클릭하여 이 색인을 삭제할지 여부를 확인합니다.

색인 빌드 시간

색인을 빌드하려면 MongoDB 호환성을 갖춘 Firestore가 색인을 만든 다음 색인 항목을 기존 데이터로 백필해야 합니다. 색인을 만드는 데 필요한 시간은 다음에 따라 결정됩니다.

  • 색인의 최소 빌드 시간은 비어 있는 데이터베이스인 경우에도 몇 분 정도 걸립니다.

  • 색인 항목을 백필하는 데 필요한 시간은 새 색인에 속하는 기존 데이터의 양에 따라 다릅니다. 색인 정의와 일치하는 필드 값이 많을수록 색인 항목을 백필하는 데 시간이 오래 걸립니다.

장기 실행 작업 관리

색인 빌드는 장기 실행 작업입니다. 다음 섹션에서는 색인의 장기 실행 작업을 사용하는 방법을 설명합니다.

색인 생성을 시작한 후 MongoDB 호환성을 갖춘 Firestore는 작업에 고유한 이름을 할당합니다. 작업 이름은 다음 예시와 같이 projects/PROJECT_ID/databases/DATABASE_ID/operations/로 시작합니다.

projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

describe 명령어에 작업 이름을 지정할 때 프리픽스는 생략할 수 있습니다.

모든 장기 실행 작업 나열

장기 실행 작업을 나열하려면 gcloud firestore operations list 명령어를 사용합니다. 이 명령어는 진행 중인 작업과 최근에 완료된 작업을 나열합니다. 작업은 완료 후 며칠 동안 나열됩니다.

gcloud firestore operations list

작업 상태 확인

장기 실행 작업을 모두 나열하는 대신 단일 작업의 세부정보를 나열할 수 있습니다.

gcloud firestore operations describe operation-name

완료 시간 예상

작업이 실행되면 state 필드 값을 통해 작업의 전체 상태를 확인할 수 있습니다.

또한 장기 실행 작업 상태를 요청하면 workEstimatedworkCompleted 측정항목이 반환됩니다. workEstimated는 작업에서 처리할 것으로 예상되는 총 문서 수를 나타냅니다. workCompleted는 현재까지 처리된 문서 수를 나타냅니다. 작업이 완료되면 workCompleted에 실제로 처리된 총 문서 수가 반영되며 이는 workEstimated 값과 다를 수 있습니다.

작업 진행률을 추정하려면 workCompletedworkEstimated로 나눕니다.

다음은 색인 생성 진행 상황의 예입니다.

{
  "operations": [
    {
      "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
      "metadata": {
        "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
        "common": {
          "operationType": "CREATE_INDEX",
          "startTime": "2020-06-23T16:52:25.697539Z",
          "state": "PROCESSING"
        },
        "progressDocuments": {
          "workCompleted": "219327",
          "workEstimated": "2198182"
        }
       },
    },
    ...

작업이 완료되면 작업 설명에 "done": true가 포함됩니다. 작업 결과는 state 필드의 값을 참조하세요. 응답에 done 필드가 설정되지 않으면 작업이 완료되지 않은 것입니다.