หน้านี้อธิบายวิธีสร้าง อัปเดต และลบCloud Firestore ฐานข้อมูล คุณสร้างCloud Firestoreฐานข้อมูลได้หลายฐานต่อโปรเจ็กต์ คุณใช้ฐานข้อมูลหลายรายการเพื่อตั้งค่าสภาพแวดล้อมการทดสอบและการใช้งานจริง แยกข้อมูลลูกค้า และเพื่อการแบ่งภูมิภาคของข้อมูลได้
การใช้งานระดับฟรี
Cloud Firestore มีระดับฟรี ที่ให้คุณเริ่มต้นใช้งานได้โดยไม่มีค่าใช้จ่าย
ระดับฟรีจะมีผลกับฐานข้อมูล Cloud Firestore เพียง 1 ฐานข้อมูลต่อโปรเจ็กต์เท่านั้น ฐานข้อมูลแรกที่สร้างในโปรเจ็กต์ที่ไม่มีฐานข้อมูลระดับฟรีจะ ได้รับระดับฟรี หากลบฐานข้อมูลที่ใช้ระดับฟรีออก ฐานข้อมูลถัดไปที่สร้างจะได้รับระดับฟรี
ก่อนเริ่มต้น
คุณต้องดำเนินการต่อไปนี้ให้เสร็จสมบูรณ์ก่อนจึงจะสร้างฐานข้อมูลได้
-
หากยังไม่ได้สร้างโปรเจ็กต์ Firebase ให้สร้างในFirebaseคอนโซลโดยคลิกเพิ่มโปรเจ็กต์ แล้วทำตาม วิธีการบนหน้าจอเพื่อสร้างโปรเจ็กต์ Firebase หรือเพิ่มบริการ Firebase ลงในโปรเจ็กต์ Google Cloud ที่มีอยู่
- กำหนดบทบาท 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 ในโหมดดั้งเดิม
- ป้อนรหัสฐานข้อมูล
- เลือกตำแหน่งสำหรับฐานข้อมูล คลิกถัดไป
-
เลือกโหมดเริ่มต้นสำหรับ Cloud Firestore Security Rules
- โหมดทดสอบ
- เหมาะสําหรับการเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์อุปกรณ์เคลื่อนที่และเว็บ แต่ อนุญาตให้ทุกคนอ่านและเขียนทับข้อมูลของคุณได้ หลังจากทดสอบแล้ว อย่าลืมตรวจสอบส่วนรักษาความปลอดภัยให้ข้อมูล
- โหมดโปรดักชัน
- ปฏิเสธการอ่านและการเขียนทั้งหมดจากไคลเอ็นต์อุปกรณ์เคลื่อนที่และเว็บ เซิร์ฟเวอร์แอปพลิเคชันที่ได้รับการตรวจสอบสิทธิ์ (Node.js, Python, Java) จะยังเข้าถึงฐานข้อมูลได้
- คลิกสร้าง
gcloud CLI
ใช้คำสั่ง
gcloud firestore databases create
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=enterprise \ --enable-firestore-data-access \ --no-enable-mongodb-compatible-data-access \ --enable-realtime-updates
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของCloud Firestoreหลายภูมิภาคหรือภูมิภาค
รหัสฐานข้อมูล
รหัสฐานข้อมูลที่ถูกต้องประกอบด้วยรหัสที่เป็นไปตาม ข้อกำหนดต่อไปนี้
- มีเฉพาะตัวอักษร ตัวเลข และขีดกลาง (
-) - ตัวอักษรต้องเป็นตัวพิมพ์เล็ก
- อักขระตัวแรกต้องเป็นตัวอักษร
- อักขระสุดท้ายต้องเป็นตัวอักษรหรือตัวเลข
- ต้องมีอักขระอย่างน้อย 4 ตัว
- มีอักขระได้สูงสุด 63 ตัว
- ต้องไม่ใช่ UUID หรือมีลักษณะคล้าย UUID เช่น อย่าใช้รหัสอย่าง
f47ac10b-58cc-0372-8567-0e02b2c3d479
หากลบฐานข้อมูล คุณจะใช้รหัสฐานข้อมูลอีกครั้งไม่ได้ทันทีจนกว่าจะผ่านไป 5 นาที
การป้องกันการลบ
ใช้การป้องกันการลบเพื่อป้องกันการลบฐานข้อมูลโดยไม่ตั้งใจ การป้องกันการลบทำงานดังนี้
- คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้จนกว่าจะปิดใช้การป้องกันการลบ
- การป้องกันการลบจะปิดอยู่โดยค่าเริ่มต้น
- คุณเปิดใช้การป้องกันการลบได้เมื่อสร้างฐานข้อมูล หรือจะอัปเดตการกำหนดค่าฐานข้อมูลเพื่อเปิดใช้การป้องกันการลบก็ได้
แสดงรายการฐานข้อมูล
ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแสดงฐานข้อมูล
gcloud CLI
ใช้คำสั่ง
gcloud firestore databases list
เพื่อแสดงฐานข้อมูลทั้งหมดในโปรเจ็กต์
gcloud firestore databases list
ดูรายละเอียดฐานข้อมูล
หากต้องการดูรายละเอียดเกี่ยวกับฐานข้อมูลเดียว ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
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 ด้วยรหัสฐานข้อมูล
ลบฐานข้อมูล
หากต้องการลบฐานข้อมูล ให้ใช้คอนโซลหรือเครื่องมือบรรทัดคำสั่ง การลบฐานข้อมูลจะไม่ทำให้เกิดค่าใช้จ่ายสำหรับการดำเนินการลบ
หากฐานข้อมูลเปิดใช้การตั้งค่าการป้องกันการลบ คุณต้องปิดใช้การป้องกันการลบก่อน
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 ให้ไปที่หน้าฐานข้อมูล
คลิก ดูเพิ่มเติมในแถวของตารางสำหรับฐานข้อมูลที่ต้องการโคลน คลิกโคลน กล่องโต้ตอบสร้างโคลนจะปรากฏขึ้น
ในกล่องโต้ตอบสร้างโคลน ให้ระบุพารามิเตอร์สำหรับการโคลน ฐานข้อมูล
ในช่องมอบรหัสให้แก่การโคลน ให้ป้อน รหัสฐานข้อมูล สำหรับฐานข้อมูลที่โคลนใหม่ รหัสฐานข้อมูลนี้ต้องไม่เชื่อมโยง กับฐานข้อมูลที่มีอยู่
ในช่องโคลนจาก ให้เลือกช่วงเวลาที่จะใช้สำหรับการโคลน เวลาที่เลือกจะสอดคล้องกับการประทับเวลา 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: a การประทับเวลา 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'
Firebase CLI
ใช้คำสั่ง firebase firestore:databases:clone เพื่อโคลนฐานข้อมูล
firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP' \
แทนที่ค่าต่อไปนี้
SOURCE_DATABASE: ชื่อฐานข้อมูลของฐานข้อมูลที่มีอยู่ซึ่งคุณต้องการโคลน ชื่อใช้รูปแบบ
projects/PROJECT_ID/databases/SOURCE_DATABASE_IDDESTINATION_DATABASE: ชื่อฐานข้อมูล สำหรับฐานข้อมูลที่โคลนใหม่ ชื่อใช้รูปแบบ
projects/PROJECT_ID/databases/DESTINATION_DATABASE_IDชื่อฐานข้อมูลนี้ต้องไม่เชื่อมโยงกับฐานข้อมูลที่มีอยู่PITR_TIMESTAMP: a การประทับเวลา PITR ใน รูปแบบ RFC 3339 ที่มีความละเอียดระดับนาที เช่น
2025-06-01T10:20:00.00Zหรือ2025-06-01T10:30:00.00-07:00หากไม่ได้ระบุ สแนปชอตที่เลือกจะเป็นเวลาปัจจุบัน โดยปัดเศษลงเป็นนาที
โดยค่าเริ่มต้น ฐานข้อมูลที่โคลนจะมีค่ากำหนดการเข้ารหัสเดียวกันกับฐานข้อมูลต้นทาง หากต้องการเปลี่ยนการกำหนดค่าการเข้ารหัส ให้ใช้อาร์กิวเมนต์
--encryption-type
- (ค่าเริ่มต้น)
USE_SOURCE_ENCRYPTION: ใช้การกำหนดค่าการเข้ารหัสเดียวกันกับฐานข้อมูลต้นทาง GOOGLE_DEFAULT_ENCRYPTION: ใช้การเข้ารหัสเริ่มต้นของ GoogleCUSTOMER_MANAGED_ENCRYPTION: ใช้การเข้ารหัส CMEK ระบุ รหัสคีย์ ในอาร์กิวเมนต์--kms-key-name
กำหนดค่าสิทธิ์การเข้าถึงต่อฐานข้อมูล
คุณใช้เงื่อนไขของ 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.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