หน้านี้จะอธิบายวิธีสร้าง อัปเดต และลบ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
สร้างฐานข้อมูล
หากต้องการสร้างฐานข้อมูล ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
คอนโซล
-
ในคอนโซล 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-mode
สำหรับโหมด 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)
โดยค่าเริ่มต้น SDK ของ Firebase และไลบรารีไคลเอ็นต์ Google API จะเชื่อมต่อกับฐานข้อมูล (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
ที่มี Flag --delete-protection
เช่น
gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection
แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล
หากต้องการปิดใช้การป้องกันการลบในฐานข้อมูล ให้ใช้คำสั่ง gcloud firestore databases update
กับ Flag --no-delete-protection
เช่น
gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล
ลบฐานข้อมูล
หากต้องการลบฐานข้อมูล ให้ใช้คอนโซลหรือเครื่องมือบรรทัดคำสั่ง
หากฐานข้อมูลเปิดใช้การตั้งค่าการป้องกันการลบ คุณต้องปิดใช้การป้องกันการลบก่อน
หากฐานข้อมูลมีApp Engine ข้อมูลการค้นหาหรือเอนทิตีประเภท Blob คุณจะต้องลบข้อมูลดังกล่าวก่อน
การลบฐานข้อมูลจะไม่ลบEventarcทริกเกอร์ของฐานข้อมูลนั้นโดยอัตโนมัติ ทริกเกอร์จะหยุดส่งเหตุการณ์ แต่จะยังคงอยู่จนกว่าคุณจะลบทริกเกอร์
คอนโซล
-
ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore
- ในแท็บข้อมูล ให้คลิก เหนือมุมมองตารางข้อมูลของฐานข้อมูล แล้วเลือกลบฐานข้อมูล
- ทำตามวิธีการเพื่อลบฐานข้อมูล
gcloud
ใช้คำสั่ง `gcloud firestore databases delete`
gcloud firestore databases delete --database=DATABASE_ID
แทนที่ DATABASE_ID ด้วยรหัสของฐานข้อมูลที่คุณต้องการลบ
กำหนดค่าสิทธิ์การเข้าถึงต่อฐานข้อมูล
คุณสามารถใช้เงื่อนไขการจัดการข้อมูลประจำตัวและการเข้าถึงเพื่อกำหนดค่าสิทธิ์เข้าถึงในระดับฐานข้อมูล ตัวอย่างต่อไปนี้ใช้ 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 CloudSELECT * FROM __BlobInfo__
- คุณจะนํารหัสฐานข้อมูลมาใช้ซ้ำไม่ได้จนกว่าจะผ่านไป 5 นาทีหลังจากการลบ
- Cloud Function v1 ไม่รองรับฐานข้อมูลที่ชื่อ Firestore โปรดใช้ทริกเกอร์ Cloud Firestore (รุ่นที่ 2) เพื่อกําหนดค่าเหตุการณ์สําหรับฐานข้อมูลที่ชื่อ
- ทริกเกอร์ฟังก์ชัน Firestore v1 และทริกเกอร์เหตุการณ์ Firestore อาจหยุดทํางานหลังจากลบฐานข้อมูล แม้ว่าจะสร้างฐานข้อมูลใหม่ที่มีชื่อเดียวกันก็ตาม