2013-04-09 29 views
8

Cách hiệu quả nhất để truy vấn đối tượng dynamodb của tôi là gì?Làm thế nào để có được số lượng distict trên dynamodb trên tỷ đối tượng?

Chẳng hạn như đối tượng của tôi có mười thuộc tính và tôi muốn có số lượng riêng biệt dựa trên 3 thuộc tính.

+0

Các thuộc tính này có thay đổi không? Làm thế nào thường xuyên và nhanh chóng nào bạn cần để có được tính? –

+0

chúng thay đổi ... chúng không phải là dữ liệu nhật ký tĩnh –

+0

Điều gì về tần suất và thời gian chờ yêu cầu đếm? Đây có phải là loại tập hợp này, một hoạt động phổ biến, cần phải nhanh chóng không? Bạn có cần điều này trên dữ liệu thời gian thực hay bạn có thể thực hiện nó trên một kho lưu trữ/bản sao của dữ liệu không? –

Trả lời

4

Trong trường hợp bạn cần quầy tốt hơn là sử dụng AtomicCounters (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithDDItems.html). Trong trường hợp của bạn, DynamoDB không hỗ trợ ra khỏi các khóa hộp được tạo thành từ 3 thuộc tính, trừ khi bạn nối chúng, vì vậy tùy chọn sẽ tạo một bảng dư thừa trong đó khóa là nối của 3 thuộc tính đó và mỗi thuộc tính bạn quản lý các đối tượng, cũng cập nhật AtomicCounter (thêm, xóa, cập nhật - không cần thiết thực sự).

Sau đó, bạn chỉ cần truy vấn bộ đếm, tránh quét. Vì vậy, nó là không gian phức tạp để đạt được tốc độ lấy dữ liệu.

+0

cảm ơn bạn đời. Bao giờ nghĩ rằng làm việc ở uk. Ping xin vui lòng linkedin.com/in/rifaterdemsahin/ –

1

Thực hiện quét bằng trình quét phù hợp (trong trường hợp này, ba thuộc tính không phải là số không) và sử dụng withCount (true) để chỉ trả về số bản ghi trùng khớp thay vì bản ghi.

See the documentation đối với một số mã ví dụ.

+0

Lưu ý rằng Quét có lẽ là một cách không hiệu quả để xử lý việc này, vì nó hoạt động khá chậm so với các hoạt động DynamoDB khác. Tuy nhiên, với những gì bạn đã mô tả, tôi không có câu trả lời tốt hơn. –

+3

tôi đoán tỷ lệ tìm kiếm này hoạt động là một công việc cho sql không cho hệ thống nosql. –

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