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

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

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