ตัวอย่างแบบสอบถาม DynamoDB

Tawxyang Baebsxbtham Dynamodb



ฐานข้อมูลคือการรวบรวมข้อมูล—DynamoDB ก็ไม่มีข้อยกเว้น ฐานข้อมูลประกอบด้วยข้อมูลจำนวนมากที่อาจเรียกคืนได้ยากหากไม่มีกลไกที่กำหนดไว้ล่วงหน้า นี่คือจุดที่คำสั่งคิวรีมีบทบาทสำคัญ

เช่นเดียวกับระบบจัดการฐานข้อมูลอื่นๆ DynamoDB มีวิธีการสืบค้นที่หลากหลาย ซึ่งคุณสามารถโต้ตอบกับระบบเพื่อเข้าถึงและจัดการข้อมูลของคุณได้ การสืบค้นข้อมูลใน DynamoDB เป็นเครื่องมือที่ทรงประสิทธิภาพมาก ซึ่งช่วยให้คุณดึงรายการหรือกลุ่มของรายการที่เกี่ยวข้องกับคำสั่งการสืบค้นได้

บทความนี้สรุปตัวอย่างหลักของการดำเนินการสืบค้น DynamoDB







ตัวอย่างแบบสอบถาม DynamoDB ทั่วไป

ลักษณะการทำงานเริ่มต้นสำหรับการดำเนินการสืบค้นข้อมูลใน DynamoDB คือการส่งคืนรายการทั้งหมดที่เกี่ยวข้องกับรายการสืบค้น น่าสนใจ คำสั่งเคียวรีใน DynamoDB ใช้ได้กับตารางหรือดัชนีรอง



ไม่ว่าในกรณีใด ตรวจสอบให้แน่ใจเสมอว่าคุณระบุเงื่อนไขความเท่าเทียมกันสำหรับค่าของพาร์ติชันคีย์ของคุณ อีกครั้ง คุณอาจต้องระบุเงื่อนไขอื่นสำหรับคีย์การเรียงลำดับในกรณีที่คุณใช้ในคำสั่ง



พารามิเตอร์อื่นๆ ที่คุณจะพบเมื่อสอบถาม DynamoDB ยังรวมถึง KeyConditionExpression และ FilterExpression KeyConditionExpression ระบุค่าคีย์ที่คุณต้องการสอบถาม ในทางกลับกัน FilterExpression จะลบรายการออกจากผลลัพธ์ของคิวรีก่อนที่คุณจะได้รับการตอบกลับ คุณจะใช้ ExpressionAttributeValues ​​เป็นตัวยึดสำหรับพารามิเตอร์นิพจน์ที่กล่าวถึง





ตัวอย่างข้อความค้นหา DynamoDB ได้แก่:

การค้นหารายการเดียวจากตารางตามคีย์หลัก

คุณสามารถใช้ยูทิลิตี Query ใน DynmoDB เพื่อค้นหารายการเดียวโดยอาศัยการผสมระหว่างคีย์พาร์ติชันของรายการและค่าคีย์การเรียงลำดับ ไวยากรณ์สำหรับการดำเนินการดังกล่าวมีดังนี้:



แบบสอบถาม aws dynamodb \

--ชื่อตาราง MyTableName \

--key-เงื่อนไขนิพจน์ 'PartitionKey = :pk และ SortKey = :sk' \

--expression-แอตทริบิวต์-ค่า '{':pk':{'S':'a123b'},':sk':{'S':'def456b'}}'

ยูทิลิตีการสอบถามด้านบนมีจุดมุ่งหมายเพื่อดึงรายการที่มีค่าคีย์พาร์ติชัน a1234b และค่าคีย์การเรียงลำดับ odef456b จากตาราง MyTableName ตัวอย่างเช่น เราสามารถใช้ยูทิลิตี้ด้านบนเพื่อค้นหารายการในตาราง 'คำสั่งซื้อ' ของเรา ค่าคีย์พาร์ติชันของรายการสามารถเป็นได้ wr546gg เป็นตัวแทนของ Customer_ID ในขณะที่ค่าคีย์การเรียงลำดับสามารถเป็นได้ 24536433 แทนหมายเลขคำสั่งซื้อ

ผลลัพธ์สามารถเป็นดังนี้:

ผลลัพธ์ข้างต้นทำให้หนังสือวันหยุดกลับมาเป็นรายการเดียวที่มีค่าคีย์พาร์ติชันเป็น wr546gg และค่าคีย์การเรียงลำดับเป็น 24536433 นอกจากนี้ยังแสดงแอตทริบิวต์เพิ่มเติมอื่นๆ ทั้งหมดที่เกี่ยวข้องกับรายการ ในภาพประกอบของเรา จะแสดงหมายเลขใบแจ้งหนี้และจำนวนเงินที่ชำระคืน

โดยเฉพาะอย่างยิ่ง คำสั่งเคียวรีจะนำรายการว่างกลับมาหากไม่มีรายการที่ตรงกับค่าคีย์หลักที่ระบุ

ดึง รายการทั้งหมดจากตาราง DynamoDB ที่ตรงกับค่าแอตทริบิวต์เฉพาะ

ใช้นิพจน์ตัวกรองเพื่อดึงรายการทั้งหมดที่มีค่าแอตทริบิวต์คล้ายกันในตาราง DynamoDB เฉพาะ

คำสั่งสำหรับการดำเนินการค้นหานี้แสดงไว้ด้านล่าง

แบบสอบถาม aws dynamodb \

--ชื่อตาราง MyTableName \

--ตัวกรองนิพจน์ 'OtherAttribute1 = :val' \

--expression-แอตทริบิวต์-ค่า '{':val':{'S':'value1'}}'

ตัวอย่างเช่น เราสามารถใช้คำสั่งเคียวรีด้านบนเพื่อดึงเพลงที่มีมากกว่า 5 นาทีในตารางเพลงของเรา เพื่อให้บรรลุเป้าหมายนี้ เราจะตั้งค่า OtherAttribute1 เป็น 5.00 และ MyTableName เป็น Music

ผลลัพธ์สามารถแสดงด้านล่าง:

จำเป็นต้องตัดรายการให้สั้นลง แต่จากผลลัพธ์ คำสั่งการสืบค้นของเราดึงข้อมูล 11 รายการที่มีค่าการแสดงออกของตัวกรองเท่ากับ 5.00 จากตาราง DynamoDB Music ของเรา

ดึงรายการทั้งหมดที่มีค่าแอตทริบิวต์เฉพาะเจาะจง

คำสั่งด้านล่างมีประโยชน์เมื่อเรียกค้นรายการภายในตารางเฉพาะ:

แบบสอบถาม aws dynamodb \

--ชื่อตาราง <ชื่อตาราง> \

--key-เงื่อนไขนิพจน์ 'attribute_name ระหว่าง :val1 และ :val2' \

--expression-แอตทริบิวต์-ค่า '{':val1':{'N':''},':val2':{'N':''}}'

แน่นอน คุณจะต้องแทนที่แอตทริบิวต์ทั้งหมดด้วยข้อมูลประจำตัวที่คุณกำหนดเอง เช่นเดียวกับที่คุณควรทำด้วยบรรทัดคำสั่งอื่นๆ ตัวอย่างเช่น เราจะใช้ตารางพนักงานของเราที่มีแอตทริบิวต์คีย์ช่วงที่เรียกว่า 'อายุ' เราจะมุ่งดึงนายจ้างที่มีอายุระหว่าง 30 ถึง 42 ปี

บรรทัดคำสั่งใหม่ของเราจะเป็นดังนี้:

แบบสอบถาม aws dynamodb \

--ชื่อตารางผู้ใช้ \

--key-เงื่อนไขนิพจน์ 'อายุระหว่าง :val1 และ :val2' \

--expression-แอตทริบิวต์-ค่า '{':val1':{'น':'30'},':val2':{'น':'42'}}'

การเรียกใช้ยูทิลิตีด้านบนจะทำให้เกิดการตอบสนองคล้ายกับที่แสดงในรูปด้านล่าง

ภาพประกอบด้านบนแสดงให้เห็นว่าข้อความค้นหานำกลับมา 6 รายการ ซึ่งระบุค่าแอตทริบิวต์สำหรับแต่ละข้อความค้นหา ScannedCount คือจำนวนของรายการที่สแกนในตาราง ในขณะที่ CapacityUnits คือจำนวนหน่วยที่ใช้ระหว่างการดำเนินการ

บทสรุป

เนื่องจาก DynamoDB เป็นฐานข้อมูล NoSQL การดำเนินการสืบค้นจึงไม่ทำงานเหมือนกับฐานข้อมูล AQL ทั่วไปของคุณ แต่เมื่อคุณทำแล้ว คุณจะพบว่าการดำเนินการนั้นค่อนข้างทรงพลังและจะทำให้การโต้ตอบของคุณกับฐานข้อมูลแทบหยุดหายใจ