เกี่ยวข้องกับ Cloud Firestore Enterprise Edition เท่านั้น |
หน้านี้อธิบายวิธีสร้าง อัปเดต และลบฐานข้อมูล 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_ID
PITR_TIMESTAMP: การประทับเวลา PITR ในรูปแบบ RFC 3339 ที่มีความละเอียดระดับนาที เช่น
2025-06-01T10:20:00.00Z
หรือ2025-06-01T10:30:00.00-07:00
DESTINATION_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.com
DATABASE_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.com
DATABASE_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