בדף הזה מוסבר איך ליצור ולנהל נקודות פיצול במסד הנתונים. אתם יכולים ליצור נקודות פיצול כדי לפצל מראש את מסד הנתונים, וכך להתכונן לעלייה צפויה בתנועת הגולשים. מידע נוסף על פיצול מראש זמין במאמר סקירה כללית על פיצול מראש.
לפני שמתחילים
-
כדי לקבל את ההרשאה שנדרשת ליצירה ולניהול של נקודות פיצול, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של מסד נתונים ב-Cloud Spanner (
roles/spanner.databaseAdmin) במופע. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.התפקיד שמוגדר מראש מכיל את ההרשאה
spanner.databases.addSplitPoints, שנדרשת כדי ליצור ולנהל נקודות פיצול.יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.
הדוגמאות ל-CLI של gcloud שבדף הזה מבוססות על ההנחות הבאות:
- הגדרתם את ה-CLI של gcloud לשימוש עם Spanner. אם אתם חדשים בשימוש ב-CLI של gcloud עם Spanner, כדאי לעיין במאמר יצירה של מסד נתונים וביצוע שאילתות בו באמצעות ה-CLI של gcloud.
הגדרתם את ה-CLI של gcloud עם הפרויקט. לדוגמה:
gcloud config set core/project PROJECT_ID
מוודאים שיש מספיק צמתים במופע Spanner כדי לתמוך בעלייה הצפויה בתנועה. מידע נוסף מופיע במאמר סקירה כללית על פיצול מראש.
יצירת נקודות פיצול
אפשר ליצור נקודות פיצול באמצעות Google Cloud CLI או ממשקי ה-API ל-REST.
gcloud
אם רוצים ליצור נקודות פיצול באמצעות ה-CLI של gcloud, צריך ליצור קובץ שמכיל את כל הפיצולים ולספק את הנתיב בפקודת ה-CLI של gcloud. הקובץ לא יכול לחרוג ממגבלת ה-API של 100 נקודות לכל בקשת API. מידע נוסף זמין במאמר מכסות ומגבלות.
כדי לציין את נקודות הפיצול, צריך להשתמש בפורמט הבא בקובץ:
ObjectType ObjectName (SplitValue1)
ObjectType ObjectName (SplitValue2)
ObjectType ObjectName (SplitValueN)
כשיוצרים את הקובץ, מחליפים את המשתנים הבאים:
- ObjectType: סוג האובייקט שרוצים להוסיף לו פיצולים. הערכים התקינים הם
TABLEו-INDEX. - ObjectName: השם של טבלת מסד הנתונים או האינדקס.
- SplitValue1..N: ערכי נקודות הפיצול שבהם רוצים להציג את הפיצולים.
כשיוצרים את הערכים של נקודות הפיצול בקובץ, צריך לפעול לפי הכללים הבאים:
- ערכי מחרוזות צריכים להיות במירכאות בודדות. לדוגמה,
'splitKeyPart' - הערכים הבוליאניים צריכים להיות
trueאוfalse. - ערכים מסוג נתונים של Spanner
INT64ו-NUMERICצריכים להיות במירכאות בודדות. לדוגמה,'123'או'99.99'. - כל שאר הערכים המספריים צריכים להיכתב בלי גרשיים בודדים. לדוגמה,
1.287. - ערכים של חותמת זמן צריכים להיות בפורמט
'2020-06-18T17:24:53Z'בגרשיים בודדים. - צריך להוסיף סוגריים מסביב לערכים המפוצלים.
- הסדר של ערכי המפתחות המפוצלים צריך להיות זהה לסדר של המפתח הראשי.
- אם הערך המפוצל צריך לכלול פסיק, צריך להוסיף לפני הפסיק את התו `\`.
- כדי לפצל אינדקסים, אפשר לספק את מפתח האינדקס או את האינדקס כולו ואת מפתח הטבלה המלא.
- כשמציינים את נקודת הפיצול, תמיד צריך להשתמש במפתח המלא.
בדוגמה הבאה אפשר לראות איך מציינים נקודות פיצול:
TABLE Singers ('c32ca57a-786c-2268-09d4-95182a9930be')
TABLE Singers ('bb98c7e2-8240-b780-346d-c5d63886594a')
INDEX Order ('5b8bac71-0cb2-95e9-e1b0-89a027525460')
TABLE Payment ('6cf41f21-2d77-318f-c504-816f0068db8b')
INDEX Indx_A (2152120141932780000)
TABLE TableD (0,'7ef9d̦b22-d0e5-6041-8937-4bc6a7ef9db2')
INDEX IndexXYZ ('8762203435012030000',NULL,NULL)
INDEX IndexABC (0, '2020-06-18T17:24:53Z', '2020-06-18T17:24:53Z') TableKey
(123,'ab\,c')
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SPLITS_FILE: הנתיב לקובץ הפיצולים.
- INSTANCE_ID: מזהה המכונה.
- DATABASE_ID: מזהה מסד הנתונים.
-
EXPIRATION_DATE:
(אופציונלי) תאריך התפוגה של הנקודות המפוצלות. מקבלת חותמת זמן בפורמט
'2020-06-18T17:24:53Z'. - INITIATOR: (אופציונלי) הגורם שיזם את נקודות הפיצול.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud spanner databases splits add DATABASE_ID \ --splits-file=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows (PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows (cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
אפשר להשתמש ב-method projects.instances.databases.addSplitPoints כדי ליצור נקודות פיצול.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- DATABASE_ID: מזהה מסד הנתונים.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
תוכן בקשת JSON:
{
"split_points": [
{
"table": "T1",
"index": "T1_IDX",
"expire_time": "2023-04-22T10:00:20.021Z",
"keys": [
{
"key_parts": {
"values": [
3
]
}
},
{
"key_parts": {
"values": [
10
]
}
}
]
},
{
"table": "T2",
"expire_time": "2023-04-22T10:00:20.021Z",
"keys": [
{
"key_parts": {
"values": [
50
]
}
}
]
}
]
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמור להתקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.
ספריות לקוח
Go
Java
Node.js
Python
תרחישי שגיאה אפשריים
התרחישים הבאים עלולים לגרום לשגיאה כשיוצרים נקודות פיצול:
- בשם הטבלה בקלט של פיצול רמת האינדקס יש שגיאה.
- נקודת הפיצול ברמת הטבלה מכילה יותר ממפתח אחד.
- נקודת הפיצול ברמת האינדקס מכילה יותר משני מפתחות.
- נקודות הפיצול מוגדרות בטבלאות או באינדקסים שלא מוגדרים בסכימת מסד הנתונים.
- הבקשה מכילה נקודות פיצול כפולות.
מידע על מכסות ומגבלות זמין במאמר מכסות ומגבלות.
צפייה בנקודות המפוצלות
אפשר לראות את כל נקודות הפיצול שנוצרו במסד הנתונים באמצעות מסוףGoogle Cloud או ה-CLI של gcloud:
המסוף
כדי לקבל את מספר נקודות הפיצול באמצעות שאילתה בתצוגה במסוף SPANNER_SYS.USER_SPLIT_POINTS Google Cloud :
פותחים את הדף 'מכונות של Spanner'.
בוחרים את השמות של מופע Spanner ושל מסד הנתונים שרוצים לשלוח אליהם שאילתה.
בחלונית הניווט הימנית, לוחצים על Spanner Studio.
מקלידים את השאילתה הבאה בשדה הטקסט:
SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTSלוחצים על Run query.
יוצג לכם פלט דומה לזה:
| TABLE_NAME | INDEX_NAME | INITIATOR | SPLIT_KEY | EXPIRE_TIME |
|---|---|---|---|---|
| T | CloudAddSplitPointsAPI | T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-06T09:58:58.007201Z | |
| T | T_IDX | CloudAddSplitPointsAPI | אינדקס: T_IDX ב-T, מפתח אינדקס: (10), מפתח טבלה ראשי: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z |
| T | T_IDX | CloudAddSplitPointsAPI | אינדקס: T_IDX ב-T, מפתח אינדקס: (9091), מפתח טבלה ראשי: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-08T07:35:25.990007Z |
gcloud
מריצים את הפקודה הבאה ב-CLI של gcloud כדי לראות את נקודות הפיצול במסד הנתונים:
gcloud spanner databases splits list DATABASE_ID \
--instance INSTANCE_ID
כשמריצים את הפקודה הזו, מחליפים את המשתנים הבאים:
- INSTANCE_ID: מזהה מכונת Spanner.
- DATABASE_ID: מזהה מסד הנתונים של Spanner.
מופיעה תגובה שדומה לזו:
TABLE_NAME: T
INDEX_NAME:
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
EXPIRE_TIME: 2025-03-06T09:58:58.007201Z
TABLE_NAME: T
INDEX_NAME: T_IDX
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: Index: T_IDX on T, Index Key: (10), Primary Table Key: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>)
EXPIRE_TIME: 2025-03-08T07:33:23.861682Z
TABLE_NAME: T
INDEX_NAME: T_IDX
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: Index: T_IDX on T, Index Key: (9091), Primary Table Key: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
EXPIRE_TIME: 2025-03-08T07:35:25.990007Z
איך מגדירים תאריך תפוגה לנקודת פיצול
אפשר להגדיר זמן תפוגה לכל נקודת פיצול שיוצרים. מידע נוסף זמין במאמר בנושא תפוגה של נקודת חלוקה. אפשר להגדיר תפוגה לנקודות פיצול באמצעות Google Cloud CLI או ממשקי ה-API ל-REST.
gcloud
אם רוצים להגדיר תאריך תפוגה לנקודות פיצול באמצעות ה-CLI של gcloud, צריך ליצור קובץ שמכיל את כל הפיצולים שרוצים להגדיר להם תאריך תפוגה, ולספק את הנתיב שלו באמצעות הפרמטר splits-file בפקודת ה-CLI של gcloud. הקובץ לא יכול לחרוג ממגבלת ה-API של 100 נקודות לכל בקשת API. מידע נוסף זמין במאמר מכסות ומגבלות.
כדי לציין את נקודות הפיצול, צריך להשתמש בפורמט הבא בקובץ:
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
כשיוצרים את הקובץ, מחליפים את המשתנים הבאים:
- ObjectType: סוג האובייקט של הפיצול שרוצים להגדיר לו תפוגה. הערכים התקינים הם
TABLEו-INDEX. - ObjectName: השם של טבלת מסד הנתונים או האינדקס.
- SplitValue: ערך נקודת הפיצול שרוצים להוציא משימוש.
כשיוצרים את הערכים של נקודות הפיצול בקובץ, צריך לפעול לפי הכללים הבאים:
- ערכי מחרוזות צריכים להיות במירכאות בודדות. לדוגמה,
'splitKeyPart' - הערכים הבוליאניים יכולים להיות
trueאוfalse. - ערכים מסוג נתונים של Spanner
INT64ו-NUMERICצריכים להיות במירכאות בודדות. לדוגמה,'123'או'99.99'. - כל שאר הערכים המספריים צריכים להיכתב בלי גרשיים בודדים. לדוגמה,
1.287. - ערכים של חותמת זמן צריכים להיות בפורמט
'2020-06-18T17:24:53Z'בגרשיים בודדים. - צריך להוסיף סוגריים מסביב לערכים המפוצלים.
- הסדר של ערכי המפתחות המפוצלים צריך להיות זהה לסדר של המפתח הראשי.
- אם הערך המפוצל צריך לכלול פסיק, צריך להוסיף לפני הפסיק את התו `\`.
- כדי לפצל אינדקסים, אפשר לספק את מפתח האינדקס או את האינדקס כולו ואת מפתח הטבלה המלא.
- כשמציינים את נקודת הפיצול, תמיד צריך להשתמש במפתח המלא.
בדוגמה הבאה אפשר לראות איך מציינים נקודות פיצול:
TABLE Singers ('c32ca57a-786c-2268-09d4-95182a9930be')
TABLE Singers ('bb98c7e2-8240-b780-346d-c5d63886594a')
INDEX Order ('5b8bac71-0cb2-95e9-e1b0-89a027525460')
TABLE Payment ('6cf41f21-2d77-318f-c504-816f0068db8b')
INDEX Indx_A (2152120141932780000)
TABLE TableD (0,'7ef9db22-d0e5-6041-8937-4bc6a7ef9db2')
INDEX IndexXYZ ('8762203435012030000',NULL,NULL)
INDEX IndexABC (0, '2020-06-18T17:24:53Z', '2020-06-18T17:24:53Z') TableKey
(123,'ab\,c')
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SPLITS_FILE: הנתיב לקובץ הפיצולים.
- INSTANCE_ID: מזהה המכונה.
- DATABASE_ID: מזהה מסד הנתונים.
-
EXPIRATION_DATE:
(אופציונלי) תאריך התפוגה של הנקודות המפוצלות. מקבלת חותמת זמן בפורמט
'2020-06-18T17:24:53Z'. - INITIATOR: (אופציונלי) הגורם שיזם את נקודות הפיצול.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud spanner databases splits add DATABASE_ID \ --splits-file=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows (PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows (cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- DATABASE_ID: מזהה מסד הנתונים.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
תוכן בקשת JSON:
{
"split_points": [
{
"table": "T1",
"index": "T1_IDX",
"expire_time": "2023-04-22T10:00:20.021Z",
"keys": [
{
"key_parts": {
"values": [
3
]
}
},
{
"key_parts": {
"values": [
10
]
}
}
]
},
{
"table": "T2",
"expire_time": "2023-04-22T10:00:20.021Z",
"keys": [
{
"key_parts": {
"values": [
50
]
}
}
]
}
]
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמור להתקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.