Datastore API for Firestore הוא מסד נתונים מסוג NoSQL לאחסון מסמכים שמיועד להתאמה לעומס (automatic scaling), לביצועים גבוהים ולפיתוח אפליקציות בקלות.
Firestore כולל את התכונות הבאות:
- עסקאות אטומיות: ביצוע של סדרת פעולות שכולן מצליחות או שכולן נכשלות.
- זמינות גבוהה של פעולות קריאה וכתיבה: מסדי הנתונים פועלים במרכזי הנתונים של Google, שמשתמשים ביתירות כדי למזער את ההשפעה של נקודות כשל.
- התאמה לעומס (scalability) בקנה מידה נרחב עם ביצועים גבוהים: ארכיטקטורה מבוזרת שמנהלת באופן אוטומטי את ההתאמה לעומס ושומרת על הביצועים גם בעומסים כבדים.
- אחסון גמיש של נתונים וביצוע שאילתות לגביהם: מיפוי מודל נתוני המסמכים לשפות תסריט ולשפות מונחות-אובייקטים מתבצע באופן טבעי, והוא נחשף לאפליקציות באמצעות כמה לקוחות. ה-API של Firestore שתואם ל-Datastore מספק גם שפת שאילתות שדומה ל-SQL.
- מודל עקביות חזק: השאילתות עקביות מאוד.
- הצפנה באחסון: הנתונים מוצפנים באופן אוטומטי לפני שהם נכתבים בדיסק, ומפוענחים באופן אוטומטי כשהם נקראים על ידי משתמש מורשה. מידע נוסף זמין במאמר בנושא הצפנה בצד השרת.
- ניהול מלא ללא השבתה מתוכננת: Google מטפלת בניהול השירות כדי שתוכלו להתמקד באפליקציה שלכם. האפליקציה שלכם יכולה להמשיך להשתמש ב-Firestore גם כשהשירות מקבל שדרוג מתוכנן.
השוואה למסדי נתונים רלציוניים
לממשק של Datastore יש הרבה תכונות דומות לאלה של מסדי נתונים רלציוניים, אבל בתור מסד נתונים של NoSQL, הוא שונה בתיאור של הקשרים בין אובייקטים של נתונים. הנה השוואה כללית בין מושגים שקשורים ל-Datastore ולמסדי נתונים רלציוניים:
| קונספט | Datastore | Firestore | מסד נתונים רלציוני |
|---|---|---|---|
| קטגוריית האובייקט | סוג | קבוצת אוספים | טבלה |
| אובייקט אחד | ישות | מסמך | Row |
| נתונים פרטניים של אובייקט | מאפיין (property) | שדה | עמודה |
| מזהה ייחודי של אובייקט | מפתח | מזהה המסמך | מפתח ראשי |
בניגוד לשורות בטבלה של מסד נתונים יחסי, לישויות Datastore מאותו סוג יכולים להיות מאפיינים שונים, ולישויות שונות יכולים להיות מאפיינים עם אותו שם אבל עם סוגי ערכים שונים. אתם יכולים להשתמש במאפיינים הייחודיים האלה כדי לעצב ולנהל נתונים באופן אוטומטי בהתאם לצרכים.
מכיוון שכל השאילתות מוגשות על ידי אינדקסים שנבנו בעבר, סוגי השאילתות ש-Datastore API יכול להריץ מוגבלים יותר מאלה שמותרים במסד נתונים רלציוני עם SQL. בפרט, Datastore לא כולל תמיכה בפעולות של צירוף, סינון של אי-שוויון בכמה מאפיינים או סינון של נתונים על סמך תוצאות של שאילתת משנה. אם האפליקציה שלכם דורשת יכולות מתקדמות של שאילתות, כולל הצטרפות ושאילתות משנה, כדאי להשתמש ב-Firestore Native API או ב-API שתואם ל-MongoDB.
בניגוד למסדי נתונים רלציוניים שבהם יש סכימה, ב-Datastore אין סכימה. לא נדרש שלישויות מאותו סוג יהיה סט עקבי של מאפיינים (אבל אתם יכולים לבחור לאכוף דרישה כזו בקוד האפליקציה שלכם).
אפשרויות אחרות לאחסון ולמסדי נתונים
ה-API של Firestore שתואם ל-Datastore מיועד לתמיכה באפליקציות מדור קודם של App Engine. אם אתם מחפשים מסד נתונים של NoSQL מבוסס-מסמכים לאפליקציה חדשה, מומלץ להשתמש באחד מממשקי ה-API של Firestore במקום ב-Datastore API כדי ליהנות מיכולות מתקדמות יותר. מידע נוסף על האפשרויות שלך
Firestore הוא מסד נתונים של מסמכים עם יכולת התאמה רחבה, אבל יכול להיות שהוא לא מתאים לכל תרחיש שימוש. לדוגמה, יכול להיות שזו לא תהיה האפשרות הכי טובה במקום מסד נתונים רלציוני. אלה כמה תרחישים נפוצים שבהם כדאי לשקול שימוש במסד נתונים חלופי:
- אם אתם צריכים מסד נתונים רלציוני עם תמיכה מלאה ב-SQL למערכת עיבוד טרנזקציות באינטרנט (OLTP), כדאי לשקול את Cloud SQL.
- אם אתם לא צריכים תמיכה בעסקאות ACID או שהנתונים שלכם לא מובְנים מאוד, כדאי לשקול שימוש ב-Bigtable.
- אם אתם צריכים שאילתות אינטראקטיביות במערכת עיבוד אנליטי אונליין (OLAP), כדאי לשקול שימוש ב-BigQuery.
- אם אתם צריכים לאחסן בלובים גדולים ובלתי ניתנים לשינוי, כמו תמונות או סרטים גדולים, כדאי להשתמש ב-Cloud Storage.
מידע נוסף על אפשרויות אחרות של מסדי נתונים זמין בסקירה הכללית של שירותי מסדי נתונים.
המאמרים הבאים
- איך מאחסנים נתונים ומריצים עליהם שאילתות באמצעות Google Cloud מסוף
- מידע נוסף על מודל הנתונים של Datastore
- שיטות מומלצות לשימוש ב-Datastore
התחברות ל-Datastore באמצעות App Engine
זמן הריצה הסטנדרטי של Go ב-App Engine מתחבר ל-Datastore באמצעות Go Datastore API.
רשימה מלאה של התוכן בחבילה datastore זמינה במאמר העזר בנושא חבילת datastore.