Catch up on everthing we announced at this year's Firebase Summit. Learn more

השתמש ב- Cloud Firestore עם Firebase Realtime Database

אתה יכול להשתמש גם ב-Firebase Realtime Database וגם Cloud Firestore באפליקציה שלך, ולמנף את היתרונות של כל פתרון מסד נתונים כדי להתאים לצרכים שלך. לדוגמה, ייתכן שתרצה למנף תמיכה של מסד בזמן אמת עבור נוכחות, כפי שמתואר נוכחות Build ב קלאוד Firestore .

למידע נוסף על ההבדלים בין מסדי הנתונים .

העברת נתונים ל-Cloud Firestore

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

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

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

  3. שיקוף נתונים חדשים ל-Firestore בזמן אמת. השתמש בפונקציות הענן כדי לכתוב נתונים חדשים למסד הנתונים החדש שלך ב-Cloud Firestore כאשר הם מתווספים למסד הנתונים בזמן אמת.

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

הקפד להסביר חיוב העלויות הן מסד זמן אמת ו ענן Firestore .

מפה את הנתונים שלך

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

הבדלים עיקריים שיש לקחת בחשבון

אם אתה מעביר נתונים מעץ מסד הנתונים הקיים שלך בזמן אמת למסמכים ואוספים של Cloud Firestore, זכור את ההבדלים העיקריים הבאים בין מסדי הנתונים שעשויים להשפיע על אופן בניית הנתונים ב-Cloud Firestore:

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

שיטות עבודה מומלצות בפעולה

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

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

// /cities/$CITY_KEY
{
  name: "New York",
  population: 8000000,
  capital: False
}

// /city-landmark/$CITY_KEY/$LANDMARK_KEY
{
  name: "Empire State Building",
  category: "Architecture"
}

ל-Cloud Firestore יש קריאות רדודות, כך ששאילתה למסמכים באוסף לא מושכת נתונים מתתי-אוספים. כתוצאה מכך, אתה יכול לאחסן מידע על ציון דרך באוסף משנה:

// /cities/$CITY_ID
{
  name: "New York",
  population: 8000000,
  capital: False,
  landmarks: [... subcollection ...]
}

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

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

{
   cities: {
    // ...
   },

   capital-cities: {
     // ...
   }
}

ב-Cloud Firestore, אתה יכול לבטא רשימה של ערי בירה לפי סדר האוכלוסייה בשאילתה בודדת:

db.collection('cities')
    .where('capital', '==', true)
    .orderBy('population')

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

אבטח את הנתונים שלך

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

הבדלים עיקריים שיש לקחת בחשבון

  • ערכות SDK לנייד ולאינטרנט משתמשות בכללי האבטחה של Cloud Firestore, בעוד שערכות SDK של שרתים משתמשות בניהול גישה לזהות (IAM) כדי לאבטח נתונים.
  • כללי האבטחה של Cloud Firestore אינם משתפכים אלא אם כן אתה משתמש בתו כללי. מסמכים ואוספים אינם יורשים כללים בדרך אחרת.
  • אתה כבר לא צריך נתונים validate בנפרד (כפי שעשית מסד זמן אמת ).
  • Cloud Firestore בודק כללים לפני ביצוע שאילתה כדי לוודא שלמשתמש יש את הגישה המתאימה לכל הנתונים המוחזרים על ידי השאילתה.

העבר נתונים היסטוריים ל-Cloud Firestore

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

כדי להימנע מהחלפת נתונים חדשים בנתונים ישנים, ייתכן שתרצה להוסיף תחילה את הנתונים ההיסטוריים שלך. אם אתה מוסיף נתונים חדשים לשני מסדי הנתונים בו זמנית, כפי שנדון בשלב הבא, ודא שאתה נותן עדיפות לנתונים חדשים שנוספו ל-Cloud Firestore על ידי Cloud Functions.

כדי להעביר נתונים היסטוריים ל-Cloud Firestore, בצע את השלבים הבאים:

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

    שקול את האסטרטגיות הבאות בזמן שאתה מעביר חלק מהנתונים שלך ל-Cloud Firestore:

    • כתוב סקריפט מותאם אישית שמעביר את הנתונים שלך עבורך. למרות שאנו לא יכולים להציע תבנית התסריט הזה, משום שכל הנתונים יהיו צרכים ייחודיים, ענן Firestore מומחים שלנו ערוץ סלאק או על הצפת מחסנית יכול לסקור ייעוץ תסריט או הצעתך עבור למצב הספציפי שלך.
    • השתמש ב-SDK של השרת (Node.js, Java, Python או Go) כדי לכתוב נתונים ישירות ל-Cloud Firestore. לקבלת הוראות בנוגע להגדרת בערכות הפיתוח השרת, ראה תחילת העבודה .
    • כדי לזרז את הגירות נתונים גדולות, שימוש כותב לכלך ולשלוח עד 500 פעולות בקשת רשת יחידה.
    • כדי להישאר תחת מגבלות שיעור הענן Firestore , פעולות גבול 500 כותב / שני עבור כול אוסף.

הוסף נתונים חדשים ל-Cloud Firestore

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

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

הפוך את Cloud Firestore למסד הנתונים הראשי שלך עבור הנתונים שהועברו

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

  1. אם השתמשת ב-Cloud Functions כדי לשמור על זוגיות בין מסדי הנתונים שלך, ודא שאתה לא משכפל פעולות כתיבה על פני שני מסדי הנתונים בלולאה. החלף את הפונקציה שלך לכתיבה למסד נתונים בודד, או הסר את הפונקציה לחלוטין והתחל לבטל בהדרגה את פונקציונליות הכתיבה עבור הנתונים שהועברו באפליקציות שעדיין קשורות למסד נתונים בזמן אמת. איך אתה מטפל בזה עבור האפליקציה שלך תלוי בצרכים הספציפיים שלך ובמשתמשים שלך.

  2. ודא שהנתונים שלך מאובטחים כהלכה. אמת את כללי האבטחה של Cloud Firestore או הגדרת IAM.