หน้านี้อธิบายวิธีสร้าง อัปเดต และลบฐานข้อมูล Cloud Firestore คุณสร้างฐานข้อมูล Cloud Firestore ได้หลายฐานข้อมูลต่อโปรเจ็กต์ คุณสามารถใช้ฐานข้อมูลหลายรายการเพื่อตั้งค่าสภาพแวดล้อมการใช้งานจริงและการทดสอบ เพื่อแยกข้อมูลลูกค้า และเพื่อการจัดระเบียบข้อมูลตามภูมิภาค
การใช้งานรุ่นฟรี
Cloud Firestore มีรุ่นฟรีที่ให้คุณเริ่มต้นใช้งานได้โดยไม่มีค่าใช้จ่าย
รุ่นฟรีใช้ได้กับฐานข้อมูล Cloud Firestore เพียง 1 ฐานข้อมูลต่อโปรเจ็กต์เท่านั้น ฐานข้อมูลแรกที่สร้างในโปรเจ็กต์ที่ไม่มีฐานข้อมูลรุ่นฟรีจะได้รับรุ่นฟรี หากลบฐานข้อมูลที่ใช้รุ่นฟรี ฐานข้อมูลถัดไปที่สร้างจะได้รับรุ่นฟรี
ก่อนเริ่มต้น
คุณต้องดำเนินการต่อไปนี้ให้เสร็จสมบูรณ์ก่อนสร้างฐานข้อมูล
-
หากยังไม่ได้สร้างโปรเจ็กต์ Firebase ให้ไปที่คอนโซล Firebase แล้วคลิกเพิ่มโปรเจ็กต์ จากนั้นทำตามวิธีการบนหน้าจอเพื่อสร้างโปรเจ็กต์ Firebase หรือเพิ่มบริการ Firebase ลงในโปรเจ็กต์ Google Cloud ที่มีอยู่
- มอบหมายบทบาท Identity and Access Management ที่เหมาะสมตามที่อธิบายไว้ในส่วนถัดไป
บทบาทที่จำเป็น
หากต้องการสร้างและจัดการฐานข้อมูล คุณต้องมีบทบาท Identity and Access Management เป็น Owner หรือ Datastore Owner บทบาทเหล่านี้จะให้สิทธิ์ที่จำเป็น
สิทธิ์ที่จำเป็น
หากต้องการจัดการฐานข้อมูล คุณต้องมีสิทธิ์ต่อไปนี้
- สร้างฐานข้อมูล:
datastore.databases.create - อ่านการกำหนดค่าฐานข้อมูล:
datastore.databases.getMetadata - กำหนดค่าฐานข้อมูล:
datastore.databases.update - ลบฐานข้อมูล:
datastore.databases.delete - โคลนฐานข้อมูล:
datastore.databases.clone
สร้างฐานข้อมูล
หากต้องการสร้างฐานข้อมูล Cloud Firestore ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
คอนโซล Firebase
-
ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore
- คลิกเพิ่มฐานข้อมูล
- เลือกรุ่น Enterprise คลิกถัดไป
- เลือก Firestore ที่มีความเข้ากันได้กับ MongoDB
- ป้อนรหัสฐานข้อมูล
- เลือกตำแหน่งสำหรับฐานข้อมูล
- คลิกสร้าง
Firebase CLI
firebase firestore:databases:create --edition enterprise DATABASE_ID \n--location=LOCATION \n[--firestore-data-access FIRESTORE_ACCESS] \n[--mongodb-compatible-data-access MONGODB_ACCESS] \n[--realtime-updates REALTIME_UPDATES]
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของCloud Firestoreหลายภูมิภาคหรือภูมิภาค
- FIRESTORE_ACCESS:
ENABLEDหรือDISABLEDค่าเริ่มต้นคือENABLED - MONGODB_ACCESS:
ENABLEDหรือDISABLEDค่าเริ่มต้นคือDISABLED - REALTIME_UPDATES:
ENABLEDหรือDISABLEDค่าเริ่มต้นคือENABLEDหากเปิดใช้firestore-data-access
gcloud CLI
ใช้คำสั่ง
gcloud firestore databases create
และตั้งค่า --edition=enterprise
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=enterprise \ --enable-mongodb-compatible-data-access
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของCloud Firestoreหลายภูมิภาคหรือภูมิภาค
หากต้องการเปิดใช้การป้องกันการลบ ให้เพิ่มแฟล็ก --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" }
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของCloud Firestoreหลายภูมิภาคหรือภูมิภาค
- DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLEDหรือDELETE_PROTECTION_DISABLED
หากต้องการเปิดใช้การป้องกันการลบ ให้ตั้งค่า delete_protection_state เป็น DELETE_PROTECTION_ENABLED
คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้จนกว่าจะปิดใช้การตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น
รหัสฐานข้อมูล
รหัสฐานข้อมูลที่ถูกต้องประกอบด้วยรหัสที่สอดคล้องกับสิ่งต่อไปนี้
- มีเฉพาะตัวอักษร ตัวเลข และอักขระขีดกลาง (
-) เท่านั้น - ตัวอักษรต้องเป็นตัวพิมพ์เล็ก
- อักขระตัวแรกต้องเป็นตัวอักษร
- อักขระสุดท้ายต้องเป็นตัวอักษรหรือตัวเลข
- มีอักขระอย่างน้อย 4 ตัว
- มีอักขระได้สูงสุด 63 ตัว
- ต้องไม่ใช่ UUID หรือคล้ายกับ UUID เช่น อย่าใช้รหัสอย่าง
f47ac10b-58cc-0372-8567-0e02b2c3d479
หากลบฐานข้อมูล คุณจะใช้รหัสฐานข้อมูลซ้ำทันทีไม่ได้จนกว่าจะผ่านไป 5 นาที
ลบการปกป้อง
ใช้การป้องกันการลบเพื่อป้องกันการลบฐานข้อมูลโดยไม่ตั้งใจ การป้องกันการลบทำงานดังนี้
- คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้จนกว่าจะปิดใช้การป้องกันการลบ
- การป้องกันการลบจะปิดอยู่โดยค่าเริ่มต้น
- คุณสามารถเปิดใช้การป้องกันการลบเมื่อสร้างฐานข้อมูล หรือจะอัปเดตการกำหนดค่าฐานข้อมูลเพื่อเปิดใช้การป้องกันการลบก็ได้
แสดงรายการฐานข้อมูล
ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแสดงรายการฐานข้อมูล
คอนโซล Firebase
-
ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore
- คลิก Cloud Firestore เพื่อดูฐานข้อมูลทั้งหมดของโปรเจ็กต์
gcloud CLI
ใช้คำสั่ง gcloud firestore databases list เพื่อแสดงรายการฐานข้อมูลทั้งหมดในโปรเจ็กต์
gcloud firestore databases list
ดูรายละเอียดฐานข้อมูล
หากต้องการดูรายละเอียดเกี่ยวกับฐานข้อมูลเดียว ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
คอนโซล Firebase
-
ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore
- เลือกฐานข้อมูลจากรายการฐานข้อมูล
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
-
ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore
- เลือกฐานข้อมูลที่ต้องการลบ
- คลิก ดูเพิ่มเติม
- คลิกลบเพื่อลบฐานข้อมูล
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 คุณจะเลือกนาทีใดก็ได้ในชั่วโมงที่ผ่านมา
- คุณสามารถตรวจสอบการประทับเวลาที่เร็วที่สุดที่เลือกได้ในคำอธิบายของฐานข้อมูล
คอนโซล Google Cloud
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
คลิก ดูเพิ่มเติมในแถวตารางสำหรับฐานข้อมูลที่ต้องการโคลน คลิกโคลน กล่องโต้ตอบสร้างร่างโคลนจะปรากฏขึ้น
ในกล่องโต้ตอบสร้างโคลน ให้ระบุพารามิเตอร์สำหรับการโคลนฐานข้อมูล ดังนี้
ในช่องระบุรหัสของโคลน ให้ระบุรหัสฐานข้อมูลสำหรับฐานข้อมูลที่โคลนใหม่ รหัสฐานข้อมูลนี้ต้องไม่เชื่อมโยงกับฐานข้อมูลที่มีอยู่
ในช่องโคลนจาก ให้เลือกจุดเวลาที่จะใช้สำหรับการโคลน เวลาที่เลือกจะสอดคล้องกับการประทับเวลา PITR ที่ระดับความละเอียดเป็นนาที
คลิกสร้างโคลน
gcloud
ใช้คำสั่ง
gcloud firestore databases clone
เพื่อโคลนฐานข้อมูล
gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
แทนที่ค่าต่อไปนี้
SOURCE_DATABASE: ชื่อฐานข้อมูลของฐานข้อมูลที่มีอยู่ซึ่งคุณต้องการโคลน ชื่อจะใช้รูปแบบ
projects/PROJECT_ID/databases/SOURCE_DATABASE_IDPITR_TIMESTAMP: การประทับเวลา PITR ในรูปแบบ RFC 3339 ที่ความละเอียดระดับนาที เช่น
2025-06-01T10:20:00.00Zหรือ2025-06-01T10:30:00.00-07:00DESTINATION_DATABASE_ID: รหัสฐานข้อมูลสำหรับฐานข้อมูลที่โคลนใหม่ รหัสฐานข้อมูลนี้ต้องไม่เชื่อมโยงกับฐานข้อมูลที่มีอยู่
ตัวอย่าง
gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'
หากต้องการเชื่อมโยงกับแท็กบางรายการขณะโคลนฐานข้อมูล ให้ใช้คำสั่งก่อนหน้าที่มีแฟล็ก --tags ซึ่งเป็นรายการคู่คีย์-ค่าของแท็กที่ไม่บังคับให้เชื่อมโยง
ตัวอย่าง
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2
โดยค่าเริ่มต้น ฐานข้อมูลที่โคลนจะมีการกำหนดค่าการเข้ารหัสเหมือนกับฐานข้อมูลต้นทาง หากต้องการเปลี่ยนการกำหนดค่าการเข้ารหัส ให้ใช้อาร์กิวเมนต์ --encryption-type ดังนี้
- (ค่าเริ่มต้น)
use-source-encryption: ใช้การกำหนดค่าการเข้ารหัสเดียวกันกับฐานข้อมูลต้นทาง google-default-encryption: ใช้การเข้ารหัสเริ่มต้นของ Googlecustomer-managed-encryption: ใช้การเข้ารหัส CMEK ระบุรหัสคีย์ในอาร์กิวเมนต์--kms-key-name
ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าการเข้ารหัส CMEK สำหรับฐานข้อมูลที่โคลน
gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='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 ได้ด้วย
ดูนโยบาย 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.comDATABASE_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.comDATABASE_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 รายการต่อโปรเจ็กต์ คุณสามารถติดต่อทีมสนับสนุนเพื่อขอเพิ่มขีดจำกัดนี้ได้
ขั้นตอนถัดไป
- เรียกใช้ คู่มือเริ่มใช้งานฉบับย่อ: สร้างฐานข้อมูลและเชื่อมต่อ
- ดูข้อมูลเกี่ยวกับความแตกต่างของลักษณะการทำงาน
- ดูข้อมูลเกี่ยวกับเมตริก Cloud Monitoring สำหรับ Cloud Firestore