בדף הזה מוסבר איך להוסיף, לעדכן ולמחוק נתונים באמצעות מוטציות. מוטציה מייצגת רצף של הוספות, עדכונים ומחיקות שמערכת Spanner מחילה באופן אטומי על שורות וטבלאות שונות במסד נתונים. המוטציות מיועדות לכתיבת נתונים. הם לא יכולים לקרוא נתונים מהטבלאות שלכם. בפעולות עדכון רבות, צריך לקרוא נתונים קיימים לפני שמבצעים שינויים. בתרחישי השימוש האלה, צריך להשתמש בטרנזקציה עם הרשאות קריאה וכתיבה, שמאפשרת ל-Spanner לקרוא שורות ואז להחיל שינויים באותה פעולה אטומית.
אפשר לבצע שינויים באמצעות gRPC או REST, אבל בדרך כלל ניגשים לממשקי ה-API דרך ספריות הלקוח.
אם אתם צריכים לבצע כמות גדולה של כתיבות עיוורות, אבל לא נדרשת טרנזקציה אטומית, אתם יכולים לבצע שינויים בכמות גדולה בטבלאות Spanner באמצעות כתיבה באצווה. מידע נוסף מופיע במאמר שינוי נתונים באמצעות כתיבה של קבוצות.
הוספת שורות חדשות לטבלה
C++
כדי לכתוב נתונים, משתמשים בפונקציה InsertMutationBuilder().
Client::Commit() מוסיף שורות חדשות לטבלה. כל ההוספות בקבוצה אחת מוחלות באופן אטומי.
הקוד הזה מראה איך לכתוב את הנתונים:
C#
אפשר להוסיף נתונים באמצעות השיטה connection.CreateInsertCommand(), שיוצרת SpannerCommand חדש כדי להוסיף שורות לטבלה. השיטה
SpannerCommand.ExecuteNonQueryAsync() מוסיפה שורות חדשות לטבלה.
הקוד הבא מראה איך להוסיף נתונים:
המשך
אתם כותבים נתונים באמצעות Mutation. Mutation הוא מאגר לפעולות שינוי. Mutation מייצג רצף של פעולות הוספה, עדכון או מחיקה שאפשר להחיל באופן אטומי על שורות וטבלאות שונות במסד נתונים של Spanner.
משתמשים ב-Mutation.InsertOrUpdate()
כדי ליצור מוטציה של INSERT_OR_UPDATE, שמוסיפה שורה חדשה או מעדכנת
ערכים של עמודות אם השורה כבר קיימת. אפשר גם להשתמש בשיטה Mutation.Insert() כדי ליצור מוטציה של INSERT, שמוסיפה שורה חדשה.
Client.Apply() מחיל מוטציות באופן אטומי על מסד נתונים.
הקוד הזה מראה איך לכתוב את הנתונים:
Java
כותבים נתונים באמצעות אובייקט Mutation. אובייקט Mutation
הוא מאגר לפעולות שינוי. Mutation מייצג רצף של פעולות הוספה, עדכון ומחיקה ש-Spanner מבצע באופן אטומי בשורות ובטבלאות שונות במסד נתונים של Spanner.
השיטה newInsertBuilder() במחלקת Mutation יוצרת מוטציה של INSERT, שמוסיפה שורה חדשה לטבלה. אם השורה כבר קיימת, הכתיבה נכשלת. לחלופין, אפשר להשתמש בשיטה newInsertOrUpdateBuilder כדי ליצור מוטציה של INSERT_OR_UPDATE, שמעדכנת את ערכי העמודות אם השורה כבר קיימת.
השיטה write() במחלקה DatabaseClient כותבת את המוטציות. כל השינויים בחבילה אחת מוחלים באופן אטומי.
הקוד הזה מראה איך לכתוב את הנתונים:
Node.js
כותבים נתונים באמצעות אובייקט Table. השיטה
Table.insert()
מוסיפה שורות חדשות לטבלה. כל ההוספות באותו אצווה מוחלות באופן אטומי.
הקוד הזה מראה איך לכתוב את הנתונים:
PHP
כדי לכתוב נתונים משתמשים בשיטה Database::insertBatch. insertBatch מוסיף שורות חדשות לטבלה. כל ההוספות בחבילה אחת מוחלות באופן אטומי.
הקוד הזה מראה איך לכתוב את הנתונים:
Python
כותבים נתונים באמצעות אובייקט Batch. אובייקט Batch הוא קונטיינר לפעולות שינוי. מוטציה מייצגת רצף של הוספות, עדכונים או מחיקות שאפשר להחיל באופן אטומי על שורות וטבלאות שונות במסד נתונים של Spanner.
השיטה insert() במחלקה Batch משמשת להוספה של מוטציה אחת או יותר של הוספה לקבוצה. כל השינויים בחבילה אחת מוחלים באופן אטומי.
הקוד הזה מראה איך לכתוב את הנתונים:
Ruby
כותבים נתונים באמצעות אובייקט Client. השיטה Client#commit יוצרת טרנזקציה ומבצעת אותה לכתיבות שמתבצעות באופן אטומי בנקודה לוגית אחת בזמן, בעמודות, בשורות ובטבלאות במסד נתונים.
הקוד הזה מראה איך לכתוב את הנתונים:
עדכון שורות בטבלה
נניח שהמכירות של Albums(1, 1) נמוכות מהצפוי. לכן, אתם רוצים להעביר 200,000 $מתקציב השיווק של Albums(2, 2) אל Albums(1, 1), אבל רק אם הכסף זמין בתקציב של Albums(2, 2).
C++
אפשר להשתמש בפונקציה Transaction() כדי להריץ טרנזקציה עבור לקוח.
הנה הקוד להרצת העסקה:
C#
ב- .NET Standard 2.0 (או .NET 4.5) ובגרסאות חדשות יותר, אפשר להשתמש ב-
TransactionScope() של .NET framework כדי להריץ טרנזקציה. בכל הגרסאות הנתמכות של .NET, אפשר ליצור עסקה על ידי הגדרת התוצאה של SpannerConnection.BeginTransactionAsync כמאפיין Transaction של SpannerCommand.
אלה שתי הדרכים להפעלת העסקה: