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

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

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

หากต้องการตรวจสอบการใช้งาน Cloud Firestore จากคอนโซล Firebase ให้ไปที่ ฐานข้อมูลและพื้นที่เก็บข้อมูล > Firestore > การใช้งาน แท็บ ใช้แดชบอร์ดนี้เพื่อวัดการใช้งานในช่วงเวลาต่างๆ

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

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

โควต้าฟรี

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

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

ตารางต่อไปนี้สรุปจำนวนโควต้าฟรี

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

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

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

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

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

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

ฐานข้อมูล

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

100

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

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

0

โดยค่าเริ่มต้น โควต้าจะเป็น 0 เนื่องจากฟีเจอร์นี้อยู่เบื้องหลังรายการที่อนุญาต คุณสามารถขอเพิ่มโควต้าได้โดยกรอกแบบฟอร์มคำขอเข้าถึง CMEK

คอลเล็กชัน เอกสาร และช่อง

ขีดจำกัด รายละเอียด
ข้อจำกัดเกี่ยวกับรหัสคอลเล็กชัน
  • ต้องเป็นอักขระ UTF-8 ที่ถูกต้อง
  • ต้องมีความยาวไม่เกิน 1,500 ไบต์
  • ต้องไม่มีเครื่องหมายทับ (/)
  • ต้องไม่ประกอบด้วยจุดเดี่ยว (.) หรือ จุดคู่ (..) เพียงอย่างเดียว
  • ต้องไม่ตรงกับนิพจน์ทั่วไป __.*__
ความลึกสูงสุดของคอลเล็กชันย่อย 100
ข้อจำกัดเกี่ยวกับรหัสเอกสาร
  • ต้องเป็นอักขระ UTF-8 ที่ถูกต้อง
  • ต้องมีความยาวไม่เกิน 1,500 ไบต์
  • ต้องไม่มีเครื่องหมายทับ (/)
  • ต้องไม่ประกอบด้วยจุดเดี่ยว (.) หรือ จุดคู่ (..) เพียงอย่างเดียว
  • ต้องไม่ตรงกับนิพจน์ทั่วไป __.*__
  • หากคุณนำเข้าเอนทิตี 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

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


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

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

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

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

ดัชนี

ขีดจำกัดต่อไปนี้ใช้กับ ดัชนีช่องเดียว และ ดัชนีผสม:

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

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

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

40,000 รายการ

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

  • จำนวนรายการดัชนีช่องเดียว
  • จำนวนรายการดัชนีผสม

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

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

7.5 KiB

ดูวิธีที่ Cloud Firestore คำนวณขนาดรายการดัชนีได้ที่ ขนาดรายการดัชนี

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

8 MiB

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

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

    1,500 ไบต์

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

    Time to Live (TTL)

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

    การกำหนดค่าระดับช่องเดียว สามารถมีการกำหนดค่าหลายรายการสำหรับช่องเดียวกัน เช่น การยกเว้นการจัดทำดัชนีช่องเดียวและนโยบาย 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
    • ขีดจำกัด 250 KB สำหรับขนาดของชุดกฎที่คอมไพล์แล้วซึ่งเป็นผลลัพธ์เมื่อ Firebase ประมวลผลแหล่งที่มาและทำให้ใช้งานได้ในแบ็กเอนด์

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

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

    ตั้งงบประมาณรายเดือน

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

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

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