เช่นเดียวกับระบบจัดการฐานข้อมูลอื่นๆ 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':'
แน่นอน คุณจะต้องแทนที่แอตทริบิวต์ทั้งหมดด้วยข้อมูลประจำตัวที่คุณกำหนดเอง เช่นเดียวกับที่คุณควรทำด้วยบรรทัดคำสั่งอื่นๆ ตัวอย่างเช่น เราจะใช้ตารางพนักงานของเราที่มีแอตทริบิวต์คีย์ช่วงที่เรียกว่า 'อายุ' เราจะมุ่งดึงนายจ้างที่มีอายุระหว่าง 30 ถึง 42 ปี
บรรทัดคำสั่งใหม่ของเราจะเป็นดังนี้:
แบบสอบถาม aws dynamodb \--ชื่อตารางผู้ใช้ \
--key-เงื่อนไขนิพจน์ 'อายุระหว่าง :val1 และ :val2' \
--expression-แอตทริบิวต์-ค่า '{':val1':{'น':'30'},':val2':{'น':'42'}}'
การเรียกใช้ยูทิลิตีด้านบนจะทำให้เกิดการตอบสนองคล้ายกับที่แสดงในรูปด้านล่าง
ภาพประกอบด้านบนแสดงให้เห็นว่าข้อความค้นหานำกลับมา 6 รายการ ซึ่งระบุค่าแอตทริบิวต์สำหรับแต่ละข้อความค้นหา ScannedCount คือจำนวนของรายการที่สแกนในตาราง ในขณะที่ CapacityUnits คือจำนวนหน่วยที่ใช้ระหว่างการดำเนินการ
บทสรุป
เนื่องจาก DynamoDB เป็นฐานข้อมูล NoSQL การดำเนินการสืบค้นจึงไม่ทำงานเหมือนกับฐานข้อมูล AQL ทั่วไปของคุณ แต่เมื่อคุณทำแล้ว คุณจะพบว่าการดำเนินการนั้นค่อนข้างทรงพลังและจะทำให้การโต้ตอบของคุณกับฐานข้อมูลแทบหยุดหายใจ