การใช้งานและขีดจำกัด

ใช้คู่มือนี้เพื่อทำความเข้าใจCloud Firestoreขีดจำกัด และดูCloud Firestoreการกำหนดราคาเพื่อดูคำอธิบายแบบละเอียดเกี่ยวกับ Cloud Firestoreค่าใช้จ่าย รวมถึงสิ่งที่ควรระวัง

ตรวจสอบการใช้งาน

หากต้องการตรวจสอบการใช้งาน Cloud Firestore ให้เปิดCloud Firestore แท็บการใช้งาน ในคอนโซล Firebase ใช้แดชบอร์ดเพื่อวัดการใช้งานในช่วงระยะเวลาต่างๆ

การใช้งานโดยละเอียดในคอนโซล Google Cloud

เมื่อสร้างโปรเจ็กต์ Firebase คุณจะสร้างGoogle Cloudโปรเจ็กต์ด้วย หน้าCloud Firestoreโควต้า API และApp Engineโควต้า ในคอนโซล Google Cloud จะติดตามการใช้งานและข้อมูลโควต้าของ Cloud Firestore

โควต้าฟรี

Cloud Firestore มีโควต้าฟรีที่ช่วยให้คุณเริ่มต้นใช้งานได้โดยไม่มีค่าใช้จ่าย จำนวนโควต้าฟรีแสดงอยู่ด้านล่าง หากต้องการโควต้าเพิ่มเติม คุณต้องเปิดใช้การเรียกเก็บเงินสำหรับGoogle Cloudโปรเจ็กต์

ระบบจะใช้โควต้าทุกวันและรีเซ็ตประมาณเที่ยงคืนตามเวลาแปซิฟิก

Firestore อนุญาตให้มีฐานข้อมูลฟรีได้เพียง 1 ฐานข้อมูลต่อโปรเจ็กต์

รุ่นฟรี โควต้า
ข้อมูลที่จัดเก็บ 1 GiB
การอ่านเอกสาร 50,000 ต่อวัน
การเขียนเอกสาร 20,000 ต่อวัน
การลบเอกสาร 20,000 ต่อวัน
การโอนข้อมูลขาออก 10 GiB ต่อเดือน

การดำเนินการและฟีเจอร์ต่อไปนี้ไม่รวมการใช้งานฟรี คุณต้องเปิดใช้การเรียกเก็บเงินจึงจะใช้ฟีเจอร์ต่อไปนี้ได้

  • การลบ TTL
  • ข้อมูล PITR
  • สำรองข้อมูล
  • การดำเนินการกู้คืน

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเรียกเก็บเงินสำหรับฟีเจอร์เหล่านี้ได้ที่ราคาพื้นที่เก็บข้อมูล

ขีดจำกัดมาตรฐาน

ตารางต่อไปนี้แสดงโควต้าที่ใช้กับ Cloud Firestore ขีดจำกัดเหล่านี้เป็นขีดจำกัดที่เปลี่ยนแปลงไม่ได้ เว้นแต่จะระบุไว้เป็นอย่างอื่น

ฐานข้อมูล

ขีดจำกัด รายละเอียด
จำนวนฐานข้อมูลสูงสุดต่อโปรเจ็กต์

100

คุณสามารถติดต่อทีมสนับสนุนเพื่อขอเพิ่มขีดจำกัดนี้

คอลเล็กชัน เอกสาร และฟิลด์

ขีดจำกัด รายละเอียด
ข้อจำกัดเกี่ยวกับรหัสคอลเล็กชัน
  • ต้องเป็นอักขระ UTF-8 ที่ถูกต้อง
  • ต้องมีความยาวไม่เกิน 1,500 ไบต์
  • ห้ามมีเครื่องหมายทับ (/)
  • ต้องไม่ประกอบด้วยจุดเดียว (.) หรือ จุด 2 จุด (..) เท่านั้น
  • ไม่สามารถจับคู่กับนิพจน์ทั่วไป __.*__
ความลึกสูงสุดของคอลเล็กชันย่อย 100
ข้อจำกัดเกี่ยวกับรหัสเอกสาร
  • ต้องเป็นอักขระ UTF-8 ที่ถูกต้อง
  • ต้องมีความยาวไม่เกิน 1,500 ไบต์
  • ห้ามมีเครื่องหมายทับ (/)
  • ต้องไม่ประกอบด้วยจุดเดียว (.) หรือ จุด 2 จุด (..) เท่านั้น
  • ไม่สามารถจับคู่กับนิพจน์ทั่วไป __.*__
  • หากคุณนำเข้าเอนทิตี Datastore ไปยังฐานข้อมูล Firestore ระบบจะแสดงรหัสเอนทิตีที่เป็นตัวเลขเป็น __id[0-9]+__
ขนาดสูงสุดสำหรับชื่อเอกสาร 6 KiB
ขนาดสูงสุดของเอกสาร 1 MiB (1,048,576 ไบต์)
ข้อจำกัดเกี่ยวกับชื่อฟิลด์
  • ต้องเป็นอักขระ UTF-8 ที่ถูกต้อง
  • ไม่สามารถจับคู่กับนิพจน์ทั่วไป __.*__
ขนาดสูงสุดของชื่อฟิลด์ 1,500 ไบต์
ข้อจำกัดเกี่ยวกับเส้นทางฟิลด์
  • ต้องคั่นชื่อฟิลด์ด้วยจุดเดียว (.)
  • อาจส่งเป็นสตริงของกลุ่มที่คั่นด้วยจุด (.) โดยแต่ละกลุ่มจะเป็นชื่อฟิลด์แบบง่ายหรือชื่อฟิลด์ที่อยู่ในเครื่องหมายคำพูด (กำหนดไว้ด้านล่าง)
ชื่อฟิลด์ที่เรียบง่ายคือชื่อที่ตรงตามเงื่อนไขต่อไปนี้ทั้งหมด
  • มีเฉพาะอักขระ a-z, A-Z, 0-9 และขีดล่าง (_)
  • ไม่ได้เริ่มต้นด้วย 0-9
ชื่อฟิลด์ที่ยกมาจะขึ้นต้นและลงท้ายด้วยอักขระแบ็กทิก (`) เช่น foo.`x&y` หมายถึงฟิลด์ x&y ที่ซ้อนอยู่ภายใต้ฟิลด์ foo หากต้องการสร้างชื่อฟิลด์ด้วยเครื่องหมายแบ็กทิก ให้หลีกเลี่ยงเครื่องหมายแบ็กทิกด้วยเครื่องหมายแบ็กสแลช (\) เพื่อความสะดวก คุณสามารถหลีกเลี่ยงชื่อฟิลด์ที่ยกมาได้โดยการส่งเส้นทางฟิลด์เป็นออบเจ็กต์ FieldPath (เช่น ดู JavaScript FieldPath)
ขนาดสูงสุดของเส้นทางฟิลด์ 1,500 ไบต์
ขนาดสูงสุดของค่าฟิลด์ 1 MiB - 89 ไบต์ (1,048,487 ไบต์)
ความลึกสูงสุดของฟิลด์ในแผนที่หรืออาร์เรย์

20

ฟิลด์แผนที่และอาร์เรย์จะเพิ่มระดับความลึกโดยรวมของออบเจ็กต์ ตัวอย่างเช่น ออบเจ็กต์ต่อไปนี้มีความลึกทั้งหมด 3 ระดับ


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

การเขียนและธุรกรรม

นอกจากขีดจำกัดเหล่านี้แล้ว คุณควรดูแนวทางปฏิบัติแนะนำในการออกแบบเพื่อการปรับขนาดด้วย

ขีดจำกัด รายละเอียด
ขนาดคำขอ API สูงสุด 10 MiB
ขีดจำกัดเวลาสำหรับธุรกรรม 270 วินาที โดยมีเวลาหมดอายุเมื่อไม่มีการใช้งาน 60 วินาที
จำนวนการเปลี่ยนรูปแบบฟิลด์สูงสุดที่ทำได้ในเอกสารเดียวในการดำเนินการ Commit หรือในธุรกรรม 500

ดัชนี

ดัชนีช่องเดียวและดัชนีผสมมีข้อจำกัดดังนี้

ขีดจำกัด รายละเอียด
จำนวนสูงสุดของดัชนีผสมสำหรับฐานข้อมูล
จำนวนสูงสุดของการกำหนดค่าฟิลด์เดียวสำหรับฐานข้อมูล

การกำหนดค่าระดับฟิลด์ 1 รายการ สามารถมีการกำหนดค่าหลายรายการสำหรับฟิลด์เดียวกัน เช่น การยกเว้นการจัดทำดัชนีฟิลด์เดียวและนโยบาย TTL ในฟิลด์เดียวกัน จะนับเป็นการกำหนดค่าฟิลด์ 1 รายการในขีดจำกัด

จำนวนรายการดัชนีสูงสุดสำหรับแต่ละเอกสาร

40,000

จำนวนรายการดัชนีคือผลรวมของรายการต่อไปนี้สำหรับเอกสาร

  • จำนวนรายการดัชนีแบบฟิลด์เดียว
  • จำนวนรายการดัชนีผสม

หากต้องการดูวิธีที่ Cloud Firestore เปลี่ยนเอกสารและชุดดัชนีเป็นรายการดัชนี โปรดดูตัวอย่างการนับรายการดัชนีนี้

จำนวนฟิลด์สูงสุดในดัชนีผสม 100
ขนาดสูงสุดของรายการดัชนี

7.5 KiB

หากต้องการดูวิธีที่ Cloud Firestore คำนวณขนาดรายการดัชนี โปรดดู ขนาดรายการดัชนี

ผลรวมสูงสุดของขนาดรายการดัชนีของเอกสาร

8 MiB

ขนาดทั้งหมดคือผลรวมของรายการต่อไปนี้สำหรับเอกสาร

  • ผลรวมของขนาดรายการดัชนีฟิลด์เดียวของเอกสาร
  • ผลรวมของขนาดรายการดัชนีผสมของเอกสาร
  • ขนาดสูงสุดของค่าฟิลด์ที่จัดทำดัชนี

    1500 ไบต์

    ระบบจะตัดค่าฟิลด์ที่ยาวเกิน 1,500 ไบต์ คําค้นหาที่เกี่ยวข้องกับ ค่าฟิลด์ที่ถูกตัดทอนอาจแสดงผลลัพธ์ที่ไม่สอดคล้องกัน

    Time to Live (TTL)

    ขีดจำกัด รายละเอียด
    จำนวนสูงสุดของการกำหนดค่าฟิลด์เดียวสำหรับฐานข้อมูล

    การกำหนดค่าระดับฟิลด์ 1 รายการ สามารถมีการกำหนดค่าหลายรายการสำหรับฟิลด์เดียวกัน เช่น การยกเว้นการจัดทำดัชนีฟิลด์เดียวและนโยบาย TTL ในฟิลด์เดียวกัน จะนับเป็นการกำหนดค่าฟิลด์ 1 รายการในขีดจำกัด

    ส่งออก/นำเข้า

    การดำเนินการนำเข้าและส่งออกที่มีการจัดการมีข้อจำกัดดังนี้

    ขีดจำกัด รายละเอียด
    จำนวนคำขอส่งออกและนำเข้าทั้งหมดสูงสุดสำหรับโปรเจ็กต์ที่อนุญาตต่อนาที 20
    จำนวนการส่งออกและนำเข้าพร้อมกันสูงสุด 50
    จำนวนสูงสุดของตัวกรองรหัสคอลเล็กชันสำหรับคำขอส่งออกและนำเข้า 100

    กฎความปลอดภัย

    ขีดจำกัด รายละเอียด
    จำนวนการเรียก exists(), get() และ getAfter() สูงสุดต่อคำขอ
    • 10 สำหรับคำขอเอกสารเดียวและคำขอการค้นหา
    • 20 สำหรับการอ่านแบบหลายเอกสาร ธุรกรรม และการเขียนแบบเป็นกลุ่ม ขีดจำกัดก่อนหน้านี้ที่ 10 รายการจะมีผลกับการดำเนินการแต่ละครั้งด้วย

      ตัวอย่างเช่น สมมติว่าคุณสร้างคำขอเขียนแบบกลุ่มที่มี การดำเนินการเขียน 3 รายการ และกฎการรักษาความปลอดภัยใช้การเรียกการเข้าถึงเอกสาร 2 รายการ เพื่อตรวจสอบการเขียนแต่ละรายการ ในกรณีนี้ การเขียนแต่ละครั้งจะใช้การเรียกเข้าถึง 2 ครั้งจาก 10 ครั้ง และคำขอเขียนแบบกลุ่มจะใช้การเรียกเข้าถึง 6 ครั้งจาก 20 ครั้ง

    หากเกินขีดจำกัดใดขีดจำกัดหนึ่ง ระบบจะแสดงข้อผิดพลาด "ปฏิเสธสิทธิ์"

    ระบบอาจแคชการเรียกใช้การเข้าถึงเอกสารบางรายการ และการเรียกใช้ที่แคชจะไม่นับรวมในโควต้า

    ความลึกสูงสุดของคำสั่ง match ที่ซ้อนกัน 10
    ความยาวเส้นทางสูงสุดในส่วนเส้นทางที่อนุญาตภายในชุดคำสั่ง match ที่ซ้อนกัน 100
    จำนวนตัวแปรการบันทึกเส้นทางสูงสุดที่อนุญาตภายในชุดคำสั่ง match ที่ซ้อนกัน 20
    ความลึกสูงสุดของการเรียกใช้ฟังก์ชัน 20
    จำนวนอาร์กิวเมนต์ของฟังก์ชันสูงสุด 7
    จำนวนการเชื่อมโยงตัวแปร let สูงสุดต่อฟังก์ชัน 10
    จำนวนการเรียกฟังก์ชันแบบเรียกซ้ำหรือแบบวนซ้ำสูงสุด 0 (ไม่อนุญาต)
    จำนวนสูงสุดของนิพจน์ที่ประเมินต่อคำขอ 1,000 ราย
    ขนาดสูงสุดของชุดกฎ ชุดกฎต้องมีขนาดไม่เกิน 2 ขีดจำกัดต่อไปนี้
    • จำกัดขนาดของแหล่งที่มาของข้อความชุดกฎที่ 256 KB ซึ่งเผยแพร่จากFirebaseคอนโซลหรือจาก CLI โดยใช้ firebase deploy
    • จำกัดขนาดของชุดกฎที่คอมไพล์แล้วซึ่งเป็นผลลัพธ์ที่ได้เมื่อ Firebase ประมวลผลแหล่งที่มาและทำให้ใช้งานได้ในแบ็กเอนด์ที่ 250 KB

    จัดการการใช้จ่าย

    ตั้งงบประมาณและการแจ้งเตือนรายเดือนเพื่อช่วยหลีกเลี่ยงการเรียกเก็บเงินที่ไม่คาดคิดในใบเรียกเก็บเงิน

    กำหนดงบประมาณรายเดือน

    หากต้องการติดตามCloud Firestoreค่าใช้จ่าย ให้สร้างงบประมาณรายเดือนในคอนโซล Google Cloud งบประมาณจะไม่จำกัดการใช้งาน แต่คุณสามารถตั้งค่าการแจ้งเตือนเพื่อ แจ้งให้ทราบเมื่อค่าใช้จ่ายใกล้ถึงหรือเกินค่าใช้จ่ายที่วางแผนไว้สำหรับ เดือน

    หากต้องการตั้งงบประมาณ ให้ไปที่ส่วนการเรียกเก็บเงิน ในคอนโซล Google Cloud แล้วสร้างงบประมาณสำหรับบัญชี Cloud Billing คุณสามารถใช้การตั้งค่าการแจ้งเตือนเริ่มต้นหรือแก้ไข การแจ้งเตือนเพื่อส่งการแจ้งเตือนที่เปอร์เซ็นต์ต่างๆ ของงบประมาณรายเดือน

    ดูข้อมูลเพิ่มเติมเกี่ยวกับ การตั้งค่างบประมาณและการแจ้งเตือนงบประมาณ