หน้านี้อธิบายวิธีสร้าง อัปเดต และลบ Cloud Firestore ฐานข้อมูล คุณสร้างฐานข้อมูลได้หลายฐานข้อมูลต่อ โปรเจ็กต์Cloud Firestore คุณสามารถใช้ฐานข้อมูลหลายฐานข้อมูลเพื่อตั้งค่าสภาพแวดล้อมการใช้งานจริงและการทดสอบ แยกข้อมูลลูกค้า และใช้สำหรับการกำหนดภูมิภาคของข้อมูล
การใช้งานระดับฟรี
Cloud Firestore มีระดับฟรี ที่ช่วยให้คุณเริ่มต้นใช้งานได้โดยไม่มีค่าใช้จ่าย
ระดับฟรีใช้ได้กับฐานข้อมูล Cloud Firestore เพียงฐานเดียวต่อโปรเจ็กต์ ฐานข้อมูลแรกที่สร้างในโปรเจ็กต์ที่ไม่มีฐานข้อมูลระดับฟรีจะได้รับระดับฟรี หากลบฐานข้อมูลที่มีระดับฟรีออก ฐานข้อมูลถัดไปที่สร้างขึ้นจะได้รับระดับฟรี
ก่อนเริ่มต้น
คุณต้องทำตามขั้นตอนต่อไปนี้ให้เสร็จสมบูรณ์ก่อนสร้างฐานข้อมูล
-
หากยังไม่ได้สร้างโปรเจ็กต์ 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 ได้
การประทับเวลามีความละเอียดระดับนาทีและระบุจุดเวลา ในอดีตในช่วงเวลาที่กำหนดโดย กรอบเวลา PITR ดังนี้
- หากเปิดใช้ PITR สำหรับฐานข้อมูล คุณสามารถเลือกนาทีใดก็ได้ในช่วง 7 วันที่ผ่านมา (หรือน้อยกว่าหากเปิดใช้ PITR น้อยกว่า 7 วันที่ผ่านมา)
- หากไม่ได้เปิดใช้ PITR คุณสามารถเลือกนาทีใดก็ได้ในช่วงชั่วโมงที่ผ่านมา
- คุณสามารถตรวจสอบการประทับเวลาที่เก่าที่สุดที่คุณสามารถเลือกได้ ในคำอธิบายของฐานข้อมูล
คอนโซล
ในคอนโซล 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 ซึ่งเป็นรายการแท็ก KEY=VALUE ที่ไม่บังคับเพื่อผูก
ตัวอย่าง
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