Firestore ในโหมดเนทีฟประกอบด้วยการดำเนินการ 2 ชุด ได้แก่ การดำเนินการหลักของ Firestore และการดำเนินการไปป์ไลน์ของ Firestore
การดำเนินการหลักของ Firestore มีฟังก์ชันการทำงานมาตรฐานในการสร้าง อ่าน อัปเดต และลบ (CRUD) เอกสาร พร้อมด้วยการรองรับในตัวสำหรับการค้นหาที่ฟังแบบเรียลไทม์และการคงอยู่แบบออฟไลน์ ความแตกต่างด้านการปฏิบัติงานที่ชัดเจนในรุ่นนี้คือดัชนีเป็นตัวเลือกและระบบจะไม่สร้างดัชนีสำหรับฟิลด์เดียวโดยอัตโนมัติ แม้ว่าวิธีนี้จะช่วยให้การค้นหาทำงานได้โดยไม่ต้องกำหนดค่าดัชนีล่วงหน้า แต่การค้นหาที่ไม่ได้จัดทำดัชนีจะสแกนทั้งคอลเล็กชันโดยค่าเริ่มต้น ซึ่งอาจทำให้เกิดเวลาในการตอบสนองและค่าใช้จ่ายเพิ่มขึ้นเมื่อชุดข้อมูลเติบโตขึ้น
การดำเนินการไปป์ไลน์ Firestore เป็นฟีเจอร์หลักของ Firestore Enterprise Edition ซึ่งสร้างขึ้นบนเครื่องมือค้นหาขั้นสูงเพื่อขยายช่วงของ คำค้นหาที่เป็นไปได้อย่างมาก การดำเนินการไปป์ไลน์ใช้ไวยากรณ์การค้นหาที่ยืดหยุ่นและวิธีการจัดทำดัชนีที่แตกต่างกัน ซึ่งดัชนีเป็นตัวเลือกและไม่ได้สร้างขึ้นโดยอัตโนมัติ ทำให้การดำเนินการดึงข้อมูลขั้นสูงสำหรับแอปพลิเคชันเป็นไปได้
ฟีเจอร์ของการดำเนินการหลักของ Firestore
การดำเนินการหลักช่วยให้ดำเนินการ CRUD มาตรฐานและคำค้นหาการฟังแบบเรียลไทม์ ได้ อย่างไรก็ตาม เมื่อใช้การดำเนินการเหล่านี้ในรุ่น Enterprise ลักษณะการทำงานพื้นฐานเกี่ยวกับการจัดทำดัชนีและการเรียกเก็บเงินจะเปลี่ยนแปลงอย่างมาก เมื่อเทียบกับรุ่น Standard
ฟังก์ชันการทำงานและความต่อเนื่อง
การดำเนินการหลักยังคงใช้ไวยากรณ์การเชื่อมโยงเมธอดที่คุ้นเคย (เช่น .where(), .orderBy()) ที่ใช้ในรุ่นมาตรฐาน การดำเนินการเหล่านี้รองรับคำค้นหาการฟังแบบเรียลไทม์และความต่อเนื่องแบบออฟไลน์สำหรับไคลเอ็นต์บนอุปกรณ์เคลื่อนที่และเว็บ
เราขอแนะนำให้ใช้การดำเนินการเหล่านี้สำหรับภาระงานธุรกรรมมาตรฐาน การค้นหาอย่างง่าย และการย้ายข้อมูลโค้ดแอปพลิเคชันที่มีอยู่
การจัดทำดัชนีที่กำหนดเอง
การดำเนินการหลักในรุ่น Enterprise จะไม่สร้างดัชนีแบบฟิลด์เดียวโดยอัตโนมัติ ซึ่งต่างจากรุ่น Standard ดัชนีเป็นตัวเลือก และไม่จำเป็นต้องใช้ในการเรียกใช้การค้นหา หากไม่มีดัชนีที่เฉพาะเจาะจง การค้นหาจะทำการสแกนคอลเล็กชันทั้งหมด แม้ว่าการค้นหาที่ไม่ได้จัดทำดัชนีจะช่วยให้สร้างต้นแบบได้อย่างรวดเร็ว แต่การค้นหาดังกล่าวอาจทำงานช้าลงและมีค่าใช้จ่ายมากขึ้นเมื่อชุดข้อมูลมีขนาดใหญ่ขึ้น นักพัฒนาแอปต้องสร้างดัชนีด้วยตนเองเพื่อเพิ่มประสิทธิภาพการค้นหาและลด การใช้หน่วยการอ่าน
โมเดลการเรียกเก็บเงิน (อิงตามหน่วย)
ระบบจะเรียกเก็บเงินสำหรับหน่วยการอ่านเป็นกลุ่มละ 4 KB แทนที่จะเรียกเก็บเงินต่อจำนวนเอกสาร การค้นหาที่ไม่ได้จัดทำดัชนีซึ่งสแกนคอลเล็กชันขนาดใหญ่จะใช้หน่วยการอ่านตาม ไบต์ทั้งหมดที่สแกนในเอกสารทั้งหมด ระบบจะเรียกเก็บเงินสำหรับหน่วยการเขียนเป็นกลุ่มละ 1 KB การเขียนเอกสารจะใช้หน่วยสำหรับข้อมูล รวมถึงหน่วยเพิ่มเติม สำหรับรายการดัชนีทุกรายการที่อัปเดต ตอนนี้คุณสามารถเลือกฟิลด์ที่ต้องการจัดทำดัชนีเพื่อเพิ่มประสิทธิภาพต้นทุนและประสิทธิภาพในการเขียนได้แล้ว ซึ่งแตกต่างจากรุ่นมาตรฐานที่บังคับใช้การจัดทำดัชนีแบบฟิลด์เดียวโดยอัตโนมัติ
ฟีเจอร์ของการดำเนินการไปป์ไลน์ Firestore
Firestore Enterprise Edition ที่มีการดำเนินการไปป์ไลน์ใช้เครื่องมือค้นหาขั้นสูงซึ่งช่วยขจัดข้อจำกัดที่มีอยู่มากมายของ Firestore Standard Edition การดำเนินการไปป์ไลน์มีฟีเจอร์การค้นหาเพิ่มเติมอีกหลายร้อยรายการ การดำเนินการไปป์ไลน์มีความสามารถต่อไปนี้
ไวยากรณ์ที่ประกอบได้ตามระยะ
การค้นหาแบบไปป์ไลน์สร้างขึ้นโดยการกำหนดชุดขั้นตอนตามลำดับที่จะ ดำเนินการตามลำดับ ซึ่งจะช่วยให้ดำเนินการที่ซับซ้อนได้ เช่น การกรองใน ผลลัพธ์ของการรวม ซึ่งก่อนหน้านี้ทำไม่ได้
ตัวอย่างต่อไปนี้แสดงการค้นหาแบบไปป์ไลน์ที่ค้นหาจำนวนรหัสผลิตภัณฑ์ที่ไม่ซ้ำกัน ที่ดูในเดือนที่ผ่านมา
guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
return
}
let snapshot = try await db.pipeline()
.collection("productViews")
.where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
.aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
.execute()
ความสามารถที่เพิ่มขึ้น
การค้นหาไปป์ไลน์จะเปิดตัวความสามารถใหม่ๆ มากมาย ซึ่งรวมถึงความสามารถต่อไปนี้
- การรวม: รองรับฟังก์ชันการรวมใหม่ (เช่น
sum(...),min(...)และcount_distinct(...)) ร่วมกับฟิลด์การจัดกลุ่มที่กำหนดเอง - การกรองที่ซับซ้อน: รองรับฟังก์ชันเพิ่มเติมอีกหลายร้อยฟังก์ชันเพื่อแสดงข้อความที่ซับซ้อนโดยพลการ
where(...)รวมถึงregex_match(...),add(...)และstr_contains(...)โดยไม่ต้องมีข้อกำหนดดัชนีที่ซับซ้อน - การอ่าน / การคาดการณ์บางส่วน: ดึงข้อมูลชุดย่อยแบบไดนามิกของเอกสารโดยใช้
select(...)remove_fields(...)และขั้นตอนการจัดการเอกสารอื่นๆ อีกมากมาย
ดูข้อมูลเพิ่มเติมเกี่ยวกับความสามารถเหล่านี้ได้ที่ค้นหาข้อมูลด้วยการดำเนินการของไปป์ไลน์
การสนับสนุนแบบเรียลไทม์และออฟไลน์
หากต้องการใช้เรียลไทม์และออฟไลน์ นักพัฒนาซอฟต์แวร์สามารถใช้การดำเนินการหลักของ Firestore ในรุ่น Firestore Enterprise
การผสานรวมไคลเอ็นต์และเครื่องมือ
รุ่น Enterprise มีฟีเจอร์เฉพาะสำหรับการโต้ตอบ และการจัดการการค้นหาในไปป์ไลน์ ดังนี้
- การอธิบายและการสร้างโปรไฟล์การค้นหา: คุณสามารถใช้ผลลัพธ์ของคำอธิบายการค้นหาเพื่อทำความเข้าใจว่าการค้นหาใช้หน่วยการอ่านหรือการเขียนกี่หน่วย และวิเคราะห์การดำเนินการของการค้นหา
- ข้อมูลเชิงลึกของการค้นหา: รุ่น Enterprise รองรับข้อมูลเชิงลึกของการค้นหา ซึ่งจะช่วยคุณพิจารณาตำแหน่งที่ควรสร้างดัชนีเพื่อปรับปรุงประสิทธิภาพและต้นทุนด้วยการให้ข้อมูลเชิงลึกเกี่ยวกับการค้นหาที่ทำงานในฐานข้อมูลของคุณมากที่สุดและลักษณะประสิทธิภาพของการค้นหาเหล่านั้น
- ประเภทดัชนีใหม่: คุณสามารถสร้างดัชนีเฉพาะสำหรับรุ่น Enterprise ซึ่งรวมถึงประเภทดัชนี เช่น ดัชนีแบบกระจัดกระจาย ดัชนีแบบไม่กระจัดกระจาย และดัชนีที่ไม่ซ้ำกัน นอกจากนี้ยังรองรับการสร้างและแก้ไขดัชนีการค้นหาแบบเวกเตอร์สำหรับฐานข้อมูลขององค์กรด้วย
ความแตกต่างระหว่าง Firestore Standard กับ Firestore Enterprise
ความแตกต่างด้านการปฏิบัติงานที่สำคัญระหว่างการปฏิบัติงานหลักและการปฏิบัติงานของไปป์ไลน์อยู่ที่ การจัดการการจัดทำดัชนี ซึ่งส่งผลต่อประสิทธิภาพและต้นทุนโดยตรง
| รุ่นมาตรฐาน - การดำเนินการหลัก | รุ่น Enterprise - การดำเนินการหลักและไปป์ไลน์ | |
| ข้อกำหนดในการจัดทำดัชนี | ต้องมีดัชนีสำหรับการค้นหา
ระบบจะสร้างดัชนีสำหรับแต่ละช่องโดยอัตโนมัติ ส่วนการค้นหาที่ซับซ้อนกว่านั้นจะอาศัยดัชนีผสมหรือดัชนีกลุ่มคอลเล็กชันซึ่งต้องกำหนดค่าด้วยตนเอง |
ไม่จำเป็นต้องมีดัชนี ดังนั้นการค้นหาจึงไม่บังคับ
คุณกำหนดดัชนีได้ตามต้องการ นอกจากนี้ รุ่น Enterprise ยังรองรับดัชนีหลายประเภทมากขึ้น รวมถึงดัชนีแบบไม่กระจัดกระจาย/กระจัดกระจาย และดัชนีที่ไม่ซ้ำกัน |
| ประสิทธิภาพ | การค้นหาที่จัดทำดัชนี: ประสิทธิภาพและต้นทุนจะปรับขนาดตามขนาดของชุดผลลัพธ์ |
การค้นหาที่ไม่ได้จัดทำดัชนี: ประสิทธิภาพและต้นทุนจะปรับขนาดตามขนาดของชุดข้อมูล การค้นหาที่จัดทำดัชนี: ประสิทธิภาพและต้นทุนจะปรับขนาดตามขนาดของชุดผลลัพธ์ เราขอแนะนําให้ใช้เครื่องมืออธิบายการค้นหาและข้อมูลเชิงลึกของการค้นหาเพื่อสร้างดัชนี รวมถึงปรับปรุงประสิทธิภาพและต้นทุนของการค้นหา |
| ผลกระทบด้านต้นทุนของพื้นที่เก็บข้อมูล | คุณจะเสียค่าใช้จ่ายด้านพื้นที่เก็บข้อมูลจากดัชนีอัตโนมัติและดัชนีแบบผสม | คุณประหยัดค่าใช้จ่ายในการจัดเก็บข้อมูลเนื่องจากระบบจะไม่สร้างดัชนีสำหรับทุกช่องโดยอัตโนมัติ |
| ต้นทุน | ระบบจะเรียกเก็บเงินต่อการดำเนินการอ่าน เขียน และลบเอกสาร | คิดค่าบริการต่อหน่วยการอ่าน (4KB) และหน่วยการเขียน (1KB) การเขียนรายการดัชนีจะใช้หน่วยการเขียน
ดูข้อมูลเกี่ยวกับการกำหนดราคาใหม่พร้อมตัวอย่าง |
| กฎความปลอดภัย | กฎความปลอดภัยจะปกป้องคอลเล็กชันโดยการยืนยันสิทธิ์อ่าน/เขียน | กฎความปลอดภัยจะปกป้องคอลเล็กชันโดยการยืนยันสิทธิ์อ่าน/เขียน ดูวิธีสร้างโมเดลข้อมูลเพื่อรองรับการค้นหา Pipeline ในคำแนะนำโมเดลข้อมูล |