בדף הזה מתוארות בקשות כתיבה ב-Batch ב-Spanner, ומוסבר איך אפשר להשתמש בהן כדי לשנות את הנתונים ב-Spanner.
אפשר להשתמש בכתיבה באצווה ב-Spanner כדי להוסיף, לעדכן או למחוק כמה שורות בטבלאות של Spanner. הכתיבה באצווה ב-Spanner תומכת בכתיבה עם השהיה נמוכה ללא פעולת קריאה, ומחזירה תשובות כשהשינויים מוחלים באצוות. כדי להשתמש בכתיבה באצווה, מקבצים מוטציות קשורות, וכל המוטציות בקבוצה מבוצעות באופן אטומי. המוטציות בקבוצות מוחלות בסדר לא מוגדר והן בלתי תלויות זו בזו (לא אטומיות). Spanner לא צריך להמתין עד שכל השינויים יוחלו לפני שליחת תגובה, מה שאומר שפעולת כתיבה באצווה מאפשרת כשל חלקי. אפשר גם לבצע כמה פעולות כתיבה באצווה בו-זמנית. מידע נוסף זמין במאמר בנושא איך משתמשים בכתיבה באצווה.
תרחישים לדוגמה
הכתיבה באצווה ב-Spanner שימושית במיוחד אם רוצים לבצע כמות גדולה של פעולות כתיבה בלי פעולת קריאה, אבל לא נדרשת טרנזקציה אטומית לכל השינויים.
אם רוצים לבצע את בקשות ה-DML באצווה, משתמשים בDML באצווה כדי לשנות את נתוני Spanner. מידע נוסף על ההבדלים בין DML לבין מוטציות זמין במאמר השוואה בין DML לבין מוטציות.
לגבי בקשות לשינוי יחיד, מומלץ להשתמש בטרנזקציה של קריאה וכתיבה עם נעילה.
מגבלות
לכתיבה באצווה ב-Spanner יש את המגבלות הבאות:
אי אפשר להשתמש ב-Spanner batch write באמצעות מסוףGoogle Cloud או Google Cloud CLI. היא זמינה רק באמצעות ממשקי REST ו-RPC API וספריות הלקוח של Spanner.
הגנה מפני שידור חוזר אינה נתמכת באמצעות כתיבת אצווה. יכול להיות שמוטציות יוחלו יותר מפעם אחת, ומוטציה שמוחלת יותר מפעם אחת עלולה לגרום לכשל. לדוגמה, אם מפעילים מחדש מוטציה של הוספה, יכול להיות שתתקבל שגיאה של קיום נתונים שכבר קיימים, או שאם משתמשים במפתחות מבוססי חותמת זמן שנוצרו או הועברו במוטציה, יכול להיות שיתווספו שורות נוספות לטבלה. כדי למנוע את הבעיה הזו, מומלץ להגדיר את פעולות הכתיבה כך שיהיו אידמפוטנטיות.
אי אפשר לבטל בקשה לכתיבת נתונים בקבוצה אחרי שהיא הושלמה. אפשר לבטל בקשה לכתיבת נתונים בכמות גדולה שנמצאת בתהליך. אם מבטלים כתיבה של קבוצת פעולות שנמצאת בתהליך, מוטציות בקבוצות שלא הושלמו מבוטלות. מוטציות בקבוצות שהושלמו מועברות למסד הנתונים.
הגודל המקסימלי של בקשת כתיבה באצווה זהה למגבלה של בקשת ביצוע (commit). מידע נוסף זמין במאמר בנושא מגבלות על יצירה, קריאה, עדכון ומחיקה של נתונים.
איך משתמשים בכתיבה בקבוצות
כדי להשתמש בכתיבה באצווה, צריכה להיות לכם הרשאה spanner.databases.write במסד הנתונים שאתם רוצים לשנות. אפשר לבצע כמה שינויים בכתיבה בבת אחת (batch) בבקשה אחת באמצעות קריאה ל-API ל-REST או ל-RPC.
כשמשתמשים בכתיבה באצווה, צריך לקבץ יחד את סוגי המוטציות הבאים:
- הוספת שורות עם אותה תחילית של מפתח ראשי גם בטבלת ההורה וגם בטבלת הצאצא.
- הוספת שורות לטבלאות עם קשר של מפתח זר בין הטבלאות.
- סוגים אחרים של מוטציות קשורות, בהתאם לסכמת מסד הנתונים וללוגיקה של האפליקציה.
אפשר גם לכתוב נתונים בכתיבה אצווה באמצעות ספריות הלקוח של Spanner.
בדוגמת הקוד הבאה מתבצע עדכון של הטבלה Singers עם שורות חדשות.
ספריות לקוח
Java
Go
צומת
Python
C++