Firestore במצב Datastore (Datastore) הוא מסד נתונים מסוג NoSQL לאחסון מסמכים שמיועד להתאמה לעומס (automatic scaling), לביצועים גבוהים ולפיתוח אפליקציות בקלות. התכונות של Datastore כוללות:
- עסקאות אטומיות. ב-Datastore אפשר להריץ קבוצה של פעולות שכולן יצליחו או שכולן ייכשלו.
- זמינות גבוהה של קריאה וכתיבה. Datastore פועל במרכזי הנתונים של Google, שמשתמשים בעודפות כדי למזער את ההשפעה של נקודות כשל.
- יכולת התאמה לעומס גבוהה מאוד עם ביצועים ברמה גבוהה. Datastore משתמש בארכיטקטורה מבוזרת כדי לנהל את ההתאמה באופן אוטומטי. ב-Datastore נעשה שימוש בשילוב של אינדקסים ומגבלות על שאילתות, כך שהשאילתות מתרחבות בהתאם לגודל של קבוצת התוצאות, ולא לגודל של מערך הנתונים.
- אחסון גמיש של נתונים ושליחת שאילתות לגביהם. Datastore ממופה באופן טבעי לשפות תסריט ולשפות מונחות-עצמים, והוא נחשף לאפליקציות באמצעות כמה לקוחות. הוא גם מספק שפת שאילתות שדומה ל-SQL.
- מודל עקביות חזק. מאגר הנתונים מוודא שכל השאילתות עקביות מאוד.
- הצפנה במצב מנוחה. ב-Datastore כל הנתונים מוצפנים באופן אוטומטי לפני שהם נכתבים בדיסק, והם מפוענחים באופן אוטומטי כשהם נקראים על ידי משתמש מורשה. מידע נוסף זמין במאמר בנושא הצפנה בצד השרת.
- מנוהל באופן מלא ללא השבתה מתוכננת. Google מטפלת בניהול השירות כדי שתוכלו להתמקד באפליקציה שלכם. האפליקציה שלכם יכולה להמשיך להשתמש ב-Datastore גם כשהשירות מקבל שדרוג מתוכנן.
השוואה למסדי נתונים רלציוניים
לממשק של Datastore יש הרבה תכונות דומות לאלה של מסדי נתונים רלציוניים, אבל בתור מסד נתונים של NoSQL, הוא שונה באופן שבו הוא מתאר את הקשרים בין אובייקטים של נתונים. הנה השוואה כללית בין המושגים של Datastore לבין המושגים של מסד נתונים רלציוני:
| קונספט | Datastore | Firestore | מסד נתונים רלציוני |
|---|---|---|---|
| קטגוריית האובייקט | סוג | קבוצת אוספים | טבלה |
| אובייקט אחד | ישות | מסמך | Row |
| נתונים ספציפיים של אובייקט | מאפיין (property) | שדה | עמודה |
| מזהה ייחודי של אובייקט | מפתח | מזהה המסמך | מפתח ראשי |
בניגוד לשורות בטבלה של מסד נתונים רלציוני, לישויות Datastore מאותו סיווג יכולות להיות מאפיינים שונים, ולישויות שונות יכולים להיות מאפיינים עם אותו שם אבל עם סוגי ערכים שונים. המאפיינים הייחודיים האלה מרמזים על דרך שונה לעיצוב ולניהול נתונים כדי לנצל את היכולת להרחבה אוטומטית. בפרט, Datastore שונה ממסד נתונים רלציוני מסורתי בדרכים החשובות הבאות:
- Datastore מיועד להתאמה אוטומטית לעומס (scaling) של קבוצות נתונים גדולות מאוד, כדי שהאפליקציות יוכלו לשמור על רמת ביצועים גבוהה כשהן מקבלות יותר תנועה:
- הכתיבה ב-Datastore מתבצעת בהתאמה לעומס, על ידי חלוקת הנתונים באופן אוטומטי לפי הצורך.
- קריאות מ-Datastore ניתנות להרחבה כי השאילתות הנתמכות הן רק אלה שהביצועים שלהן ניתנים להרחבה בהתאם לגודל של קבוצת התוצאות (בניגוד לקבוצת הנתונים). המשמעות היא ששאילתה שקבוצת התוצאות שלה מכילה 100 ישויות תפעל באותו אופן גם אם היא מחפשת בין מאה ישויות וגם אם היא מחפשת בין מיליון ישויות. המאפיין הזה הוא הסיבה העיקרית לכך שסוגים מסוימים של שאילתות לא נתמכים.
- מכיוון שכל השאילתות מוגשות על ידי אינדקסים שנבנו בעבר, סוגי השאילתות שאפשר להריץ מוגבלים יותר מאלה שמותרים במסד נתונים רלציוני עם SQL. בפרט, Datastore לא כולל תמיכה בפעולות של צירוף, סינון של אי-שוויון בכמה מאפיינים או סינון של נתונים על סמך תוצאות של שאילתת משנה.
- בניגוד למסדי נתונים רלציוניים שבהם יש סכימה, ב-Datastore אין סכימה. לא נדרש שלישויות מאותו סוג יהיה סט עקבי של מאפיינים (אבל אפשר לבחור לאכוף דרישה כזו בקוד האפליקציה שלכם).
למה כדאי להשתמש בו
Datastore הוא פתרון אידיאלי לאפליקציות שמסתמכות על נתונים מובְנים עם זמינות גבוהה בהיקף גדול. אפשר להשתמש ב-Datastore כדי לאחסן ולבצע שאילתות על כל סוגי הנתונים הבאים:
- קטלוגים של מוצרים שמספקים לקמעונאי פרטים על מוצרים ועל מלאי בזמן אמת.
- פרופילי משתמשים שמאפשרים חוויה מותאמת אישית על סמך הפעילויות וההעדפות של המשתמש בעבר.
- עסקאות שמבוססות על מאפייני ACID. לדוגמה, העברת כספים מחשבון בנק אחד לחשבון בנק אחר.
אפשרויות אחרות לאחסון ולמסדי נתונים
Datastore לא מתאים לכל תרחיש שימוש. לדוגמה, Datastore הוא לא מסד נתונים רלציוני, והוא לא פתרון יעיל לנתונים אנליטיים.
ריכזנו כאן כמה תרחישים נפוצים שבהם כדאי לשקול שימוש בחלופה ל-Datastore:
- אם אתם צריכים מסד נתונים רלציוני עם תמיכה מלאה ב-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 package reference.