2012-02-01 21 views
9

Tôi muốn sử dụng amazon Dynamo DB với đường ray. Nhưng tôi đã không tìm thấy cách để triển khai phân trang.Làm thế nào để thực hiện phân trang khi sử dụng amazon Dynamo DB trong đường ray

Tôi sẽ sử dụng AWS::Record::HashModel làm ORM.

ORM này hỗ trợ giới hạn như thế này:

People.limit(10).each {|person| ... } 

Nhưng tôi không thể tìm ra cách để thực hiện sau MySql truy vấn trong Dynamo DB.

SELECT * 
    FROM `People` 
LIMIT 1 , 30 

Trả lời

23

Bạn phát hành truy vấn bằng LIMIT. Nếu tập hợp con trả lại không chứa bảng đầy đủ, giá trị "LastEvaluatedKey" được trả về. Bạn sử dụng giá trị này làm ExclusiveStartKeyin truy vấn tiếp theo. Và cứ như vậy ...

Từ DynamoDB Developer Guide.

+2

câu trả lời này không tính đến tài khoản đó DynamoDB chỉ cung cấp pagination theo một hướng với đề cập 'LastEvaluatedKey' và' ExclusiveStartKey' (đi về phía trước). Phân trang tiêu chuẩn với, ít nhất, 'trước' và' tiếp theo' tùy chọn là không thể ra khỏi hộp với DynamoDB – Srle

+0

@ Srle, Bạn cung cấp cho mình cách để có hoạt động TIẾP THEO bằng cách sử dụng LastEvaluatedKey và ExclusiveStartKey. Bạn có thể đảo ngược thứ tự truy vấn và nhận hoạt động PREVIOUS. Đó là có sẵn trong DynamoDB ra khỏi hộp. –

+0

@ nickolay.laptev bạn có thể cung cấp ví dụ, gist hoặc một cái gì đó với hỗ trợ cả hai hướng ra khỏi hộp? – Srle

1

Bạn có thể cung cấp 'kích thước trang' trong truy vấn để đặt kích thước tập hợp kết quả. Phản hồi của DynamoDB chứa 'LastEvaluatedKey' sẽ cho biết khóa cuối cùng theo kích thước trang. Nếu phản hồi không chứa 'LastEvaluatedKey', điều đó có nghĩa là không còn kết quả nào để tìm nạp. Sử dụng 'LastEvaluatedKey' làm 'ExclusiveStartKey' trong khi tìm nạp lần sau.

Tôi hy vọng điều này sẽ hữu ích.

DynamoDB Pagination

Các vấn đề liên quan