מצב Firestore Native מורכב משתי קבוצות של פעולות – פעולות Firestore Core ופעולות Firestore Pipeline.
הפעולות העיקריות של Firestore מספקות את הפונקציונליות הרגילה של יצירה, קריאה, עדכון ומחיקה (CRUD) של מסמכים, יחד עם תמיכה מובנית בשאילתות האזנה בזמן אמת ובשמירת נתונים במצב אופליין. הבדל תפעולי בולט במהדורה הזו הוא שהאינדקסים הם אופציונליים ולא נוצרים באופן אוטומטי לשדות בודדים. האפשרות הזו מאפשרת להריץ שאילתות בלי להגדיר מראש אינדקס, אבל שאילתות ללא אינדקס יסרקו כברירת מחדל את כל האוסף. ככל שמערך הנתונים גדל, כך גדלים גם זמני האחזור והעלויות.
פעולות הצינור של Firestore הן תכונה מרכזית במהדורת Firestore Enterprise, שמבוססת על מנוע שאילתות מתקדם כדי להרחיב באופן משמעותי את טווח השאילתות האפשריות. פעולות של צינורות נתונים ב-Firestore משתמשות בתחביר גמיש של שאילתות ובשיטת אינדוקס ייחודית שבה האינדקסים הם אופציונליים ולא נוצרים באופן אוטומטי. כך אפשר לבצע פעולות מתקדמות של אחזור נתונים באפליקציות.
תכונות של פעולות ליבה ב-Firestore
הפעולות המרכזיות מאפשרות פעולות CRUD רגילות ושאילתות האזנה בזמן אמת. עם זאת, כשמשתמשים בפעולות האלה במהדורת Enterprise, ההתנהגות הבסיסית לגבי יצירת אינדקס וחיוב משתנה באופן משמעותי בהשוואה למהדורת Standard.
פונקציונליות והמשכיות
פעולות הליבה שומרות על התחביר המוכר של שרשור שיטות (לדוגמה, .where(), .orderBy()) שמשמש במהדורה הרגילה. הפעולות האלה תומכות בשאילתות האזנה בזמן אמת ובשמירה במצב אופליין עבור לקוחות בנייד ובאינטרנט. מומלץ להשתמש בפעולות האלה לעומסי עבודה טרנזקציוניים רגילים, לחיפושים פשוטים ולהעברה של קוד אפליקציה קיים.
יצירת אינדקס בהתאמה אישית
בניגוד למהדורת Standard, בפעולת הליבה במהדורת Enterprise לא נוצרים באופן אוטומטי אינדקסים של שדה יחיד. האינדקסים הם אופציונליים ולא נדרשים להרצת שאילתה. אם אינדקס ספציפי חסר, השאילתה מבצעת סריקה מלאה של האוסף. שאילתות לא מאונדקסות מאפשרות יצירת אב טיפוס מהירה, אבל ככל שמערך הנתונים גדל, הביצוע שלהן עשוי להיות איטי יותר והעלות שלהן עשויה להיות גבוהה יותר. מפתחים צריכים ליצור אינדקסים באופן ידני כדי לבצע אופטימיזציה של ביצועי השאילתות ולהקטין את צריכת יחידות הקריאה.
מודל חיוב (לפי יחידה)
החיוב על יחידות קריאה מתבצע במנות של 4KB ולא לפי מספר המסמכים. שאילתה לא מאונדקסת שסורקת אוסף גדול תצרוך יחידות קריאה על סמך סך הבייטים שנסרקו בכל המסמכים. החיוב על יחידות כתיבה מתבצע במנות של 1KB. כתיבת מסמך צורכת יחידות עבור הנתונים ועוד יחידות עבור כל רשומה באינדקס שעודכנה. בניגוד למהדורה הרגילה, שבה מתבצע אינדוקס אוטומטי של שדה יחיד, עכשיו אפשר לבחור שדות ספציפיים לאינדוקס כדי לייעל את עלויות הכתיבה והביצועים.
תכונות של פעולות בצינור עיבוד נתונים של Firestore
מהדורת Firestore Enterprise עם פעולות Pipeline משתמשת במנוע שאילתות מתקדם שמסיר הרבה מהמגבלות הקיימות של מהדורת Firestore Standard. פעולות של צינורות עיבוד נתונים ב-Firestore מספקות מאות תכונות נוספות של שאילתות. הפעולות של צינור הנתונים של Firestore כוללות את היכולות הבאות:
תחביר של רכיבים קומפוזביליים מבוססי-שלב
שאילתות של צינורות מורכבות מסדרה של שלבים רציפים שמופעלים לפי הסדר. כך אפשר לבצע פעולות מורכבות, כמו סינון לפי תוצאה של צבירה, שלא היה אפשר לבצע בעבר.
בדוגמה הבאה מוצגת שאילתת צינור עיבוד נתונים שמוצאת את מספר מזהי המוצרים הייחודיים שנצפו בחודש האחרון:
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 Core במהדורת Firestore Enterprise.
Client and Tooling Integration
מהדורת Enterprise כוללת תכונות מיוחדות לאינטראקציה עם שאילתות של צינורות נתונים ולניהול שלהן:
- הסבר על שאילתות ופרופילים: אפשר להשתמש בתוצאות של Query Explain כדי להבין כמה יחידות קריאה או כתיבה צורכת שאילתה מסוימת ולנתח את הביצוע שלה.
- תובנות לגבי שאילתות: מהדורת Enterprise תומכת בתובנות לגבי שאילתות, שעוזרות לכם לקבוע איפה כדאי ליצור אינדקסים כדי לשפר את הביצועים ולצמצם את העלויות. התובנות האלה מספקות לכם נראות לגבי השאילתות המובילות שמופעלות במסד הנתונים שלכם ומאפייני הביצועים שלהן
- סוגים חדשים של אינדקסים: אתם יכולים ליצור אינדקסים מיוחדים למהדורת Enterprise, כולל סוגי אינדקסים כמו אינדקסים דלילים, לא דלילים וייחודיים. הוא תומך גם ביצירה ובעריכה של אינדקסים של חיפוש וקטורי למסדי נתונים של Enterprise.
ההבדלים בין Firestore Standard לבין Firestore Enterprise
ההבדל התפעולי העיקרי בין פעולות הליבה לפעולות הצינור הוא בניהול של יצירת אינדקסים, שמשפיע ישירות על הביצועים והעלות.
| Firestore Standard – פעולות ליבה | Firestore Enterprise – פעולות ליבה וצינורות נתונים | |
| דרישות בנוגע להוספה לאינדקס | כדי להריץ שאילתות, צריך להשתמש באינדקסים.
אינדקסים לשדות בודדים נוצרים באופן אוטומטי, אבל שאילתות מורכבות יותר מסתמכות על אינדקסים מורכבים או על אינדקסים של קבוצות אוספים שצריך להגדיר ידנית. |
האינדקסים לא נדרשים, ולכן הם אופציונליים לשאילתות.
אתם מגדירים את האינדקסים לפי הצורך. מהדורת Enterprise תומכת גם במגוון רחב יותר של סוגי אינדקסים, כולל אינדקסים לא דלילים/דלילים ואינדקסים ייחודיים. |
| ביצועים | שאילתות עם אינדקס: הביצועים והעלות משתנים בהתאם לגודל של קבוצת התוצאות. |
שאילתות שלא נוספו לאינדקס: הביצועים והעלויות משתנים בהתאם לגודל מערך הנתונים. שאילתות עם אינדקס: הביצועים והעלות משתנים בהתאם לגודל של קבוצת התוצאות. מומלץ להשתמש בכלים Query Explain ו-Query Insights כדי ליצור אינדקסים ולשפר את הביצועים והעלות של השאילתות. |
| השלכות על עלויות האחסון | אתם צוברים תקורה של אחסון ממדדים אוטומטיים וממדדים מורכבים. | אתם חוסכים בעלויות האחסון כי המערכת לא יוצרת אוטומטית אינדקסים לכל שדה. |
| מחיר מקורי | החיוב הוא על כל פעולת קריאה, כתיבה ומחיקה של מסמך. | החיוב מתבצע לכל יחידת קריאה (מנות של 4KB) ויחידת כתיבה (מנות של 1KB). כתיבת רשומות באינדקס צורכת יחידות כתיבה.
דוגמאות לתמחור החדש |
| כללי אבטחה | כללי אבטחה מגנים על אוספים על ידי אימות הרשאות קריאה/כתיבה. | כללי אבטחה מגנים על אוספים על ידי אימות הרשאות קריאה/כתיבה. במדריך מודל הנתונים מוסבר איך ליצור מודל של הנתונים כדי לתמוך בשאילתות של צינורות. |