จัดการฐานข้อมูล

หน้านี้อธิบายวิธีสร้าง อัปเดต และลบฐานข้อมูล 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

สร้างฐานข้อมูล

เมื่อต้องการสร้างฐานข้อมูล ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้:

คอนโซล
  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. คลิก สร้างฐานข้อมูล
  3. เลือกโหมดฐานข้อมูล คลิก ดำเนินการต่อ
  4. กำหนดค่าฐานข้อมูลของคุณ ป้อนรหัสฐานข้อมูล เลือกสถานที่ คลิก สร้างฐานข้อมูล
gcloud

ใช้คำสั่ง gcloud alpha firestore databases create

gcloud alpha firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

แทนที่สิ่งต่อไปนี้:

--delete-protection เป็นแฟล็กเสริมเพื่อเปิดใช้งานการป้องกันการลบ คุณไม่สามารถลบฐานข้อมูลที่เปิดใช้งานการป้องกันการลบได้จนกว่าคุณจะปิดใช้งานการตั้งค่านี้ การตั้งค่านี้ถูกปิดใช้งานตามค่าเริ่มต้น

Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

แทนที่สิ่งต่อไปนี้:

--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
}

แทนที่สิ่งต่อไปนี้:

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 ใดๆ สำหรับฐานข้อมูลนั้นโดยอัตโนมัติ ทริกเกอร์หยุดส่งเหตุการณ์แต่จะยังคงอยู่จนกว่าคุณ จะลบทริกเกอร์

คอนโซล
  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. คลิก ดูเพิ่มเติม ในแถวตารางของฐานข้อมูลที่คุณต้องการลบ คลิก ลบ กล่องโต้ตอบจะปรากฏขึ้น
  3. ใน ฐานข้อมูลลบ? กล่องโต้ตอบ ยืนยันการลบโดยพิมพ์รหัสฐานข้อมูลในช่องข้อความ คลิก ลบ คอนโซลจะแจ้งให้คุณทราบถึงการดำเนินการสำเร็จหรือล้มเหลว

    หากการดำเนินการล้มเหลว ให้ดูรายละเอียดฐานข้อมูล และตรวจสอบว่าการป้องกันการลบถูกปิดใช้งาน หากต้องการปิดใช้งานการป้องกันการลบ โปรดดูที่ อัปเดตการตั้งค่าการป้องกันการลบ

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 จะถูกรวบรวมไว้ที่ระดับโปรเจ็กต์

ข้อจำกัด

อะไรต่อไป