סקירה כללית של 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.

Client and Tooling Integration

מהדורת Enterprise כוללת תכונות מיוחדות לאינטראקציה עם שאילתות של צינורות עיבוד נתונים ולניהול שלהן:

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

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

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

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

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

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

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

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

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

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

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

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

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

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