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

ใช้คู่มือนี้เพื่อทำความเข้าใจขีดจำกัดของ 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 มีโควต้าฟรีที่ช่วยให้คุณเริ่มต้นใช้งานฐานข้อมูล (default) ได้โดยไม่มีค่าใช้จ่าย ปริมาณโควต้าฟรีแสดงอยู่ด้านล่าง หากต้องการโควต้าเพิ่มเติม คุณต้องเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud

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

เฉพาะฐานข้อมูล (default) เท่านั้นที่มีสิทธิ์ใช้โควต้าฟรี

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

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

  • การใช้ฐานข้อมูลที่ชื่อ (ไม่ใช่ค่าเริ่มต้น)
  • การลบ TTL
  • ข้อมูล PITR
  • ข้อมูลสํารอง
  • การดำเนินการกู้คืน

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

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

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

ฐานข้อมูล

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

100

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

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

ขีดจำกัด รายละเอียด
ข้อจำกัดเกี่ยวกับรหัสคอลเล็กชัน
  • ต้องเป็นอักขระ 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 (เช่น ดู FieldPath ของ JavaScript) เพื่ออำนวยความสะดวก
ขนาดสูงสุดของเส้นทางฟิลด์ 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

ดัชนี

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

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

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

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

40,000

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

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

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

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

7.5 KiB

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

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

8 MiB

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

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

    1,500 ไบต์

    ระบบจะตัดค่าของช่องที่เกิน 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 (not permitted)
    จำนวนนิพจน์สูงสุดที่ประเมินต่อคำขอ 1,000 ราย
    ขนาดสูงสุดของชุดกฎ ชุดกฎต้องเป็นไปตามขีดจํากัดขนาด 2 ข้อต่อไปนี้
    • ขีดจํากัดขนาด 256 KB สําหรับแหล่งที่มาของข้อความชุดกฎที่เผยแพร่จากคอนโซล Firebase หรือจาก CLI โดยใช้ firebase deploy
    • ขีดจํากัดขนาด 250 KB สําหรับกฎชุดหนึ่งที่คอมไพล์แล้วซึ่งจะปรากฏขึ้นเมื่อ Firebase ประมวลผลแหล่งที่มาและทําให้ใช้งานได้ในแบ็กเอนด์

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

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

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

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

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

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