ניהול תוכן במאגר עמודות באופן ידני

אתם יכולים להוסיף באופן ידני טבלאות, תצוגות מהותיות, עמודות ואינדקסים של וקטורים למאגר העמודות, כדי לקבוע אילו נתונים המנוע מבוסס-העמודות יאיץ. כדאי להשתמש בניהול ידני כשצריך שליטה פרטנית בתוכן של מאגר העמודות, במקום להסתמך על ארגון אוטומטי בעמודות כדי לנהל את העמודות באופן אוטומטי.

ניהול טבלאות, תצוגות מהותיות ואינדקסים של וקטורים

בהתאם לעומס העבודה, אתם יכולים להוסיף ידנית עמודות למאגר העמודות, או להסיר חלק מהעמודות או את כולן מטבלה או מתצוגה מהותית במאגר העמודות. הערכת השאילתות משתמשת באופן אוטומטי בנתונים שמאוחסנים בעמודות כדי לענות על השאילתות.

באופן דומה, אתם יכולים להוסיף באופן ידני אינדקסים וקטוריים של HNSW או ScaNN למנוע מבוסס-העמודות כדי להאיץ את החיפוש הווקטורי. האצת מנוע מבוסס-עמודות לאינדקסים של HNSW זמינה לכלל המשתמשים (GA), וההאצה לאינדקסים של ScaNN נמצאת בגרסת טרום-השקה (Preview). כך אפשר לבצע חיפושים יעילים של השכן הקרוב ביותר בקבוצות נתונים גדולות של הטמעות וקטורים.

כשבוחרים אילו טבלאות, תצוגות מהותיות ועמודות להוסיף למאגר העמודות, צריך להביא בחשבון גם את גודל מאגר העמודות וגם את צורת עומס העבודה. מועמדים טובים לבחירה כוללים טבלאות גדולות או תצוגות שנסרקות לעיתים קרובות. בטבלאות או בתצוגות האלה, מזהים אינדקסים גדולים לא ייחודיים שמשמשים את עומס העבודה של OLAP. אפשר להוסיף את העמודות של האינדקסים האלה למאגר העמודות, ואולי גם להסיר את האינדקסים, וכך לבטל את העלות של הביצועים שמשויכת לתחזוקה שלהם במכונה הראשית.

כדי לנהל את התוכן של המנוע מבוסס-העמודות, אפשר להשתמש באחת מהשיטות הבאות:

במאמר אילו נתונים אפשר להוסיף למאגר העמודות מוסבר אילו סוגי נתונים ומקורות נתונים אפשר להוסיף למאגר העמודות כשמוסיפים טבלאות, עמודות ותצוגות מהותיות.

לפני שמתחילים

  • בפרויקט ב- Google Cloud שבו אתם משתמשים, צריך להיות לכם אחד מתפקידי ה-IAM הבאים:
    • ‫roles/alloydb.admin (תפקיד IAM מוגדר מראש של אדמין ב-AlloyDB)
    • ‫roles/owner (תפקיד ה-IAM הבסיסי "בעלים")
    • ‫roles/editor (תפקיד העריכה הבסיסי ב-IAM)

    אם לא הוקצו לכם התפקידים האלה, פנו לאדמין הארגוני כדי לבקש גישה.

ניהול התוכן של מאגר העמודות באמצעות עדכון דגלים לניהול מסד נתונים

כדי לנהל את התוכן של מאגר העמודות באופן ידני, צריך לעדכן את הדגל לניהול מסד הנתונים google_columnar_engine.relations. לדגל יש ערך יחיד שמציין את כל מקורות הנתונים של מאגר העמודות. במהלך ההפעלה מחדש, העמודות שצוינו בדגל הזה מאוכלסות באופן אוטומטי במאגר העמודות.

אפשר להשתמש בדגל הזה יחד עם ארגון אוטומטי בעמודות. אם במנוע מבוסס-העמודות יש זיכרון זמין אחרי אכלוס העמודות שציינתם באמצעות הדגל google_columnar_engine.relations, הארגון האוטומטי בעמודות מוסיף עוד עמודות למאגר העמודות לפי הצורך.

מידע נוסף על הגדרת דגלים לניהול מסד נתונים של מכונה באמצעות Google Cloud CLI או מסוף Google Cloud זמין במאמר הגדרת דגלים לניהול מסד נתונים של מכונה.

הוספת עמודות באמצעות דגלים

כדי להוסיף עמודות למאגר העמודות, מגדירים את הדגל google_columnar_engine.relations של המכונה. מגדירים את הערך שלו כרשימה של פריטים שמופרדים בפסיקים, כשכל פריט מציין רשימה של עמודות שצריך לכלול מטבלה ספציפית, בפורמט הבא:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DATABASE_NAME: מסד הנתונים שמכיל את העמודות שרוצים להוסיף למאגר העמודות.

  • ‫SCHEMA_NAME: הסכימה שמזהה את הטבלאות או את התצוגות המהותיות שרוצים להוסיף למאגר הנתונים של העמודות, לדוגמה public.

  • ‫TABLE_NAME: הטבלה או התצוגה המהותית שמכילה את העמודות שרוצים להוסיף למאגר העמודות.

  • ‫COLUMN_LIST: רשימה מופרדת בפסיקים של העמודות שצריך להוסיף למאגר העמודות.

כדי להוסיף את כל העמודות של טבלה אחת או של תצוגה מהותית אחת, משמיטים את רשימת העמודות:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME

למידע נוסף על הגדרת הדגלים לניהול מסד נתונים במכונה, ראו הגדרת הדגלים לניהול מסד נתונים במכונה.

תחביר של ה-CLI של gcloud כשמשתמשים ב-google_columnar_engine.relations

אם אתם משתמשים ב-Google Cloud CLI כדי להגדיר את הדגל google_columnar_engine.relations, אתם צריכים להשתמש בתחביר חלופי של תו מפריד כדי להפריד בין הדגלים לניהול מסד הנתונים שהגדרתם. הסיבה לכך היא שרשימת העמודות מופרדת בפסיקים, ולכן צריך להשתמש בתו שאינו פסיק כשמציינים דגלים באותו ארגומנט של שורת הפקודה.

בדוגמה הבאה מוסבר איך להשתמש ב-CLI של gcloud כדי להוסיף שתי עמודות בסכימה public למאגר העמודות. בדוגמה הזו מוגדר דגל נפרד להפעלת המנוע מבוסס-העמודות, כי כשמשתמשים בפקודה gcloud alloydb instances update כדי להגדיר דגל כלשהו לניהול מסד נתונים, צריך להגדיר גם את כל הדגלים האחרים לניהול מסד נתונים שרוצים שיהיו להם ערכים שהם לא ברירת המחדל, גם אם הם כבר מוגדרים.

gcloud alloydb instances update INSTANCE_NAME \
    --database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
    --region=REGION_ID \
    --cluster=CLUSTER_ID

מחליפים את מה שכתוב בשדות הבאים:

  • ‫INSTANCE_NAME: שם המכונה.
  • ‫DATABASE_NAME: מסד הנתונים שמכיל את העמודות שרוצים להוסיף למאגר העמודות.
  • ‫TABLE_NAME: שם הטבלה או התצוגה המהותית.
  • ‫COLUMN_1, COLUMN_2: העמודות שצריך להוסיף למאגר העמודות.
  • ‫REGION_ID: האזור של המכונה.
  • ‫CLUSTER_ID: מזהה האשכול.

הסרת עמודות באמצעות דגלים

כדי להסיר עמודות ממאגר העמודות, מגדירים ערך חדש לדגל google_columnar_engine.relations שמתואר בקטע הקודם, ומשמיטים את העמודות שרוצים להסיר.

כדי להסיר את כל העמודות ממאגר העמודות, מבטלים את ההגדרה של הדגל google_columnar_engine.relations במכונה.

מידע נוסף על הגדרת דגלים לניהול מסד נתונים במכונה זמין במאמר הגדרת דגלים לניהול מסד נתונים של מכונה.

ניהול התוכן של מאגר העמודות באמצעות פונקציות SQL

אתם יכולים לנהל את התוכן של מאגר העמודות באופן ידני באמצעות פונקציות SQL.

הערכת הדרישות של נפח האחסון של מאגר העמודות

מריצים את הפונקציה google_columnar_engine_estimate ב-SQL כדי להעריך את כמות המקום הכוללת שנדרשת ליחס במנוע מבוסס-העמודות.

לקוח psql

SELECT google_columnar_engine_estimate(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_NAME: מחרוזת שמכילה את שם הטבלה או התצוגה המהותית. אם הטבלה או התצוגה נמצאות בסכימה שאינה ציבורית, צריך לציין את שם הסכימה, נקודה ואת שם הטבלה או התצוגה, לדוגמה 'myschema.mytable'.
  • ‫COLUMN_LIST: מחרוזת שמכילה רשימה מופרדת בפסיקים של שמות העמודות שרוצים להוסיף. השמות תלויי אותיות רישיות. אם רוצים להוסיף את כל העמודות של הטבלה או של התצוגה המהותית למאגר העמודות, משמיטים את הפרמטר הזה.

הוספת עמודות באמצעות פונקציות SQL

מריצים את הפונקציה google_columnar_engine_add ב-SQL כדי להוסיף עמודות למאגר העמודות.

השיטה הזו מוסיפה את העמודות שצוינו למאגר העמודות ומנהלת את העמודות בצומת המחובר בלבד. העמודות החדשות לא נשמרות במאגר אחרי הפעלה מחדש של המכונה.

השיטה הזו לא משנה את הדגל לניהול מסד הנתונים google_columnar_engine.relations. ארגון אוטומטי בעמודות לא מתייחס לעמודות שנוספו על ידי פונקציית ה-SQL הזו.

לקוח psql

SELECT google_columnar_engine_add(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_NAME: מחרוזת שמכילה את שם הטבלה או התצוגה המהותית. אם הטבלה או התצוגה נמצאות בסכימה אחרת מ-public, צריך לציין את שם הסכימה, נקודה ואת שם הטבלה או התצוגה, לדוגמה: 'myschema.mytable'.
  • ‫COLUMN_LIST: מחרוזת שמכילה רשימה מופרדת בפסיקים של שמות העמודות שרוצים להוסיף. הרשימה תלוית אותיות רישיות. אם רוצים להוסיף את כל העמודות של הטבלה או של התצוגה המהותית למאגר העמודות, משמיטים את הפרמטר הזה.

הסרת עמודות באמצעות פונקציות SQL

מריצים את פונקציית ה-SQL‏ google_columnar_engine_drop באופן הבא:

לקוח psql

SELECT google_columnar_engine_drop(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_NAME: מחרוזת שמכילה את שם הטבלה או התצוגה המהותית. אם הטבלה או התצוגה נמצאות בסכימה אחרת מ-public, צריך לציין את שם הסכימה, נקודה ואת שם הטבלה או התצוגה, לדוגמה: 'myschema.mytable'.
  • ‫COLUMN_LIST: מחרוזת שמכילה רשימה מופרדת בפסיקים של שמות העמודות שרוצים להסיר, תלוית אותיות רישיות. אם רוצים להשמיט את כל העמודות של הטבלה או של התצוגה המהותית ממאגר העמודות, משמיטים את הפרמטר הזה.

אפשר להשתמש בפונקציה google_columnar_engine_drop כדי להסיר עמודות שנוספו על ידי עריכת הדגל לניהול מסד הנתונים google_columnar_engine.relations. עם זאת, כשעושים את זה, העמודות האלה מתווספות בחזרה למאגר העמודות כשהמכונה מופעלת מחדש.

ניהול אינדקסים של וקטורים במנוע מבוסס-עמודות

כדי להאיץ את החיפוש הווקטורי, אתם יכולים לטעון אינדקסים וקטוריים למטמון לאינדקס של המנוע מבוסס-העמודות. האצת מנוע מבוסס-עמודות לאינדקסים של HNSW זמינה לכלל המשתמשים (GA), וההאצה לאינדקסים של ScaNN נמצאת בגרסת טרום-השקה (Preview).

הוספה, הסרה ואימות של אינדקסים וקטוריים באמצעות פונקציות SQL

אתם יכולים להוסיף, להסיר ולאמת אינדקסים של וקטורים באופן ידני מהמטמון לאינדקס באמצעות פונקציות SQL. הוספת אינדקס למטמון יכולה להאיץ את שאילתות החיפוש הווקטורי.

הוספת אינדקס וקטורי

כדי להוסיף אינדקס ספציפי למטמון לאינדקס של המנוע מבוסס-העמודות, משתמשים בפונקציית ה-SQL הבאה:

SELECT google_columnar_engine_add_index(index => 'INDEX_NAME');

מחליפים את INDEX_NAME בשם של אינדקס הווקטורים של HNSW או ScaNN שרוצים להוסיף למטמון לאינדקס של המנוע מבוסס-העמודות.

הסרת אינדקס וקטורי

כדי להסיר אינדקס וקטורי ספציפי מהמנוע מבוסס-העמודות, משתמשים בפונקציית ה-SQL הבאה:

SELECT google_columnar_engine_drop_index(index => 'INDEX_NAME');

מחליפים את INDEX_NAME בשם של אינדקס הווקטור שרוצים להסיר.

אימות השימוש במנוע מבוסס-עמודות

כדי לבדוק אם הסריקות של אינדקס הווקטורים משתמשות במנוע מבוסס-העמודות, מריצים את הפקודה EXPLAIN ANALYZE עם האפשרות COLUMNAR_ENGINE:

EXPLAIN (ANALYZE TRUE, SCANN TRUE, COSTS FALSE, TIMING FALSE, SUMMARY FALSE, VERBOSE FALSE, COLUMNAR_ENGINE TRUE)
SELECT * FROM t ORDER BY val <=> '[0.5,0.5,0.5,0.5]' LIMIT 100;

הפקודה מחזירה תוכנית לביצוע שאילתה שדומה לזו:

Index Scan using t_ix3 on t t_1 (actual rows=100 loops=1)
      Order By: (val <=> '[0.5,0.5,0.5,0.5]'::vector)
      Limit: 100
      ScaNN Info: (... columnar engine nodes hit=6...)
      Columnar Engine ScaNN Info: (index found=true)

הנוכחות של columnar engine nodes hit ו-Columnar Engine ScaNN Info: (index found=true) בפלט מאשרת שהמנוע מבוסס-העמודות משמש לשאילתה.

המאמרים הבאים