Tôi cần thực hiện truy vấn IN trên thuộc tính khóa. Kể từ đó, Truy vấn không cung cấp điều kiện IN, tôi đang lên kế hoạch sử dụng Quét. Sẽ QUÉT trên thuộc tính quan trọng quét toàn bộ bảng?QUÉT trên thuộc tính khóa trong DynamoDB
Trả lời
SCAN trên thuộc tính khóa có quét toàn bộ bảng không?
Vâng, thấy Query and Scan in Amazon DynamoDB:
Scan
Một hoạt động quét quét toàn bộ bảng. Bạn có thể chỉ định bộ lọc cho áp dụng cho kết quả để tinh chỉnh các giá trị được trả về cho bạn, sau khi quét hoàn tất . Amazon DynamoDB đặt giới hạn 1MB khi quét (giới hạn áp dụng trước khi kết quả được lọc). Quá trình quét có thể dẫn đến không có dữ liệu bảng nào đáp ứng tiêu chí lọc.
Cụ thể, không có sự khác biệt giữa chính và phi chính thuộc tính như xa như các Scan API là có liên quan, nghĩa là bạn chỉ cần cung cấp các thuộc tính mong muốn theo tên, bất kể chúng được sử dụng như một thuộc tính cấu thành Primary Key cũng hay không:
AttributesToGet
Array của tên thuộc tính. Nếu tên thuộc tính không được chỉ định thì tất cả các thuộc tính sẽ được trả lại. Nếu một số thuộc tính không được tìm thấy, chúng sẽ không xuất hiện trong kết quả.
Quá tệ. Điều gì sẽ là sự khác biệt chi phí giữa quét và truy vấn cho 100 hồ sơ phù hợp trên một triệu recordset? –
@Mani: Rất có thể rất lớn: _SCAN_ không được thiết kế để sử dụng theo cách đó và có ý nghĩa quan trọng về chi phí/hiệu suất cho các bản ghi khổng lồ, nếu được sử dụng mà không tính toán cụ thể - tính toán này khá phức tạp. thông qua bài đăng blog đầu tiên của Chris Moyer trên [Amazon DynamoDB] (http://blog.coredumped.org/2012/01/amazon-dynamodb.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ChrisMoyer+%28Chris+Moyer%29) cho một phân tích, ngẫu nhiên là một mẫu cho một triệu recordset, và suy nghĩ về làm thế nào để giải thích cho vấn đề này lần lượt. –
sẽ không batchGetItem làm việc cho bạn?
Thực ra, thực thể có một thuộc tính khóa và một phạm vi. Vì vậy, nó là một IN và giữa điều kiện trên các thuộc tính quan trọng. BTW, làm thế nào để bạn sử dụng batchgetitem với các lớp pojo? –
@ManiDoraisamy đưa ra yêu cầu nâng cao, tôi sẽ đề xuất phát hành truy vấn cho mỗi giá trị khóa băm trong danh sách IN. viết một ứng dụng nhỏ tham gia vào các kết quả truy vấn đó và chạy trong EC2 của amazon và bạn nên làm giảm sự gia tăng độ trễ. cách khác bạn có thể cung cấp cho công việc sau này để EMR của amazon kể từ khi _Amazon DynamoDB cũng tích hợp với Amazon Elastic MapReduce_. – Mikha
@ManiDoraisamy cho câu hỏi thứ hai của bạn câu trả lời là bạn không. 'BatchGetItemRequest' móng tay xuống đến một danh sách lên đến 100' Key 's. 'Khóa' chứa 'AttributeValue' cho cả khóa băm và khóa phạm vi để xác định chính xác bản ghi trong bảng. btw, một bản ghi về cơ bản là một “Bản đồ” và bạn có trách nhiệm chuyển đổi các pojos của bạn trong và ngoài. – Mikha
Kể từ tháng 4 năm 2014, bạn có thể sử dụng IN trong truy vấn https://aws.amazon.com/blogs/aws/improved-queries-and-updates-for-dynamodb/ – emilyk