หน้านี้มีตัวอย่างวิธีคำนวณหน่วยการเรียกเก็บเงินในสถานการณ์ที่พบบ่อยที่สุดบางสถานการณ์ โปรดทราบว่าการค้นหาแต่ละรายการอาจแตกต่างกันในข้อมูลที่ประมวลผลโดยอิงตามปัจจัยต่างๆ เช่น แผนการค้นหา รูปแบบของข้อมูล และดัชนีที่พร้อมใช้งาน
เราขอแนะนำให้ใช้ฟีเจอร์อธิบายการค้นหาเพื่อให้เข้าใจค่าใช้จ่ายและประสิทธิภาพของการค้นหาที่เฉพาะเจาะจงได้ดียิ่งขึ้น
การดำเนินการอ่าน
การดำเนินการอ่านส่วนใหญ่เกี่ยวข้องกับการอ่านจุดของเอกสารที่เฉพาะเจาะจงหรือการสแกนช่วงข้อมูลตามตัวระบุ การดำเนินการอ่านจะใช้หน่วยการอ่าน โปรดดูตัวอย่างต่อไปนี้
การค้นหาข้อความแบบเต็ม
ค่าใช้จ่ายสำหรับคำค้นหาแบบเต็มจะแยกความแตกต่างระหว่างค่าใช้จ่ายในการค้นหาดัชนีข้อความและค่าใช้จ่ายในการดึงข้อมูลเอกสาร ค่าใช้จ่ายในการค้นหาในดัชนีข้อความจะขึ้นอยู่กับความซับซ้อนของคำค้นหาและปริมาณข้อมูลที่สแกนในดัชนีเพื่อค้นหาผลลัพธ์ ปัจจัยที่มีผลต่อค่าใช้จ่ายนี้รวมถึงจำนวนและลักษณะของข้อความค้นหา (เช่น คำ วลี) ไม่ว่าจะใช้การให้คะแนนความเกี่ยวข้องหรือไม่ และจำนวนรายการดัชนีที่ต้องตรวจสอบ ค่าใช้จ่ายในการดึงข้อมูลเอกสารที่เกี่ยวข้องจะขึ้นอยู่กับจำนวนและขนาดของเอกสารที่ดึงมาหลังจากขั้นตอนการค้นหาเสร็จสมบูรณ์
ตารางต่อไปนี้แสดงค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการคำค้นหาข้อความแบบเต็มสำหรับแคตตาล็อกสินค้าอีคอมเมิร์ซของสถานเพาะชำพืช ตัวอย่างนี้สมมติว่ามีคอลเล็กชันข้อมูลผลิตภัณฑ์ 200,000 รายการในคอลเล็กชัน โดยเอกสารข้อมูลผลิตภัณฑ์แต่ละรายการมีขนาด 2 KiB และขนาดดัชนีการค้นหาข้อความที่เกี่ยวข้องอยู่ที่ประมาณ 100 MiB
| การค้นหา | ตัวอย่างโค้ด | หน่วยการอ่านที่ใช้โดยประมาณต่อการค้นหา | ค่าใช้จ่ายโดยประมาณ (ภูมิภาค: us-central1 ในสกุลเงิน USD) |
|---|---|---|---|
| ค้นหาผลิตภัณฑ์ถาดแบนแบบซ้อนกันได้ที่หายากอย่าง "น้ำแห้ง" ซึ่งส่งผลให้มีการดึงข้อมูลเอกสาร 3 รายการ | |
หน่วยการอ่านทั้งหมด 10 หน่วย อิงตาม 7 หน่วยสำหรับการค้นหาข้อความแบบเต็มและอีก 3 หน่วยสำหรับเอกสารที่แสดงผล |
$0.50 ต่อการค้นหา 1 ล้านครั้ง |
| ค้นหาต้นส้มในร่มทั้งหมด ซึ่งส่งผลให้มีการดึงข้อมูลเอกสาร 36 รายการ | |
หน่วยการอ่านทั้งหมด 42 หน่วย อิงตาม 6 หน่วยสำหรับการค้นหาข้อความแบบเต็มและอีก 36 หน่วยสำหรับเอกสารที่แสดงผล |
$2.10 ต่อการค้นหา 1 ล้านครั้ง |
| ค้นหากระถางต้นไม้สำหรับระเบียงซึ่งมีสินค้าที่ตรงกันจำนวนมาก จัดเรียงผลลัพธ์ตามความเกี่ยวข้อง และจำกัดผลการค้นหาไว้ที่ 50 อันดับแรก | |
หน่วยการอ่านทั้งหมด 75 หน่วย อิงตาม 25 หน่วยสำหรับการค้นหาข้อความแบบเต็ม และอีก 50 หน่วยสำหรับเอกสารที่แสดงผล |
$3.75 ต่อการค้นหา 1 ล้านครั้ง |
ตัวอย่างต่อไปนี้แสดงให้เห็นว่ารูปแบบการค้นหาที่แตกต่างกันส่งผลต่อค่าใช้จ่ายอย่างไร
- คำค้นหา"dry water" มีวลี (
"dry water") และคำเพิ่มเติม การค้นหาวลีมีความซับซ้อนมากกว่าเนื่องจากเครื่องมือค้นหาต้องตรวจสอบความใกล้ชิดและลำดับของโทเค็น ซึ่งส่งผลให้มีหน่วยการอ่าน 7 หน่วยสำหรับระยะการค้นหา เนื่องจากมีเอกสารที่ตรงกันน้อยมาก ต้นทุนการดึงข้อมูลเอกสารจึงต่ำ - คำค้นหา"indoor" "citrus" "tree" จะค้นหาคำ 3 คำแยกกัน แม้ว่าการค้นหาแบบนี้จะซับซ้อนน้อยกว่าการค้นหาวลีเล็กน้อย แต่ก็ยังต้องค้นหาโทเค็นหลายรายการ ซึ่งมีค่าใช้จ่ายในการสแกนดัชนีของ Search ต่ำกว่าเล็กน้อยที่ 6 หน่วยการอ่านเมื่อเทียบกับตัวอย่าง "น้ำแห้ง" แต่ระบบจะแสดงผลเอกสาร 36 รายการ ซึ่งจะเพิ่มค่าใช้จ่ายทั้งหมด
- คำค้นหา "กระถางต้นไม้สำหรับระเบียง" มีต้นทุนการค้นหาข้อความแบบเต็มสูงสุดที่ 25 หน่วย ซึ่งสูงกว่าคำค้นหาอื่นๆ อย่างมาก สาเหตุหลักคือระบบขอให้จัดเรียงผลการค้นหาตามความเกี่ยวข้อง (
.sort({score: {$meta: "textScore"}})) ในคำที่ตรงกับเอกสารจำนวนมาก ในการระบุผลลัพธ์ที่เกี่ยวข้องมากที่สุด 50 อันดับแรก เครื่องมือค้นหาต้องค้นหารายการที่ตรงกันที่เป็นไปได้ทั้งหมดสำหรับ "ระเบียง" หรือ "กระถาง" คำนวณคะแนนความเกี่ยวข้องของแต่ละรายการ แล้วจัดเรียง กระบวนการให้คะแนนและจัดเรียงผู้สมัครจำนวนมากภายในดัชนีนี้ต้องใช้การประมวลผลอย่างหนัก แม้ว่าจะมีการดึงข้อมูลเอกสารเพียง 50 รายการในท้ายที่สุดก็ตาม ความกว้างของคำรวมกับค่าใช้จ่ายเพิ่มเติมในการให้คะแนนความเกี่ยวข้องทำให้ขั้นตอนการค้นหามีค่าใช้จ่ายสูงขึ้น
คำค้นหาเกี่ยวกับภูมิสารสนเทศ
ค่าใช้จ่ายสำหรับการค้นหาเชิงพื้นที่ขึ้นอยู่กับความซับซ้อนของการค้นหา เงื่อนไขเฉพาะและการจัดเรียงที่ใช้ ตลอดจนทรัพยากรที่จำเป็นในการสแกนข้อมูลทั้งหมดในดัชนีเชิงพื้นที่ที่เกี่ยวข้อง
ตารางต่อไปนี้แสดงค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการค้นหาเชิงพื้นที่สำหรับแอปพลิเคชันแผนที่ ตัวอย่างนี้สมมติว่ามีคอลเล็กชันเอกสาร 1,000,000 รายการที่แสดงจุดสนใจ โดยเอกสารจุดสนใจแต่ละรายการมีขนาด 1 KiB และขนาดดัชนีเชิงพื้นที่ที่เกี่ยวข้องประมาณ 60 MiB
| การค้นหา | ตัวอย่างโค้ด | หน่วยการอ่านที่ใช้โดยประมาณต่อการค้นหา | ค่าใช้จ่ายโดยประมาณ (ภูมิภาค: us-central1 ในสกุลเงิน USD) |
|---|---|---|---|
| ค้นหาจุดที่น่าสนใจทั้งหมดภายในรัศมีไม่เกิน 10 กม. โดยแสดงผลการค้นหาที่ตรงกัน 10 รายการ | |
หน่วยการอ่านทั้งหมด 16 หน่วย อิงตามหน่วยการอ่าน 6 หน่วยสำหรับการค้นหาเชิงพื้นที่และหน่วยเพิ่มเติม 10 หน่วยสำหรับเอกสารที่แสดงผล |
$0.80 ต่อการค้นหา 1 ล้านครั้ง |
| ค้นหาจุดที่น่าสนใจทั้งหมดที่มีระยะทางสูงสุด 100 กม. และแสดงผลจุดที่น่าสนใจที่ใกล้ที่สุด 10 อันดับแรกจากรายการที่ตรงกัน 1,000 รายการ | |
รวม 19 หน่วยการอ่าน อิงตามหน่วยการอ่าน 9 หน่วยสำหรับการค้นหาเชิงพื้นที่และหน่วยเพิ่มเติม 10 หน่วยสำหรับเอกสารที่แสดงผล |
$0.95 ต่อการค้นหา 1 ล้านครั้ง |
ตัวอย่างต่อไปนี้แสดงให้เห็นว่ารูปแบบการค้นหาที่แตกต่างกันส่งผลต่อค่าใช้จ่ายอย่างไร
- การค้นหาในรัศมี 10 กม.: การค้นหานี้จะสแกนพื้นที่ทางภูมิศาสตร์ที่เล็กลง เนื่องจากพบรายการที่ตรงกันเพียง 10 รายการภายในรัศมี 10 กม. นี้ เครื่องมือค้นหาจึงทำงานน้อยลงในการระบุและจัดลำดับจุดเหล่านี้ตามระยะทาง (ตามที่
$nearทำโดยนัย) ซึ่งส่งผลให้ต้นทุนการสแกนดัชนีลดลงเหลือ 6 หน่วยการอ่าน - การค้นหาในรัศมี 100 กม.: การค้นหานี้ครอบคลุมพื้นที่ขนาดใหญ่กว่ามาก การค้นหาพบรายการที่อาจตรงกัน 1,000 รายการภายในรัศมี 100 กม. หากต้องการตอบสนองคำขอสำหรับจุดที่ใกล้ที่สุด 10 อันดับแรก เครื่องมือค้นหาจะต้องคำนวณระยะทางและจัดเรียงชุดผู้สมัครที่ใหญ่กว่ามาก (สูงสุด 1,000 จุด) ภายในดัชนี การคำนวณเพิ่มเติมในการคัดกรองและจัดอันดับจุดต่างๆ จำนวนมากขึ้นนี้เป็นสาเหตุที่ทำให้ค่าใช้จ่ายในการค้นหาเชิงพื้นที่สูงขึ้นที่ 9 หน่วยการอ่าน เมื่อเทียบกับการค้นหาในรัศมี 10 กม. แม้ว่าจะแสดงผลเอกสารเพียง 10 รายการเช่นกัน
การอ่านแบบชี้
ตัวอย่างการเรียกเก็บเงินสำหรับการอ่านจุดข้อมูล
- การอ่านแบบ Point Read ของเอกสารขนาด 1 KiB รายการเดียว ใช้: หน่วยการอ่าน 1 หน่วย
- การอ่านแบบ Point ของเอกสารขนาด 4 KiB รายการเดียว ใช้: หน่วยการอ่าน 1 หน่วย
- การอ่านแบบ Point Read ของเอกสารขนาด 1 MiB รายการเดียว ใช้: 256 หน่วยการอ่าน
- การอ่านแบบจุดของเอกสาร 100 รายการ รายการละ 1 KiB ใช้: 100 หน่วยการอ่าน
กำลังสแกน
ตัวอย่างต่อไปนี้รวมถึงสถานการณ์ที่สแกนเอกสารหรือรายการดัชนี
การสแกนเอกสาร
- การค้นหาที่สแกนเอกสาร 100 รายการ รายการละ 1 KiB ใช้: 25 หน่วยการอ่าน
กำลังสแกนดัชนี
ค่าใช้จ่ายในการสแกนในแง่ของไบต์จะเท่ากันไม่ว่าจะเป็นการสแกนเอกสารหรือดัชนีก็ตาม อย่างไรก็ตาม รายการดัชนีมักจะมีขนาดเล็กกว่า ด้วยเหตุนี้ จึงมักเป็นวิธีสแกนข้อมูลที่คุ้มค่ากว่า
- การค้นหาที่สแกนรายการดัชนี 100 รายการ รายการละ 1 KiB ใช้หน่วยการอ่าน 25 หน่วย
- การค้นหาที่สแกนรายการดัชนี 100 รายการ รายการละ 128 ไบต์ ใช้หน่วยการอ่าน 4 หน่วย
ขนาดเอกสารหรือรายการดัชนีขั้นต่ำ
ในบางสถานการณ์ อาจไม่จำเป็นต้องอ่านเนื้อหาของเอกสารหรือรายการดัชนีเพื่อตอบสนองต่อการค้นหา ซึ่งรวมถึงการค้นหาการนับแบบง่ายๆ เช่น การนับจำนวนเอกสารทั้งหมดในคอลเล็กชัน ในกรณีเช่นนี้ ระบบจะคิดค่าใช้จ่ายขั้นต่ำ 32 ไบต์ต่อรายการที่สแกน
- นับจำนวนเอกสารในคอลเล็กชัน การค้นหาจะสแกน 1,000 รายการในคอลเล็กชัน ใช้หน่วยการอ่าน 8 หน่วย
การสแกนและการอ่านจุดร่วมกัน
การค้นหาจำนวนมากจะใช้ทั้งการสแกนและการอ่านจุดร่วมกันเพื่อให้การดำเนินการเสร็จสมบูรณ์
- การค้นหาที่สแกนรายการดัชนี 128 รายการ รายการละ 256 ไบต์ และทำการอ่านเอกสาร 128 รายการ รายการละ 4 KiB ใช้หน่วยการอ่าน 136 หน่วย ซึ่งประกอบด้วย
- หน่วยการอ่าน 128 หน่วยสำหรับการอ่านแบบจุด
- หน่วยการอ่าน 8 หน่วยสำหรับการสแกนดัชนี
Query Explain
Query Explain ช่วยให้คุณเข้าใจวิธีที่ฐานข้อมูลดำเนินการค้นหา รายละเอียดที่ระบุจะช่วยให้คุณเพิ่มประสิทธิภาพการค้นหาได้
ค่าใช้จ่ายต่อไปนี้จะมีผลเมื่อใช้ Query Explain
- Query Explain ซึ่งเรียกใช้การค้นหา: มีค่าใช้จ่ายในการค้นหา
- Query Explain โดยใช้ตัวเลือกแผนเท่านั้น ใช้: 1 หน่วยการอ่าน (ค่าใช้จ่ายขั้นต่ำของการค้นหา)
การดำเนินการเขียน
การดำเนินการเขียน (การสร้าง การอัปเดต และการลบ) จะเรียกเก็บเงินตามขนาดของเอกสารและดัชนีที่สร้าง แก้ไข หรือลบในระหว่างการดำเนินการ การดำเนินการเขียนจะใช้หน่วยการเขียน หน่วยการเขียนจะคำนวณเป็นกลุ่มละ 1 KiB
การดำเนินการเขียนแบบง่าย เช่น การอัปเดตตามรหัสเอกสาร จะมีค่าใช้จ่ายในการเขียนเท่านั้น การดำเนินการเขียนที่ต้องใช้การค้นหาเพื่อให้เป็นไปตามการดำเนินการจะทำให้เกิดค่าใช้จ่ายในการอ่านเพิ่มเติมที่เกี่ยวข้องกับการค้นหา
โปรดดูตัวอย่างต่อไปนี้
สร้าง
- สร้างเอกสารใหม่ขนาด 10 KiB โดยไม่มีดัชนี ใช้: 10 หน่วยการเขียน
- สร้างเอกสารขนาด 1 KiB ที่มีรายการดัชนี 1 รายการขนาด 256 ไบต์ในคอลเล็กชัน ใช้: 2 หน่วยการเขียน
อัปเดต
- ค้นหาเอกสารขนาด 10 KiB ตามรหัสเอกสารและอัปเดตโดยไม่มีดัชนีในคอลเล็กชัน ใช้: 10 หน่วยการเขียน
- ค้นหาเอกสารขนาด 1 KiB ตามรหัสเอกสารและอัปเดต 1 ช่องด้วยรายการดัชนี 1 รายการขนาด 256 ไบต์ ใช้หน่วยการเขียน 3 หน่วย หมายเหตุ: การอัปเดตรายการดัชนีในสถานการณ์นี้จะใช้หน่วยการเขียน 2 หน่วย โดยหน่วยหนึ่งใช้เพื่อลบและอีกหน่วยหนึ่งใช้เพื่อสร้างรายการดัชนีใหม่
- ค้นหาเอกสารขนาด 1 KiB ตามรหัสเอกสารและไม่อัปเดตอะไรเลย (ไม่มีการเปลี่ยนแปลง) ใช้: 1 หน่วยการเขียน (ค่าใช้จ่ายในการเขียนขั้นต่ำ)
- ค้นหาเอกสารขนาด 1 KiB ทั้งหมดในคอลเล็กชัน ซึ่งจะสแกนเอกสาร 1, 000 รายการ และแทรกช่องขนาด 256 ไบต์ใหม่ที่ไม่มีดัชนีในคอลเล็กชัน: หน่วยการอ่าน 1,000 หน่วยและหน่วยการเขียน 1, 000 หน่วย
การลบ
- ลบเอกสารขนาด 1 KiB ซึ่งมีดัชนี 1 รายการในคอลเล็กชัน ใช้: 2 หน่วยการเขียน
- ลบเอกสารขนาด 1 KiB ซึ่งไม่มีดัชนีในคอลเล็กชัน ใช้: 1 หน่วยการเขียน
การสร้างดัชนี
การสร้างดัชนีจะเรียกเก็บเงินสำหรับรายการดัชนีที่สร้างหรือแก้ไขระหว่างการดำเนินการสร้าง ค่าใช้จ่ายเหล่านี้จะเกิดขึ้นทุกครั้งที่มีการเพิ่มหรือนำคำจำกัดความของดัชนีออก ระบบจะเรียกเก็บเงินรายการดัชนีในลักษณะเดียวกับการเขียนซึ่งมีค่าใช้จ่าย 1 หน่วยการเขียนต่อ 1 KiB
- สร้างดัชนีใหม่สำหรับคอลเล็กชันที่มีเอกสาร 500 รายการ โดยรายการดัชนีที่สร้างขึ้นมีขนาดรายการละ 1 KiB ใช้หน่วยการเขียน 500 หน่วย
- ลบดัชนีที่มีอยู่สำหรับคอลเล็กชันที่มีเอกสาร 500 รายการ รายการดัชนีที่ลบมีขนาดรายการละ 1 KiB ใช้หน่วยการเขียน 500 หน่วย