หน้านี้อธิบายวิธีสร้าง อัปเดต และลบฐานข้อมูล Cloud Firestore คุณสามารถสร้างฐานข้อมูล Cloud Firestore ได้หลายฐานข้อมูลต่อโปรเจ็กต์ คุณสามารถใช้หลายฐานข้อมูลเพื่อตั้งค่าสภาพแวดล้อมการผลิตและการทดสอบ เพื่อแยกข้อมูลลูกค้า และสำหรับการจัดภูมิภาคของข้อมูล
ฐานข้อมูล (default)
หากแอปของคุณไม่ต้องการหลายฐานข้อมูล ให้ใช้ฐานข้อมูล (default)
หากคุณไม่ได้ระบุฐานข้อมูล ไลบรารีไคลเอ็นต์ Cloud Firestore และ Google Cloud CLI จะเชื่อมต่อกับฐานข้อมูล (default)
ตามค่าเริ่มต้น
(default)
เท่านั้นบทบาทที่จำเป็น
หากต้องการสร้างและจัดการฐานข้อมูล คุณต้องมีบทบาท Owner
หรือข้อมูล Datastore Owner
ข้อมูลและการจัดการการเข้าถึง บทบาทเหล่านี้ให้สิทธิ์ที่จำเป็น
สิทธิ์ที่จำเป็น
ในการจัดการฐานข้อมูล คุณต้องมีสิทธิ์ต่อไปนี้:
- สร้างฐานข้อมูล:
datastore.databases.create
- อ่านการกำหนดค่าฐานข้อมูล:
datastore.databases.getMetadata
- กำหนดค่าฐานข้อมูล:
datastore.databases.update
- ลบฐานข้อมูล:
datastore.databases.delete
สร้างฐานข้อมูล
เมื่อต้องการสร้างฐานข้อมูล ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้:
คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
- คลิก สร้างฐานข้อมูล
- เลือกโหมดฐานข้อมูล คลิก ดำเนินการต่อ
- กำหนดค่าฐานข้อมูลของคุณ ป้อนรหัสฐานข้อมูล เลือกสถานที่ คลิก สร้างฐานข้อมูล
gcloud
ใช้คำสั่ง gcloud alpha firestore databases create
gcloud alpha firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
แทนที่สิ่งต่อไปนี้:
- DATABASE_ID : ID ฐานข้อมูลที่ถูกต้อง
- LOCATION : ชื่อของ Cloud Firestore หลายภูมิภาคหรือภูมิภาค
- DATABASE_TYPE :
firestore-native
สำหรับโหมด Native หรือ datastore-mode สำหรับโหมด Datastore
--delete-protection
เป็นแฟล็กเสริมเพื่อเปิดใช้งานการป้องกันการลบ คุณไม่สามารถลบฐานข้อมูลที่เปิดใช้งานการป้องกันการลบได้จนกว่าคุณจะปิดใช้งานการตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานตามค่าเริ่มต้น
Firebase CLI
firebase firestore:databases:create DATABASE_ID \ --location=LOCATION \ [--delete-protection DELETE_PROTECTION_ENABLEMENT]
แทนที่สิ่งต่อไปนี้:
- DATABASE_ID : ID ฐานข้อมูลที่ถูกต้อง
- LOCATION : ชื่อของ Cloud Firestore หลายภูมิภาคหรือภูมิภาค
- DELETE_PROTECTION_ENABLEMENT :
ENABLED
หรือDISABLED
อย่างใดอย่างหนึ่ง ฐานข้อมูลที่สร้างขึ้นจะอยู่ในโหมด Firestore Native เสมอ
--delete-protection
เทอร์ราฟอร์ม
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 : ID ฐานข้อมูลที่ถูกต้อง
- LOCATION : ชื่อของ Cloud Firestore หลายภูมิภาคหรือภูมิภาค
- DATABASE_TYPE :
FIRESTORE_NATIVE
สำหรับโหมด Native หรือDATASTORE_MODE
สำหรับโหมด Datastore - DELETE_PROTECTION_ENABLEMENT :
DELETE_PROTECTION_ENABLED
หรือDELETE_PROTECTION_DISABLED
delete_protection_state
เป็นอาร์กิวเมนต์ทางเลือกเพื่อเปิดใช้งานการป้องกันการลบ คุณไม่สามารถลบฐานข้อมูลที่เปิดใช้งานการป้องกันการลบได้จนกว่าคุณจะปิดใช้งานการตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานตามค่าเริ่มต้น
รหัสฐานข้อมูล
รหัสฐานข้อมูลที่ถูกต้องประกอบด้วย (default)
และรหัสที่สอดคล้องกับสิ่งต่อไปนี้:
- ประกอบด้วยเฉพาะตัวอักษร ตัวเลข และขีดกลาง (
-
) เท่านั้น - ตัวอักษรจะต้องเป็นตัวพิมพ์เล็ก
- อักขระตัวแรกต้องเป็นตัวอักษร
- อักขระตัวสุดท้ายต้องเป็นตัวอักษรหรือตัวเลข
- ขั้นต่ำ 4 ตัวอักษร
- สูงสุด 63 ตัวอักษร
- ต้องไม่เป็น UUID หรือมีลักษณะคล้ายกับ UUID ตัวอย่างเช่น อย่าใช้ ID เช่น
f47ac10b-58cc-0372-8567-0e02b2c3d479
หากคุณลบฐานข้อมูล คุณจะไม่สามารถใช้ ID ฐานข้อมูลซ้ำได้ทันทีจนกว่าจะผ่านไป 5 นาที
ลบการป้องกัน
ใช้การป้องกันการลบเพื่อป้องกันการลบฐานข้อมูลโดยไม่ตั้งใจ คุณไม่สามารถลบฐานข้อมูลที่เปิดใช้งานการป้องกันการลบได้จนกว่าคุณจะปิดใช้งานการป้องกันการลบ การป้องกันการลบถูกปิดใช้งานตามค่าเริ่มต้น คุณสามารถเปิดใช้งานการป้องกันการลบได้เมื่อคุณสร้างฐานข้อมูล หรือคุณสามารถ อัปเดตการกำหนดค่าฐานข้อมูล เพื่อเปิดใช้งานการป้องกันการลบได้
ตั้งค่ากฎความปลอดภัยของ Cloud Firestore สำหรับฐานข้อมูลของคุณ
ใช้ Firebase CLI เพื่อปรับใช้กฎความปลอดภัยของ Cloud Firestore กับฐานข้อมูลแต่ละฐานข้อมูลของคุณ โปรดดู คำแนะนำสำหรับการจัดการและปรับใช้กฎความปลอดภัยของ Cloud Firestore
เข้าถึงฐานข้อมูลที่มีชื่อด้วยไลบรารีไคลเอ็นต์
ฐานข้อมูลที่มีชื่อประกอบด้วยฐานข้อมูลใดๆ ที่ไม่ได้ตั้งชื่อ (default)
ตามค่าเริ่มต้น Firebase SDK และไลบรารีไคลเอ็นต์ Google API จะเชื่อมต่อกับฐานข้อมูล Cloud Firestore (default)
ในโปรเจ็กต์ หากต้องการสร้างไคลเอ็นต์ที่เชื่อมต่อกับฐานข้อมูลที่มีชื่อ ให้ตั้งค่า ID ฐานข้อมูลเมื่อคุณสร้างอินสแตนซ์ไคลเอ็นต์
แสดงรายการฐานข้อมูล
ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแสดงรายการฐานข้อมูลของคุณ:
คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
gcloud
ใช้คำสั่ง gcloud firestore databases list
เพื่อแสดงรายการฐานข้อมูลทั้งหมดในโปรเจ็กต์ของคุณ
gcloud firestore databases list
ดูรายละเอียดฐานข้อมูล
หากต้องการดูรายละเอียดเกี่ยวกับฐานข้อมูลเดียว ให้ใช้คำสั่ง gcloud firestore databases describe
:
gcloud
gcloud firestore databases describe --database=DATABASE_ID
แทนที่ DATABASE_ID ด้วย ID ฐานข้อมูล
อัพเดตการกำหนดค่าฐานข้อมูล
หากต้องการอัปเดตการตั้งค่าการกำหนดค่าของฐานข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore databases update
ใช้คำสั่งนี้เพื่อเปลี่ยนเพื่อเปิดหรือปิดใช้งานการป้องกันการลบ
อัปเดตการตั้งค่าการป้องกันการลบ
หากต้องการเปิดใช้การป้องกันการลบบนฐานข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore databases update
พร้อมด้วยแฟล็ก --delete-protection
ตัวอย่างเช่น:
gcloud
gcloud alpha firestore databases update --database=DATABASE_ID --delete-protection
แทนที่ DATABASE_ID ด้วย ID ฐานข้อมูล
หากต้องการปิดใช้การป้องกันการลบบนฐานข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore databases update
พร้อมด้วยแฟล็ก --no-delete-protection
ตัวอย่างเช่น:
gcloud
gcloud alpha firestore databases update --database=DATABASE_ID --no-delete-protection
แทนที่ DATABASE_ID ด้วย ID ฐานข้อมูล
ลบฐานข้อมูล
หากต้องการลบฐานข้อมูล ให้ใช้คอนโซลหรือเครื่องมือบรรทัดคำสั่ง
หากฐานข้อมูลเปิดใช้งานการตั้งค่าการป้องกันการลบ คุณต้อง ปิดใช้งานการป้องกันการลบ ก่อน
หากฐานข้อมูลมี ข้อมูลการค้นหา App Engine หรือ เอนทิตี Blob คุณต้องลบข้อมูลนั้นก่อน
การลบฐานข้อมูลจะไม่ลบ ทริกเกอร์ Eventarc ใดๆ สำหรับฐานข้อมูลนั้นโดยอัตโนมัติ ทริกเกอร์หยุดส่งเหตุการณ์แต่จะยังคงอยู่จนกว่าคุณ จะลบทริกเกอร์
คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
- คลิก ดูเพิ่มเติม ในแถวตารางของฐานข้อมูลที่คุณต้องการลบ คลิก ลบ กล่องโต้ตอบจะปรากฏขึ้น
ใน ฐานข้อมูลลบ? กล่องโต้ตอบ ยืนยันการลบโดยพิมพ์รหัสฐานข้อมูลในช่องข้อความ คลิก ลบ คอนโซลจะแจ้งให้คุณทราบถึงการดำเนินการสำเร็จหรือล้มเหลว
หากการดำเนินการล้มเหลว ให้ดูรายละเอียดฐานข้อมูล และตรวจสอบว่าการป้องกันการลบถูกปิดใช้งาน หากต้องการปิดใช้งานการป้องกันการลบ โปรดดูที่ อัปเดตการตั้งค่าการป้องกันการลบ
gcloud
ใช้คำสั่ง ลบฐานข้อมูล gcloud alpha firestore
gcloud alpha firestore databases delete --database=DATABASE_ID
แทนที่ DATABASE_ID ด้วย ID ของฐานข้อมูลที่จะลบ
กำหนดค่าสิทธิ์การเข้าถึงต่อฐานข้อมูล
คุณสามารถใช้ เงื่อนไขการจัดการข้อมูลประจำตัวและการเข้าถึง เพื่อกำหนดค่าสิทธิ์การเข้าถึงในระดับต่อฐานข้อมูล ตัวอย่างต่อไปนี้ใช้ Google Cloud CLI เพื่อกำหนดการเข้าถึงแบบมีเงื่อนไขสำหรับฐานข้อมูลตั้งแต่หนึ่งฐานข้อมูลขึ้นไป คุณยัง กำหนดเงื่อนไข IAM ในคอนโซล GCP ได้ด้วย
ดูนโยบาย 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
: คำอธิบายเพิ่มเติมของนิพจน์
ให้สิทธิ์การเข้าถึงทั้งหมดยกเว้นฐานข้อมูลเดียว
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 Firestore ได้รับการรายงานภายใต้ทรัพยากรที่ได้รับการตรวจสอบสองรายการ
คุณสามารถตรวจสอบเมตริกรวมในระดับฐานข้อมูลได้โดยดูที่ firestore.googleapis.com/Database
ตัววัดที่รายงานภายใต้ firestore_instance
จะถูกรวบรวมไว้ที่ระดับโปรเจ็กต์
ข้อจำกัด
- คุณสามารถมีฐานข้อมูลได้สูงสุด 100 ฐานข้อมูลต่อโปรเจ็กต์ คุณสามารถ ติดต่อฝ่ายสนับสนุน เพื่อขอเพิ่มขีดจำกัดนี้ได้
- คุณไม่สามารถลบฐานข้อมูลของคุณได้ หากมี ข้อมูลการค้นหา GAE และ/หรือ เอนทิตีหยด โปรดใช้ ดัชนีลบ API เพื่อลบข้อมูลการค้นหา GAE และ Blobstore ลบ API เพื่อลบข้อมูล Blobstore
- คุณไม่สามารถใช้ ID ฐานข้อมูลซ้ำได้จนกว่าจะผ่านไป 5 นาทีหลังจากการลบเกิดขึ้น
- Cloud Function v1 ไม่รองรับฐานข้อมูล Firestore Named โปรดใช้ ทริกเกอร์ Cloud Firestore (รุ่นที่ 2) เพื่อกำหนดค่าเหตุการณ์สำหรับฐานข้อมูลที่มีชื่อ
- ฟังก์ชัน Firestore ทริกเกอร์ v1 และ ทริกเกอร์เหตุการณ์ Firestore อาจหยุดทำงานหลังจากฐานข้อมูลถูกลบ แม้ว่าฐานข้อมูลใหม่จะถูกสร้างขึ้นด้วยชื่อเดียวกันก็ตาม