หน้านี้จะอธิบายวิธีสร้าง อัปเดต และลบ Cloud Firestore ฐานข้อมูล คุณสามารถสร้างฐานข้อมูล Cloud Firestore ได้หลายรายการต่อ คุณสามารถใช้ฐานข้อมูลหลายรายการเพื่อตั้งค่าเวอร์ชันที่ใช้งานจริงและการทดสอบ สภาพแวดล้อม เพื่อแยกข้อมูลลูกค้าและสำหรับเขตข้อมูล
ฐานข้อมูล (default)
หากแอปไม่จำเป็นต้องใช้ฐานข้อมูลหลายรายการ ให้ใช้ฐานข้อมูล (default)
หากคุณไม่ระบุฐานข้อมูล ไลบรารีของไคลเอ็นต์ Cloud Firestore
และ Google Cloud CLI จะเชื่อมต่อกับฐานข้อมูล (default)
โดยค่าเริ่มต้น
(default)
เท่านั้น
บทบาทที่จำเป็น
หากต้องการสร้างและจัดการฐานข้อมูล คุณต้องมี Owner
หรือ Datastore Owner
บทบาท Identity and Access Management บทบาทเหล่านี้จะให้สิทธิ์ที่จำเป็น
สิทธิ์ที่จำเป็น
คุณต้องมีสิทธิ์ต่อไปนี้เพื่อจัดการฐานข้อมูล
- สร้างฐานข้อมูล:
datastore.databases.create
- อ่านการกำหนดค่าฐานข้อมูล:
datastore.databases.getMetadata
- กำหนดค่าฐานข้อมูล:
datastore.databases.update
- ลบฐานข้อมูล:
datastore.databases.delete
สร้างฐานข้อมูล
หากต้องการสร้างฐานข้อมูล ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
คอนโซล
-
ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูลของ Firestore
- หากนี่คือฐานข้อมูลที่มีชื่อรายการแรก ให้คลิกเพิ่มฐานข้อมูล
- หรือคลิก (ค่าเริ่มต้น) แล้วคลิกเพิ่มฐานข้อมูล
- กำหนดค่าฐานข้อมูล ป้อนรหัสฐานข้อมูล เลือกสถานที่ตั้ง คลิกสร้างฐานข้อมูล
gcloud
ใช้เมนู
gcloud firestore databases create
คำสั่ง
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของCloud Firestore หลายภูมิภาค หรือ ภูมิภาค
- DATABASE_TYPE:
firestore-native
สำหรับโหมดดั้งเดิม หรือ โหมดพื้นที่เก็บข้อมูลสำหรับโหมด Datastore
--delete-protection
คือ Flag ที่ไม่บังคับเพื่อเปิดใช้การป้องกันการลบ
คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้จนกว่าจะ
ปิดใช้การตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น
Firebase CLI
firebase firestore:databases:create DATABASE_ID \ --location=LOCATION \ [--delete-protection DELETE_PROTECTION_ENABLEMENT]
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของ Cloud Firestore หลายภูมิภาคหรือภูมิภาค
- DELETE_PROTECTION_ENABLEMENT:
ENABLED
หรือDISABLED
ฐานข้อมูลที่สร้างจะอยู่ในโหมดดั้งเดิมของ Firestore เสมอ
--delete-protection
เป็นตัวเลือกที่ไม่บังคับ
เพื่อเปิดใช้การป้องกันการลบ คุณไม่สามารถลบฐานข้อมูลที่มี
เปิดใช้การป้องกันการลบอยู่จนกว่าคุณจะปิดใช้การตั้งค่านี้ การตั้งค่านี้เป็นแบบ
ปิดใช้โดยค่าเริ่มต้น
Terraform
resource "google_firestore_database" "database" { project = "project-id" name = DATABASE_ID location_id = LOCATION type = DATABASE_TYPE // Optional delete_protection_state = DELETE_PROTECTION_STATE }
แทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสฐานข้อมูลที่ถูกต้อง
- LOCATION: ชื่อของ Cloud Firestore หลายภูมิภาคหรือภูมิภาค
- DATABASE_TYPE:
FIRESTORE_NATIVE
สำหรับโหมดดั้งเดิม หรือDATASTORE_MODE
สำหรับโหมด Datastore - DELETE_PROTECTION_ENABLEMENT: หรือ
DELETE_PROTECTION_ENABLED
หรือDELETE_PROTECTION_DISABLED
delete_protection_state
เป็นอาร์กิวเมนต์เสริมเพื่อเปิดใช้การลบ
คุณลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้
จนกว่าคุณจะปิดใช้การตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น
รหัสฐานข้อมูล
รหัสฐานข้อมูลที่ถูกต้องรวมถึง (default)
และรหัสที่สอดคล้องกับ
ดังต่อไปนี้:
- ประกอบด้วยอักขระตัวอักษร ตัวเลข และเครื่องหมายขีดกลาง (
-
) เท่านั้น - ตัวอักษรต้องเป็นตัวพิมพ์เล็ก
- โดยอักขระตัวแรกต้องเป็นตัวอักษร
- โดยอักขระตัวสุดท้ายต้องเป็นตัวอักษรหรือตัวเลข
- ต้องมีอักขระอย่างน้อย 4 ตัว
- มีอักขระได้สูงสุด 63 ตัว
- ต้องไม่เป็น UUID หรือคล้าย UUID ตัวอย่างเช่น อย่าใช้รหัสอย่างเช่น
f47ac10b-58cc-0372-8567-0e02b2c3d479
หากลบฐานข้อมูล คุณจะไม่สามารถใช้รหัสฐานข้อมูลซ้ำได้ทันทีจนกว่าจะครบ 5 นาที
ลบการปกป้อง
ใช้การป้องกันการลบเพื่อป้องกันการลบฐานข้อมูลโดยไม่ตั้งใจ คุณจะลบฐานข้อมูลที่เปิดใช้การป้องกันการลบไม่ได้จนกว่าจะปิดใช้ ลบการป้องกัน การป้องกันการลบจะปิดใช้โดยค่าเริ่มต้น คุณสามารถเปิดใช้ ลบการป้องกันเมื่อสร้างฐานข้อมูล หรือ อัปเดตการกำหนดค่าฐานข้อมูลเป็น เปิดใช้การป้องกันการลบ
ตั้งค่า Cloud Firestore Security Rules สำหรับฐานข้อมูลของคุณ
ใช้ Firebase CLI เพื่อทำให้ Cloud Firestore Security Rules ใช้งานได้ใน ฐานข้อมูล โปรดดูคู่มือสำหรับการจัดการและทำให้ Cloud Firestore Security Rules ใช้งานได้
เข้าถึงฐานข้อมูลที่มีชื่อด้วยไลบรารีของไคลเอ็นต์
ฐานข้อมูลที่มีชื่อจะมีฐานข้อมูลที่ไม่มีชื่อ (default)
โดยค่าเริ่มต้น
ไลบรารีของไคลเอ็นต์ Google API และ Firebase SDK จะเชื่อมต่อกับ (default)
Cloud Firestoreฐานข้อมูลในโปรเจ็กต์ วิธีสร้างไคลเอ็นต์ที่เชื่อมต่อ
ไปยังฐานข้อมูลที่มีชื่อ ให้ตั้งรหัสฐานข้อมูลเมื่อคุณสร้างอินสแตนซ์ไคลเอ็นต์
แสดงรายการฐานข้อมูล
ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแสดงฐานข้อมูล
คอนโซล
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
gcloud
ใช้เมนู
gcloud firestore databases list
เพื่อแสดงฐานข้อมูลทั้งหมดในโปรเจ็กต์ของคุณ
gcloud firestore databases list
Firebase CLI
ใช้คำสั่ง firebase firestore:databases:list
เพื่อแสดงฐานข้อมูลทั้งหมดในโปรเจ็กต์
firebase firestore:databases:list
ดูรายละเอียดฐานข้อมูล
หากต้องการดูรายละเอียดเกี่ยวกับฐานข้อมูลเดียว ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้คำสั่ง gcloud firestore databases describe
gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI
ใช้คำสั่ง firebase firestore:databases:get
ดังนี้
วันที่
firebase firestore:databases:get DATABASE_ID
แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล
อัปเดตการกำหนดค่าฐานข้อมูล
หากต้องการอัปเดตการตั้งค่าการกำหนดค่าของฐานข้อมูล ให้ใช้เมธอด
gcloud firestore databases update
คำสั่ง
ใช้คำสั่งนี้เพื่อเปลี่ยนเพื่อเปิดใช้หรือปิดใช้การป้องกันการลบ
อัปเดตการตั้งค่าการป้องกันการลบ
หากต้องการเปิดใช้การป้องกันการลบในฐานข้อมูล ให้ใช้
gcloud firestore databases update
ที่มีแฟล็ก --delete-protection
เช่น
gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection
แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล
หากต้องการปิดการป้องกันการลบในฐานข้อมูล ให้ใช้
gcloud firestore databases update
ที่มีแฟล็ก --no-delete-protection
เช่น
gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล
ลบฐานข้อมูล
หากต้องการลบฐานข้อมูล ให้ใช้เครื่องมือคอนโซลหรือเครื่องมือบรรทัดคำสั่ง
หากฐานข้อมูลเปิดใช้การตั้งค่าการป้องกันการลบไว้ คุณต้อง ก่อนอื่น ให้ปิดใช้การป้องกันการลบ
หากฐานข้อมูลมีข้อมูลการค้นหา App Engine หรือ เอนทิตี BLOB คุณต้องลบข้อมูลนั้นก่อน
การลบฐานข้อมูลจะไม่ลบฐานข้อมูล ทริกเกอร์ Eventarc รายการสำหรับฐานข้อมูลนั้น ทริกเกอร์จะหยุดส่งเหตุการณ์แต่จะยังคงมีอยู่จนกว่าคุณจะ ลบทริกเกอร์
คอนโซล
-
ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูลของ Firestore
- บนแท็บ ข้อมูล ที่ด้านบนของมุมมองตารางข้อมูลสำหรับฐานข้อมูล ให้คลิก แล้วเลือก ลบฐานข้อมูล
- ทำตามวิธีการเพื่อลบฐานข้อมูล
gcloud
ใช้เมนู คำสั่ง `gcloudfirestore Databases delete`
gcloud firestore databases delete --database=DATABASE_ID
แทนที่ DATABASE_ID ด้วยรหัสของฐานข้อมูลที่จะลบ
กำหนดค่าสิทธิ์การเข้าถึงแต่ละฐานข้อมูล
คุณสามารถใช้ เงื่อนไขของ 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
: อีเมลที่แสดงถึงบัญชี Google หนึ่งๆ เช่นalice@example.com
DATABASE_ID
: รหัสฐานข้อมูลTITLE
: ชื่อที่ไม่บังคับสำหรับนิพจน์DESCRIPTION
: คำอธิบายนิพจน์ที่ไม่บังคับ
ให้สิทธิ์เข้าถึงฐานข้อมูลทั้งหมดยกเว้น 1 ฐานข้อมูล
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
: อีเมลที่แสดงถึงบัญชี Google หนึ่งๆ เช่น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
: อีเมลที่แสดงถึงบัญชี Google หนึ่งๆ เช่นalice@example.com
Cloud Monitoring
เมตริก Cloud Firestore รายการได้รับการรายงานภายใต้ทรัพยากรที่มีการตรวจสอบ 2 รายการ
คุณตรวจสอบเมตริกแบบรวมในระดับฐานข้อมูลได้โดยดูที่ firestore.googleapis.com/Database
เมตริกที่รายงานภายใต้ firestore_instance
จะรวบรวมที่ระดับโปรเจ็กต์
ข้อจำกัด
- คุณมีฐานข้อมูลได้สูงสุด 100 รายการต่อโปรเจ็กต์ คุณติดต่อทีมสนับสนุนเพื่อขอเพิ่มขีดจำกัดนี้ได้
- คุณไม่สามารถลบฐานข้อมูล
(default)
ได้หากมีข้อมูลการค้นหา GAE โปรดใช้ index delete api เพื่อลบข้อมูลการค้นหา GAE หากคุณเพิ่งลบข้อมูลการค้นหา GAE คุณอาจต้องรอสักระยะก่อนที่คุณจะสามารถลบฐานข้อมูลได้ - คุณไม่สามารถลบฐานข้อมูล
(default)
ได้หากมีเอนทิตี BLOB โปรดใช้ Blobstore delete api เพื่อลบข้อมูล Blobstore คุณตรวจสอบว่าฐานข้อมูล(default)
มีข้อมูล Blobstore หรือไม่โดยเรียกใช้การค้นหา GQL ต่อไปนี้ ในคอนโซล Google Cloud:SELECT * FROM __BlobInfo__
- คุณจะใช้รหัสฐานข้อมูลซ้ำไม่ได้จนกว่าจะดำเนินการลบไปแล้ว 5 นาที
- Cloud Function v1 ไม่รองรับฐานข้อมูลที่มีชื่อของ Firestore โปรดใช้ทริกเกอร์ Cloud Firestore (รุ่นที่ 2) เพื่อกำหนดค่าเหตุการณ์สำหรับฐานข้อมูลที่มีชื่อ
- ทริกเกอร์ฟังก์ชัน v1 และทริกเกอร์เหตุการณ์ของ Firestore อาจหยุดทำงานหลังจากลบฐานข้อมูลแล้ว แม้ว่าจะมีการสร้างฐานข้อมูลใหม่ด้วยชื่อเดียวกันก็ตาม