| เกี่ยวข้องกับ Cloud Firestore รุ่น Enterprise เท่านั้น |
หน้านี้อธิบายวิธีสร้าง อัปเดต และลบฐานข้อมูล Cloud Firestore ที่เข้ากันได้กับ MongoDB คุณสร้าง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 ที่มีฐานข้อมูลที่เข้ากันได้กับ MongoDB ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
Firebase คอนโซล
-
ในFirebaseคอนโซล ให้ไปที่หน้าฐานข้อมูล Firestore
- คลิกสร้างฐานข้อมูล
- เลือกรุ่น Enterprise คลิกถัดไป
- ป้อนรหัสฐานข้อมูล
- เลือกตำแหน่งสำหรับฐานข้อมูล
- กำหนดค่าฐานข้อมูลที่คุณเลือกโหมด
- คลิกสร้าง
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
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของ Cloud Firestore ที่มีหลายภูมิภาคหรือภูมิภาคที่เข้ากันได้กับ MongoDB
หากต้องการเปิดใช้การป้องกันการลบ ให้เพิ่มแฟล็ก --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 ที่มีหลายภูมิภาคหรือภูมิภาคที่เข้ากันได้กับ MongoDB
- 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 ให้ไปที่หน้าฐานข้อมูล
คลิก ดูเพิ่มเติมในแถวตารางของฐานข้อมูลที่ต้องการโคลน คลิกโคลน กล่องโต้ตอบสร้างโคลนจะปรากฏขึ้น
ในกล่องโต้ตอบสร้างโคลน ให้ระบุพารามิเตอร์สำหรับการโคลน ฐานข้อมูล
ในช่องมอบรหัสให้แก่การโคลน ให้ป้อน รหัสฐานข้อมูล สำหรับฐานข้อมูลที่โคลนใหม่ รหัสฐานข้อมูลนี้ต้องไม่เชื่อมโยง กับฐานข้อมูลที่มีอยู่
ในช่องโคลนจาก ให้เลือกจุดเวลาที่จะใช้สำหรับการโคลน เวลาที่เลือกจะสอดคล้องกับการประทับเวลา PITR ที่มีความละเอียดระดับนาที
คลิกสร้างโคลน
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_IDPITR_TIMESTAMP: a PITR timestamp in the RFC 3339 format, at minute granularity. เช่น
2025-06-01T10:20:00.00Zหรือ2025-06-01T10:30:00.00-07:00DESTINATION_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: ใช้การเข้ารหัสเริ่มต้นของ Googlecustomer-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.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 ที่มีความเข้ากันได้กับ MongoDB