ביטויי סינון DynamoDB: כל מה שאתה צריך לדעת

Bytwyy Synwn Dynamodb Kl Mh S Th Zryk Ld T



ביטויי סינון משמשים בפונקציית No-SQL DynamoDB כמו פסקאות WHERE הנפוצות במסדי נתונים של SQL. עם זאת, מכיוון ש-DynamoDB הוא מסד נתונים ללא SQL, ביטויי סינון מתנהגים בצורה שונה למדי ממשפטי WHERE בגלל האופי והמבנה של מסדי נתונים ללא SQL.

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

מה הם ביטויי סינון?

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







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



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



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





תחביר ביטויי סינון ודוגמאות

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

האופרטורים האחרים שמסננים את הביטויים יכולים להשתמש כוללים גם את האופרטור CONTAINS, האופרטור OR, האופרטור not-equals (), האופרטור IN, האופרטור BETWEEN, האופרטור BEGINS_WITH, האופרטור SIZE ואופרטור EXISTS.



דוגמה 1: שאילתות באמצעות מפתחות ראשיים של AWS CLI ו- DynamoDB

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

ניתן לציין את מספר הצפיות (#v) בפקודה. לדוגמה, אנו מתייגים את המגבלה המינימלית שלנו ל-1,000 צפיות כדי לרמוז שרק התוצאות של השירים עם למעלה מ-1000 צפיות יחזרו.

$ aws dynamodb שאילתה \
--שם שולחן מוזיקה \
--מפתח-תנאי-ביטוי 'ז'אנר = :fn ואמן = :sub' \
--מסנן-ביטוי '#v >= :num(1000)' \
--expression-attribute-names '{'#v': 'צפיות'}' \
--expression-attribute-values קוֹבֶץ: // values.json

דוגמה 2: שימוש ב-AWS CLI עם ביטוי תנאי

אנחנו יכולים לבנות מחדש את אותה שאילתה כמו בדוגמה הקודמת אבל עכשיו עם מפתחות תנאי לצד המסננים שלנו. זה לא כולל את מפתח המיון. במקום זאת, הוא מאחזר את כל הרשומות עבור האמן שצוין עם יותר מ-1,000 צפיות. ניתן גם לשחזר אותו כדי לספק הזמנות מעל מספר נתון עבור שם משתמש מסוים (מזהה_לקוח).

$ aws dynamodb שאילתה \
--שם שולחן מוזיקה \
--מפתח-תנאי-ביטוי 'שם משתמש = :שם משתמש' \
--מסנן-ביטוי 'כמות > :כמות' \
--expression-attribute-values '{
':username': { 'S': 'אמן' },
':amount': { 'N': '1000' }
}'
\
$LOCAL

דוגמה לתוצאה נראית כך:

האיור הנתון מראה שמתוך 56 כותרות השירים של אותו אמן, רק לשבעה שירים יש יותר מ-1,000 צפיות. עם זאת, קיצרנו את הנתון למטרות קיצור והכנסנו רק את התוצאות הראשונות והאחרונות ברשימה.

דוגמה 3: שימוש בביטויי סינון עם האופרטור No-Equal ()

בכלי השירות הבא של Java, אנו רוצים לשאול את הטבלה שלנו (אוסף סרטים) עבור כל הסרטים שאינם שווים ל'סרט X'. ודא שאתה משתמש בביטוי מסנן עם תכונה (#name) לצד ערך תכונת ביטוי (:name) כפי שמוצג בהמשך:

const AWS = דורש ( 'aws-sdk' ) ;
AWS.config.update ( { אזור: 'eu-west-1' } ) ;
const dynamodb = AWS.DynamoDB.DocumentClient חדש ( ) ;

var params = {
שם שולחן: 'אוסף סרטים' ,
KeyConditionExpression: '#PK = :PK' ,
FilterExpression: '#שם שם' , ( ביטוי מסנן )
ExpressionAttributeNames: { '#PK' : 'PK' , '#שֵׁם' : 'שֵׁם' } , ( ביטוי תנאי )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':שֵׁם' : 'סרט X'
}
} ;

dynamodb.query ( פרמטרים, פוּנקצִיָה ( טעות, נתונים ) {
אם ( לִטְעוֹת ) console.log ( לִטְעוֹת ) ;
אַחֵר console.log ( נתונים ) ;
} ) ;

דוגמה 4: שימוש בביטויי סינון עם מפעיל הסריקה

בעוד שהפקודה הקודמת משתמשת ב-<> כדי להביא רק את אותם פריטים שאינם שווים לשם הסרט בשם Movie X, ודא שאתה משתמש בביטויי תנאי המפתח כאן יחד עם ביטוי המסנן. הסיבה לכך היא שאי אפשר לסנן את הנתונים באופרטור ה-Query מבלי להשתמש בביטוי תנאי מפתח.

var params = {
שם שולחן: 'אוסף סרטים' ,
FilterExpression: 'PK = :PK ו-#name  :name' ,
ExpressionAttributeNames: { '#שֵׁם' : 'שֵׁם' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':שֵׁם' : 'סרט X'
}
} ;

dynamodb.scan ( פרמטרים, פוּנקצִיָה ( טעות, נתונים ) {
אם ( לִטְעוֹת ) console.log ( לִטְעוֹת ) ;
אַחֵר console.log ( נתונים ) ;
} ) ;

סיכום

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