מה זה DataStore?
Google Cloud Datastore (שכיום קרוי Cloud Firestore בחבילת Firebase, אך Datastore עדיין קיים כתצורה),
הוא שירות NoSQL מבוזר, הניתן כשירות מנוהל (Fully Managed) בענן של Google.
Datastore נבנה כדי לאפשר אחסון, שאילתות וסנכרון של נתונים לא-רלציוניים (non-relational),
במיוחד עבור אפליקציות אינטרנט ומובייל עם דרישות גבוהות לביצועים, גמישות ואמינות.
תכונות עיקריות:
מבנה מבוסס מסמכים (Documents): כל אובייקט נשמר כישות (Entity) עם מזהה ייחודי ומאפיינים גמישים.
תמיכה באינדוקסים אוטומטיים: מאפשרת ביצוע שאילתות מורכבות מבלי לכתוב SQL.
שירות Fully Managed: ללא צורך בתחזוקה, גיבויים, עדכונים או ניהול תשתיות.
סקלאביליות אוטומטית: בנוי לטפל במיליוני בקשות ביום, ללא שינוי קוד.
שילוב עם Firebase: מאפשר סנכרון בזמן אמת בין מכשירים.
מי צריך DataStore?
Datastore מתאים במיוחד ל:
סטארטאפים ויזמים שמעוניינים לפתח אפליקציה במהירות בלי לדאוג לשרתים.
מפתחי מובייל ואינטרנט המעוניינים ב-backend סקלבילי וקל לשימוש.
ארגונים עם אפליקציות מבוססות Google Cloud שרוצים שירות נייטיב מבית גוגל.
מערכות מבוזרות עם שיתוף נתונים לדוגמה, מערכות IoT או שיתוף תכנים בזמן אמת.
מודולים עיקריים של Datastore
Entities & Kinds
יחידת המידע הבסיסית.
כל Entity משתייך ל-Kind (טבלת סוג) וכולל key ו־properties.
Indexes
אינדוקסים נוצרים אוטומטית, אך ניתן להגדיר גם אינדוקסים מורכבים ידנית (index.yaml).
Queries
תמיכה ב־range queries, sorting, filtering לפי מאפיינים.
Transactions
תמיכה בעסקאות (transactions) עם ACID חלקי, כולל כתיבה וקריאה במספר שלבים.
Security Rules
הגדרות גישה מבוססות משתמשים (ב-Firebase) או Identity & Access Management (IAM) ב-GCP.
Data Migration & Export/Import
כלים מובנים לייצוא נתונים לגיבוי או העברה.
Realtime Sync (רק ב-Firestore)
סנכרון דו-כיווני מיידי בין לקוח ושרת, עם listeners בצד הלקוח.
עלויות Datastore
החיוב מתבצע לפי:
אחסון – לפי גודל הנתונים המאוחסנים (GB לחודש).
קריאות וכתיבות – חיוב לפי מספר פעולות:
Document Reads
Document Writes
Document Deletes
אינדוקסים – מוסיפים עלות אחסון.
רוחב פס – תשלום לפי תעבורת נתונים יוצאת.
לדוגמה:
אחסון: כ־$0.18 ל-GB.
50,000 קריאות: חינם.
50,000 כתיבות: כ־$0.18.
תעבורה חוצה יבשות: בתשלום נוסף.
שאלות ותשובות בנושא Datastore
איך מבצעים שאילתת טווח על שדה שאינו באינדקס composite?
Datastore מאפשר שאילתות טווח רק אם קיים אינדקס תואם.
עליך להוסיף אינדקס composite בקובץ index.yaml ואז לפרוס אותו דרך gcloud CLI. לדוגמה:
yaml
– kind: Order
properties:
– name: customerId
– name: createdAt
direction: desc
כיצד להתמודד עם Consistency במודל eventual consistency של Datastore?
ברירת המחדל של Datastore היא eventual consistency עבור שאילתות. כדי לקבל strong consistency,
יש לבצע גישה לפי key או להשתמש ב־ancestor queries עם Entity Group (אך זה מגביל סקלאביליות).
ניתן גם להמתין בין כתיבה לקריאה, או לתכנן מבנה נתונים שמפחית תלות בעקביות מיידית.
מה ההבדל העיקרי בין Datastore ל־Firestore?
Firestore הוא הדור הבא של Datastore, עם:
תמיכה מובנית בסנכרון בזמן אמת.
היררכיית Collection > Document.
שאילתות חזקות יותר (כולל join-like).
כללי אבטחה עדינים יותר.
אך גם מגבלות ביצועים מסוימות באינדוקסים מורכבים.
Datastore (בגרסה Datastore Mode) עדיין נתמך לפרויקטים קיימים אך Firestore Mode הוא המומלץ לפרויקטים חדשים.
האם ניתן להריץ עסקאות חוצות Entities לא קשורים?
לא. עסקאות ב-Datastore מוגבלות ל־1MB ול-25 Entity Groups.
כדי לבצע פעולה אטומית על נתונים לא קשורים, ניתן להשתמש ב־distributed transactions pattern, אך זו אחריות המפתח.

