สร้างและจัดการฐานข้อมูล

เกี่ยวข้องกับ Cloud Firestore Enterprise Edition เท่านั้น

หน้านี้อธิบายวิธีสร้าง อัปเดต และลบฐานข้อมูล Cloud Firestore ที่เข้ากันได้กับ MongoDB คุณสร้างฐานข้อมูล Cloud Firestore ได้หลายฐานต่อโปรเจ็กต์ คุณใช้ฐานข้อมูลหลายรายการเพื่อตั้งค่าสภาพแวดล้อมการทดสอบและการใช้งานจริง แยกข้อมูลลูกค้า และเพื่อการแบ่งภูมิภาคของข้อมูลได้

การใช้งานระดับฟรี

Cloud Firestore มีระดับฟรี ที่ช่วยให้คุณเริ่มต้นใช้งานได้โดยไม่มีค่าใช้จ่าย

ระดับฟรีจะมีผลกับฐานข้อมูล Cloud Firestore เพียง 1 ฐานข้อมูลต่อโปรเจ็กต์ ฐานข้อมูลแรกที่สร้างในโปรเจ็กต์ที่ไม่มีฐานข้อมูลระดับฟรีจะ ได้รับระดับฟรี หากลบฐานข้อมูลที่ใช้ระดับฟรีออก ฐานข้อมูลถัดไปที่สร้างจะได้รับระดับฟรี

ก่อนเริ่มต้น

คุณต้องดำเนินการต่อไปนี้ให้เสร็จสมบูรณ์ก่อนจึงจะสร้างฐานข้อมูลได้

  1. หากยังไม่ได้สร้างโปรเจ็กต์ Firebase ให้สร้างในFirebaseคอนโซลโดยคลิกเพิ่มโปรเจ็กต์ แล้วทำตาม วิธีการบนหน้าจอเพื่อสร้างโปรเจ็กต์ Firebase หรือเพิ่มบริการ Firebase ลงในโปรเจ็กต์ Google Cloud ที่มีอยู่

  2. กำหนดบทบาท Identity and Access Management ที่เหมาะสมตามที่อธิบายไว้ในส่วนถัดไป

บทบาทที่จำเป็น

หากต้องการสร้างและจัดการฐานข้อมูล คุณต้องมีบทบาทการจัดการข้อมูลประจำตัวและการเข้าถึง Owner หรือ Datastore Owner บทบาทเหล่านี้จะให้สิทธิ์ที่จำเป็น

สิทธิ์ที่จำเป็น

หากต้องการจัดการฐานข้อมูล คุณต้องมีสิทธิ์ต่อไปนี้

  • สร้างฐานข้อมูล datastore.databases.create
  • อ่านการกำหนดค่าฐานข้อมูล: datastore.databases.getMetadata
  • กำหนดค่าฐานข้อมูล datastore.databases.update
  • วิธีลบฐานข้อมูล datastore.databases.delete
  • โคลนฐานข้อมูล: datastore.databases.clone

สร้างฐานข้อมูล

หากต้องการสร้าง Cloud Firestore ที่มีฐานข้อมูลที่เข้ากันได้กับ MongoDB ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้

Firebase คอนโซล
  1. ในFirebaseคอนโซล ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. คลิกสร้างฐานข้อมูล
  3. เลือกรุ่น Enterprise คลิกถัดไป
  4. ป้อนรหัสฐานข้อมูล
  5. เลือกตำแหน่งสำหรับฐานข้อมูล
  6. กำหนดค่าฐานข้อมูลที่คุณเลือกโหมด
  7. คลิกสร้าง
Firebase CLI
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
gcloud CLI

ใช้คำสั่ง gcloud firestore databases create และตั้งค่า --edition=enterprise

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise

แทนที่ค่าต่อไปนี้

หากต้องการเปิดใช้การป้องกันการลบ ให้เพิ่มแฟล็ก --delete-protection คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้จนกว่าจะ ปิดใช้การตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

หากต้องการเพิ่มแท็ก ลงในฐานข้อมูล ให้ใช้ --tags แฟล็ก เช่น

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Terraform

ใช้แหล่งข้อมูล google_firestore_database และตั้งค่า database_edition เป็น ENTERPRISE

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

แทนที่ค่าต่อไปนี้

หากต้องการเปิดใช้การป้องกันการลบ ให้ตั้งค่า delete_protection_state เป็น DELETE_PROTECTION_ENABLED คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้ จนกว่าจะปิดใช้การตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น

รหัสฐานข้อมูล

รหัสฐานข้อมูลที่ถูกต้องประกอบด้วยรหัสที่เป็นไปตาม ข้อกำหนดต่อไปนี้

  • มีเฉพาะตัวอักษร ตัวเลข และขีดกลาง (-)
  • ตัวอักษรต้องเป็นตัวพิมพ์เล็ก
  • อักขระตัวแรกต้องเป็นตัวอักษร
  • อักขระสุดท้ายต้องเป็นตัวอักษรหรือตัวเลข
  • ต้องมีอักขระอย่างน้อย 4 ตัว
  • มีอักขระได้สูงสุด 63 ตัว
  • ต้องไม่ใช่ UUID หรือมีลักษณะคล้าย UUID เช่น อย่าใช้รหัสอย่าง f47ac10b-58cc-0372-8567-0e02b2c3d479

หากลบฐานข้อมูล คุณจะใช้รหัสฐานข้อมูลอีกครั้งไม่ได้ทันทีจนกว่าจะผ่านไป 5 นาที

การป้องกันการลบ

ใช้การป้องกันการลบเพื่อป้องกันการลบฐานข้อมูลโดยไม่ตั้งใจ การป้องกันการลบทำงานดังนี้

  • คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้จนกว่าจะปิดใช้การป้องกันการลบ
  • การป้องกันการลบจะปิดอยู่โดยค่าเริ่มต้น
  • คุณเปิดใช้การป้องกันการลบได้เมื่อสร้างฐานข้อมูล หรือจะอัปเดตการกำหนดค่าฐานข้อมูลเพื่อเปิดใช้การป้องกันการลบก็ได้

แสดงรายการฐานข้อมูล

ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแสดงฐานข้อมูล

Firebase คอนโซล
  1. ในFirebaseคอนโซล ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. คลิก Cloud Firestore เพื่อดูฐานข้อมูลทั้งหมดของโปรเจ็กต์
gcloud CLI

ใช้คำสั่ง gcloud firestore databases list เพื่อแสดงฐานข้อมูลทั้งหมดในโปรเจ็กต์

gcloud firestore databases list

ดูรายละเอียดฐานข้อมูล

หากต้องการดูรายละเอียดเกี่ยวกับฐานข้อมูลเดียว ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้

Firebase คอนโซล
  1. ในFirebaseคอนโซล ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. เลือกฐานข้อมูลจากรายการฐานข้อมูล
gcloud CLI

ใช้คำสั่ง gcloud firestore databases describe ดังนี้

gcloud firestore databases describe --database=DATABASE_ID

แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล

อัปเดตการกำหนดค่าฐานข้อมูล

หากต้องการอัปเดตการตั้งค่าการกำหนดค่าของฐานข้อมูล ให้ใช้คำสั่ง gcloud firestore databases update

ใช้คำสั่งนี้เพื่อเปลี่ยน เปิดใช้ หรือปิดใช้การป้องกันการลบ

อัปเดตการตั้งค่าการป้องกันการลบ

หากต้องการเปิดใช้การป้องกันการลบในฐานข้อมูล ให้ใช้คำสั่ง gcloud firestore databases update กับแฟล็ก --delete-protection เช่น

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

แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล

หากต้องการปิดใช้การป้องกันการลบในฐานข้อมูล ให้ใช้คำสั่ง gcloud firestore databases update พร้อมกับแฟล็ก --no-delete-protection เช่น

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

แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล

ลบฐานข้อมูล

หากต้องการลบฐานข้อมูล ให้ใช้คอนโซลหรือเครื่องมือบรรทัดคำสั่ง การลบฐานข้อมูลจะไม่ทำให้เกิดค่าใช้จ่ายสำหรับการดำเนินการลบ

หากฐานข้อมูลเปิดใช้การตั้งค่าการป้องกันการลบ คุณต้องปิดใช้การป้องกันการลบก่อน

Firebase คอนโซล
  1. ในFirebaseคอนโซล ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. เลือกฐานข้อมูลที่ต้องการลบ
  3. คลิก ดูเพิ่มเติม
  4. คลิกลบเพื่อลบฐานข้อมูล
gcloud CLI

ใช้คำสั่ง `gcloud firestore databases delete`

gcloud firestore databases delete --database=DATABASE_ID

แทนที่ DATABASE_ID ด้วยรหัสของฐานข้อมูลที่จะลบ

โคลนฐานข้อมูล

คุณสามารถโคลนฐานข้อมูลที่มีอยู่ ณ การประทับเวลาที่เลือกไปยังฐานข้อมูลใหม่ได้โดยทำดังนี้

  • ฐานข้อมูลที่โคลนคือฐานข้อมูลใหม่ที่จะสร้างในตำแหน่งเดียวกันกับฐานข้อมูลต้นทาง

    หากต้องการโคลน Cloud Firestore จะใช้ข้อมูลการกู้คืน ณ จุดเวลา (PITR) ของฐานข้อมูลต้นทาง ฐานข้อมูลที่โคลนจะมีข้อมูลและดัชนีทั้งหมด

  • โดยค่าเริ่มต้น ระบบจะเข้ารหัสฐานข้อมูลที่โคลนในลักษณะเดียวกับ ฐานข้อมูลต้นทาง โดยใช้การเข้ารหัสเริ่มต้นของ Google หรือการเข้ารหัส CMEK คุณระบุประเภทการเข้ารหัสอื่นหรือใช้คีย์อื่นสำหรับการเข้ารหัส CMEK ได้

  • การประทับเวลามีความละเอียด 1 นาทีและระบุจุดเวลา ในอดีต ในช่วงเวลาที่กำหนดโดยกรอบเวลา PITR ดังนี้

    • หากเปิดใช้ PITR สำหรับฐานข้อมูล คุณจะเลือกนาทีใดก็ได้ในช่วง 7 วันที่ผ่านมา (หรือน้อยกว่านั้นหากเปิดใช้ PITR เมื่อไม่ถึง 7 วันที่ผ่านมา)
    • หากไม่ได้เปิดใช้ PITR คุณจะเลือกนาทีใดก็ได้ในชั่วโมงที่ผ่านมา
    • คุณสามารถตรวจสอบการประทับเวลาที่เร็วที่สุดที่เลือกได้ในคำอธิบายของฐานข้อมูล

คอนโซล

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. คลิก ดูเพิ่มเติมในแถวตารางของฐานข้อมูลที่ต้องการโคลน คลิกโคลน กล่องโต้ตอบสร้างโคลนจะปรากฏขึ้น

  3. ในกล่องโต้ตอบสร้างโคลน ให้ระบุพารามิเตอร์สำหรับการโคลน ฐานข้อมูล

    1. ในช่องมอบรหัสให้แก่การโคลน ให้ป้อน รหัสฐานข้อมูล สำหรับฐานข้อมูลที่โคลนใหม่ รหัสฐานข้อมูลนี้ต้องไม่เชื่อมโยง กับฐานข้อมูลที่มีอยู่

    2. ในช่องโคลนจาก ให้เลือกจุดในเวลาที่จะใช้สำหรับการโคลน เวลาที่เลือกจะสอดคล้องกับการประทับเวลา PITR ที่มีความละเอียดระดับนาที

  4. คลิกสร้างโคลน

gcloud

ใช้คำสั่ง gcloud alpha firestore databases clone เพื่อโคลนฐานข้อมูล

gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

แทนที่ค่าต่อไปนี้

  • SOURCE_DATABASE: ชื่อฐานข้อมูลของฐานข้อมูลที่มีอยู่ซึ่งคุณต้องการโคลน ชื่อใช้รูปแบบ projects/PROJECT_ID/databases/SOURCE_DATABASE_ID

  • PITR_TIMESTAMP: การประทับเวลา PITR ในรูปแบบ RFC 3339 ที่มีความละเอียดระดับนาที เช่น 2025-06-01T10:20:00.00Z หรือ 2025-06-01T10:30:00.00-07:00

  • DESTINATION_DATABASE_ID: a รหัสฐานข้อมูล สำหรับฐานข้อมูลที่โคลนใหม่ รหัสฐานข้อมูลนี้ต้องไม่เชื่อมโยงกับฐานข้อมูลที่มีอยู่

ตัวอย่าง

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'

เปลี่ยนการกำหนดค่าการเข้ารหัสของฐานข้อมูลที่โคลน

โดยค่าเริ่มต้น ฐานข้อมูลที่โคลนจะมีค่ากำหนดการเข้ารหัสเดียวกันกับฐานข้อมูลต้นทาง หากต้องการเปลี่ยนการกำหนดค่าการเข้ารหัส ให้ใช้อาร์กิวเมนต์ --encryption-type

  • (ค่าเริ่มต้น) use-source-encryption: ใช้การกำหนดค่าการเข้ารหัสเดียวกันกับฐานข้อมูลต้นทาง
  • google-default-encryption: ใช้การเข้ารหัสเริ่มต้นของ Google
  • customer-managed-encryption: ใช้การเข้ารหัส CMEK ระบุ รหัสคีย์ ในอาร์กิวเมนต์ --kms-key-name

ตัวอย่างต่อไปนี้แสดงวิธีกําหนดค่าการเข้ารหัส CMEK สําหรับฐานข้อมูลที่โคลน

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

กำหนดค่าสิทธิ์การเข้าถึงต่อฐานข้อมูล

คุณใช้เงื่อนไขของ Identity and Access Management เพื่อกำหนดค่าสิทธิ์การเข้าถึงในระดับฐานข้อมูลได้ ตัวอย่างต่อไปนี้ใช้ Google Cloud CLI เพื่อกำหนดการเข้าถึงแบบมีเงื่อนไขสำหรับฐานข้อมูลอย่างน้อย 1 รายการ นอกจากนี้ คุณยังกำหนดเงื่อนไข IAM ใน Google Cloud Console ได้ด้วย

ดูนโยบาย IAM ที่มีอยู่

gcloud projects get-iam-policy PROJECT_ID

ตั้งค่า PROJECT_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: รหัสโปรเจ็กต์
  • EMAIL: อีเมลที่แสดงถึงบัญชีใดบัญชีหนึ่ง เช่น alice@example.com
  • DATABASE_ID: รหัสฐานข้อมูล
  • TITLE: ชื่อที่ไม่บังคับสำหรับนิพจน์
  • DESCRIPTION: คำอธิบายเพิ่มเติมของนิพจน์ (ไม่บังคับ)

ให้สิทธิ์เข้าถึงฐานข้อมูลทั้งหมด ยกเว้นฐานข้อมูลเดียว

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: รหัสโปรเจ็กต์
  • EMAIL: อีเมลที่แสดงถึงบัญชีใดบัญชีหนึ่ง เช่น alice@example.com
  • DATABASE_ID: รหัสฐานข้อมูล
  • TITLE: ชื่อที่ไม่บังคับสำหรับนิพจน์
  • DESCRIPTION: คำอธิบายเพิ่มเติมของนิพจน์ (ไม่บังคับ)

นำนโยบายสำหรับสมาชิกและบทบาทที่ระบุออก

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

ตั้งค่าดังนี้

  • PROJECT_ID: รหัสโปรเจ็กต์
  • EMAIL: อีเมลที่แสดงถึงบัญชีใดบัญชีหนึ่ง เช่น alice@example.com

ข้อจำกัด

คุณมีฐานข้อมูลได้สูงสุด 100 ฐานต่อโปรเจ็กต์ คุณสามารถติดต่อทีมสนับสนุนเพื่อขอเพิ่ม ขีดจำกัดนี้ได้

ขั้นตอนถัดไป