סקירה כללית של Firestore במצב Native

‫Firestore במצב Native מורכב משתי קבוצות של פעולות – פעולות Firestore Core ופעולות Firestore Pipeline.

הפעולות הבסיסיות של Firestore מספקות את הפונקציונליות הסטנדרטית של יצירה, קריאה, עדכון ומחיקה (CRUD) של מסמכים, יחד עם תמיכה מובנית בשאילתות האזנה בזמן אמת ובשמירת נתונים במצב אופליין. הבדל תפעולי בולט במהדורה הזו הוא שהאינדקסים הם אופציונליים ולא נוצרים אוטומטית לשדות בודדים. האפשרות הזו מאפשרת להריץ שאילתות בלי להגדיר מראש אינדקס, אבל שאילתות ללא אינדקס יסרקו כברירת מחדל את כל האוסף. ככל שמערך הנתונים גדל, כך גדלים גם זמני האחזור והעלויות.

פעולות הצינור של Firestore הן תכונה מרכזית במהדורת Firestore Enterprise, שמבוססת על מנוע שאילתות מתקדם שמרחיב באופן משמעותי את טווח השאילתות האפשריות. פעולות בצינורות משתמשות בתחביר גמיש של שאילתות ובשיטת אינדוקס ייחודית שבה האינדקסים הם אופציונליים ולא נוצרים באופן אוטומטי. כך אפשר לבצע פעולות מתקדמות של אחזור נתונים באפליקציות.

תכונות של פעולות ליבה ב-Firestore

הפעולות המרכזיות מאפשרות פעולות CRUD רגילות ושאילתות האזנה בזמן אמת. עם זאת, כשמשתמשים בפעולות האלה במהדורת Enterprise, ההתנהגות הבסיסית לגבי יצירת אינדקס וחיוב משתנה באופן משמעותי בהשוואה למהדורת Standard.

פונקציונליות והמשכיות

בפעולות הליבה נשמר התחביר המוכר של שרשור שיטות (לדוגמה, .where(), .orderBy()) שבו נעשה שימוש במהדורה הרגילה. הפעולות האלה תומכות בשאילתות האזנה בזמן אמת ובשמירת נתונים במצב אופליין עבור לקוחות בנייד ובאינטרנט. מומלץ להשתמש בפעולות האלה לעומסי עבודה טרנזקציוניים רגילים, לחיפושים פשוטים ולהעברה של קוד אפליקציה קיים.

הוספה לאינדקס בהתאמה אישית

בניגוד למהדורת Standard, פעולות ליבה במהדורת Enterprise לא יוצרות באופן אוטומטי אינדקסים של שדה יחיד. האינדקסים הם אופציונליים ולא נדרשים להרצת שאילתה. אם אינדקס מסוים חסר, השאילתה מבצעת סריקה מלאה של האוסף. שאילתות לא מאונדקסות מאפשרות יצירת אב טיפוס מהירה, אבל ככל שמערך הנתונים גדל, הביצועים שלהן עלולים להיות איטיים יותר והעלות שלהן גבוהה יותר. מפתחים צריכים ליצור אינדקסים באופן ידני כדי לשפר את ביצועי השאילתות ולצמצם את צריכת יחידות הקריאה.

מודל חיוב (לפי יחידה)

החיוב על יחידות קריאה מתבצע במנות של 4KB ולא לפי מספר המסמכים. שאילתה לא מאונדקסת שסורקת אוסף גדול תצרוך יחידות קריאה על סמך סך הבייטים שנסרקו בכל המסמכים. החיוב על יחידות כתיבה מתבצע במנות של 1KB. כתיבת מסמך צורכת יחידות עבור הנתונים ועוד יחידות עבור כל רשומה באינדקס שמתעדכנת. בניגוד למהדורה הרגילה, שבה מתבצע אינדוקס אוטומטי של שדה יחיד, עכשיו אפשר לבחור שדות ספציפיים לאינדוקס כדי לייעל את עלויות הכתיבה והביצועים.

תכונות של פעולות בצינור עיבוד נתונים של Firestore

מהדורת Firestore Enterprise עם פעולות Pipeline משתמשת במנוע שאילתות מתקדם שמסיר הרבה מההגבלות הקיימות של מהדורת Firestore Standard. פעולות של צינורות נתונים מספקות מאות תכונות נוספות של שאילתות. הפעולות בצינור עיבוד הנתונים כוללות את היכולות הבאות:

תחביר של רכיבים קומפוזביליים מבוססי-שלב

שאילתות של צינורות מורכבות מסדרה של שלבים עוקבים שמופעלים לפי הסדר. כך אפשר לבצע פעולות מורכבות, כמו סינון לפי התוצאה של צבירה, מה שלא היה אפשרי קודם.

בדוגמה הבאה מוצגת שאילתת צינור עיבוד נתונים שמוצאת את מספר מזהי המוצרים הייחודיים שנצפו בחודש האחרון:

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 כוללת תכונות מיוחדות לאינטראקציה עם שאילתות של צינורות נתונים ולניהול שלהן:

  • הסבר על שאילתות ופרופילים: אפשר להשתמש בתוצאות של Query Explain כדי להבין כמה יחידות קריאה או כתיבה שאילתה צורכת ולנתח את הביצוע שלה.
  • תובנות לגבי שאילתות: מהדורת Enterprise תומכת בתובנות לגבי שאילתות, שעוזרות לכם לקבוע איפה כדאי ליצור אינדקסים כדי לשפר את הביצועים ולצמצם את העלויות. התובנות האלה מספקות לכם נראות לגבי השאילתות המובילות שמופעלות במסד הנתונים שלכם ומאפייני הביצועים שלהן
  • סוגים חדשים של אינדקסים: אתם יכולים ליצור אינדקסים מיוחדים למהדורת Enterprise, כולל סוגי אינדקסים כמו אינדקסים דלילים, לא דלילים וייחודיים. הוא תומך גם ביצירה ובעריכה של אינדקסים של חיפוש וקטורי למסדי נתונים של Enterprise.

ההבדלים בין Firestore Standard לבין Firestore Enterprise

ההבדל התפעולי העיקרי בין פעולות הליבה לפעולות צינור עיבוד הנתונים הוא בניהול של יצירת האינדקס, שמשפיע ישירות על הביצועים והעלות.

מהדורת Standard – פעולות מרכזיות מהדורת Enterprise – פעולות ליבה וצינורות
דרישות בנוגע להוספה לאינדקס כדי להריץ שאילתות, צריך ליצור אינדקסים.

אינדקסים לשדות בודדים נוצרים באופן אוטומטי, בעוד ששאילתות מורכבות יותר מסתמכות על אינדקסים מורכבים או על אינדקסים של קבוצות אוספים שצריך להגדיר באופן ידני.

האינדקסים לא נדרשים, ולכן הם אופציונליים לשאילתות.

אתם מגדירים את האינדקסים לפי הצורך. מהדורת Enterprise תומכת גם במגוון רחב יותר של סוגי אינדקסים, כולל אינדקסים לא דלילים/דלילים ואינדקסים ייחודיים.

ביצועים שאילתות עם אינדקס: הביצועים והעלות משתנים בהתאם לגודל של קבוצת התוצאות.

שאילתות שלא נוספו לאינדקס: הביצועים והעלויות משתנים בהתאם לגודל מערך הנתונים.

שאילתות עם אינדקס: הביצועים והעלות משתנים בהתאם לגודל של קבוצת התוצאות.

מומלץ להשתמש בכלים Query Explain ו-Query Insights כדי ליצור אינדקסים ולשפר את הביצועים והעלות של השאילתות.

השלכות על עלויות האחסון נוצר עומס יתר על האחסון כתוצאה מאינדקסים אוטומטיים ומאינדקסים מורכבים. אתם חוסכים בעלויות האחסון כי המערכת לא יוצרת אוטומטית אינדקסים לכל שדה.
בסיס עלות החיוב הוא על כל פעולת קריאה, כתיבה ומחיקה של מסמך. החיוב מתבצע לכל יחידת קריאה (מנות של 4KB) ויחידת כתיבה (מנות של 1KB). כתיבת רשומות באינדקס צורכת יחידות כתיבה.

דוגמאות לתמחור החדש

כללי אבטחה כללי אבטחה מגנים על אוספים על ידי אימות הרשאות קריאה/כתיבה. כללי אבטחה מגנים על אוספים על ידי אימות הרשאות קריאה/כתיבה. במדריך מודל נתונים מוסבר איך ליצור מודל של הנתונים כדי לתמוך בשאילתות של צינורות.