หน้านี้อธิบายวิธีสร้าง อัปเดต และลบ 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 ในโหมดดั้งเดิม
- ป้อนรหัสฐานข้อมูล
- เลือกตำแหน่งสำหรับฐานข้อมูล คลิกถัดไป
- เลือกว่าจะเปิดหรือปิดใช้การอัปเดตแบบเรียลไทม์
การอัปเดตแบบเรียลไทม์ช่วยให้ฐานข้อมูลรองรับ Listener
onSnapshotระบบจะเปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้นสำหรับฐานข้อมูล Enterprise ในโหมดดั้งเดิม -
เลือกโหมดเริ่มต้นสำหรับ 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 \ --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: การประทับเวลา 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'
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: การประทับเวลา 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 ได้ด้วย
ดูนโยบาย 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