Ví dụ về truy vấn DynamoDB

Vi Du Ve Truy Van Dynamodb



Cơ sở dữ liệu là một tập hợp dữ liệu—DynamoDB cũng không ngoại lệ. Cơ sở dữ liệu chứa nhiều dữ liệu có thể khó truy xuất nếu không có cơ chế được xác định trước. Đây là nơi lệnh truy vấn đóng vai trò quan trọng.

Giống như bất kỳ hệ thống quản lý cơ sở dữ liệu nào, DynamoDB cung cấp nhiều phương thức truy vấn khác nhau mà qua đó bạn có thể tương tác với hệ thống để truy cập và thao tác với dữ liệu của mình. Truy vấn trong DynamoDB là một công cụ rất mạnh cho phép bạn truy xuất một mục hoặc một nhóm mục liên quan đến lệnh truy vấn.

Bài viết này phác thảo các ví dụ chính về Thao tác truy vấn DynamoDB.







Các ví dụ về truy vấn DynamoDB phổ biến

Hành vi mặc định cho thao tác truy vấn trong DynamoDB là trả về tất cả các mục được liên kết với các mục truy vấn. Điều thú vị là lệnh truy vấn trong DynamoDB có thể sử dụng được với các bảng hoặc chỉ mục phụ.



Cho dù trường hợp nào xảy ra, hãy luôn đảm bảo rằng bạn chỉ định điều kiện bình đẳng cho giá trị của khóa phân vùng. Một lần nữa, bạn có thể cần cung cấp một điều kiện khác cho khóa sắp xếp trong trường hợp bạn sử dụng một điều kiện trong lệnh.



Các tham số khác mà bạn sẽ gặp khi truy vấn DynamoDB cũng bao gồm KeyConditionExpression và FilterExpression. KeyConditionExpression chỉ định các giá trị khóa mà bạn định truy vấn. Mặt khác, FilterExpression xóa các mục khỏi kết quả truy vấn trước khi bạn nhận được phản hồi. Bạn sẽ sử dụng ExpressionAttributeValues ​​làm trình giữ chỗ cho các tham số biểu thức được đề cập.





Ví dụ về Truy vấn DynamoDB bao gồm:

Tìm một mục từ một bảng dựa trên các khóa chính

Bạn có thể sử dụng tiện ích Truy vấn trong DynmoDB để tìm một mục duy nhất bằng cách dựa vào sự kết hợp giữa khóa phân vùng của mục và các giá trị khóa sắp xếp. Cú pháp cho một hoạt động như vậy là như sau:



truy vấn aws dynamodb \

--table-name MyTableName \

--key-điều kiện-biểu thức 'Khóa phân vùng = :pk VÀ SortKey = :sk' \

--biểu thức-thuộc tính-giá trị '{':pk':{'S':'a123b'},':sk':{'S':'def456b'}}'

Tiện ích truy vấn trên nhằm truy xuất một mục có giá trị khóa phân vùng a1234b và giá trị khóa sắp xếp odef456b từ bảng MyTableName. Ví dụ: chúng ta có thể sử dụng tiện ích trên để tìm một mặt hàng trong bảng 'Đơn hàng' của mình. Giá trị khóa phân vùng của mục có thể là wr546gg đại diện cho Customer_ID, trong khi giá trị khóa sắp xếp của nó có thể là 24536433 đại diện cho số thứ tự.

Kết quả có thể như sau:

Kết quả trên trả về Sách Kỳ nghỉ là mục duy nhất có giá trị khóa phân vùng là wr546gg và giá trị khóa sắp xếp là 24536433. Nó cũng mang đến cho bạn tất cả các thuộc tính bổ sung khác được liên kết với mục. Trong hình minh họa của chúng tôi, nó trả về số hóa đơn và số tiền đã thanh toán.

Đáng chú ý, lệnh truy vấn sẽ trả về một danh sách trống nếu không có mục nào khớp với các giá trị khóa chính được chỉ định.

Lấy lại Tất cả các mục từ một bảng DynamoDB khớp với các giá trị thuộc tính cụ thể

Sử dụng biểu thức bộ lọc để truy xuất tất cả các mục có giá trị thuộc tính tương tự trong một bảng DynamoDB cụ thể.

Lệnh cho thao tác truy vấn này như hình bên dưới.

truy vấn aws dynamodb \

--table-name MyTableName \

--filter-biểu thức 'OtherAttribute1 = :val' \

--biểu thức-thuộc tính-giá trị '{':val':{'S':'value1'}}'

Chẳng hạn, chúng ta có thể sử dụng lệnh truy vấn ở trên để truy xuất các bài hát có thời lượng hơn 5 phút trong bảng Âm nhạc của mình. Để đạt được điều này, chúng tôi sẽ đặt giá trị OtherAttribute1 của mình thành 5,00 và MyTableName thành Âm nhạc.

Kết quả có thể được như hình dưới đây:

Nó là cần thiết để cắt bớt danh sách cho ngắn gọn. Tuy nhiên, từ kết quả, lệnh truy vấn của chúng tôi đã truy xuất 11 mục có giá trị biểu thức bộ lọc là 5,00 từ bảng Âm nhạc DynamoDB của chúng tôi.

Truy xuất tất cả các mục có phạm vi giá trị thuộc tính cụ thể

Lệnh dưới đây có ích khi truy xuất các mục trong một bảng cụ thể:

truy vấn aws dynamodb \

--table-name \

--key-điều kiện-biểu thức 'attribute_name GIỮA :val1 VÀ :val2' \

--biểu thức-thuộc tính-giá trị '{':val1':{'N':''},':val2':{'N':''}}'

Tất nhiên, bạn sẽ cần thay thế tất cả các thuộc tính bằng thông tin đăng nhập tùy chỉnh của mình giống như bạn nên làm với bất kỳ dòng lệnh nào khác. Ví dụ: chúng tôi sẽ sử dụng bảng Nhân viên của mình với thuộc tính khóa phạm vi được đặt tên là 'tuổi'. Chúng tôi sẽ hướng đến việc tìm kiếm những người sử dụng lao động trong độ tuổi từ 30 đến 42.

Dòng lệnh mới của chúng ta sẽ như sau:

truy vấn aws dynamodb \

--table-name Người dùng \

--key-điều kiện-biểu thức 'tuổi GIỮA :val1 VÀ :val2' \

--biểu thức-thuộc tính-giá trị '{':val1':{'N':'30'},':val2':{'N':'42'}}'

Chạy tiện ích trên sẽ mang lại phản hồi tương tự như trong hình bên dưới;

Hình minh họa ở trên cho thấy rằng truy vấn mang lại 6 mục, cho biết giá trị thuộc tính cho mỗi truy vấn. ScannedCount là số mục được quét trong bảng trong khi CapacityUnits là số lượng đơn vị được tiêu thụ trong quá trình hoạt động.

Phần kết luận

Vì DynamoDB là một cơ sở dữ liệu NoSQL, hoạt động truy vấn của nó không hoạt động giống như hoạt động của cơ sở dữ liệu AQL thông thường của bạn. Nhưng một khi bạn làm vậy, bạn sẽ phát hiện ra rằng thao tác này khá mạnh mẽ và sẽ làm cho sự tương tác của bạn với cơ sở dữ liệu trở nên dễ dàng.