2016-04-26 18 views
5

Am New to dynamodb Tôi có một bảng trong DynamoDB với hơn 100 nghìn mục trong đó. Ngoài ra, bảng này được làm mới thường xuyên. Trên bảng này, tôi muốn có thể làm một cái gì đó tương tự như thế này trong thế giới cơ sở dữ liệu quan hệ: làm thế nào tôi có thể nhận được giá trị tối đa từ bảng.Cách sử dụng các chức năng tổng hợp trong Amazon Dynamodb

Trả lời

16

DynamoDB là một cơ sở dữ liệu NoSQL và do đó rất hạn chế về cách bạn có thể truy vấn dữ liệu. Không thể thực hiện các kết hợp như giá trị tối đa từ bảng bằng cách gọi trực tiếp API DynamoDB. Bạn sẽ phải xem xét các công cụ và cách tiếp cận khác nhau để giải quyết vấn đề này.

Có một số giải pháp khả thi, bạn có thể xem xét:

Thực hiện một bảng quét

Với hơn 100k các mặt hàng trong bảng này có thể là một ý kiến ​​tồi. Một bảng quét sẽ đọc qua từng mục duy nhất và bạn có thể có logic bên ứng dụng xác định giá trị tối đa. Đây thực sự không phải là giải pháp khả thi.

Materialized Index trong DynamoDB

Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể sử dụng dòng DynamoDB và một hàm Lambda để duy trì một chỉ số trong một bảng DynamoDB riêng biệt. Nếu bảng của bạn chỉ ghi, không có cập nhật và không xóa, bạn có thể lưu trữ tối đa trong một bảng riêng biệt và khi bản ghi mới được chèn vào, bạn có thể so sánh chúng và thực hiện các cập nhật cần thiết.

Cách tiếp cận này hoàn toàn khả thi trong một số trường hợp hạn chế, nhưng không phải là giải pháp tổng quát.

Thực hiện phân tích sử dụng Amazon chuyển đỏ

DynamoDB không có nghĩa là để làm các hoạt động phân tích như tối đa, trong khi chuyển đỏ là rất mạnh mẽ nền tảng dữ liệu lớn có thể thực hiện các loại tính toán một cách dễ dàng. Tương tự như chỉ số DynamoDB, bạn có thể sử dụng các luồng DynamoDB để gửi dữ liệu vào Redshift khi các bản ghi được chèn vào để duy trì bản sao thời gian thực gần của bảng cho mục đích phân tích.

Nếu bạn đang tìm kiếm thêm giải pháp ngoại tuyến hoặc phân tích thì đây là một lựa chọn tốt.

Thực hiện Analytics sử dụng Elasticsearch

Trong khi DynamoDB là một giải pháp NoSQL mạnh mẽ với sự đảm bảo vững chắc về độ bền dữ liệu, Elasticsearch cung cấp một phương pháp truy vấn rất linh hoạt cho phép cho các truy vấn như tối đa và các quy tụ có thể được chia nhỏ ra và trên bất kỳ giá trị thuộc tính nào trong thời gian thực. Tương tự như các giải pháp trên, bạn có thể sử dụng các luồng DynamoDB để gửi bản ghi chèn các bản cập nhật và xóa vào chỉ mục Elasticsearch trong thời gian thực.

Nếu bạn muốn gắn bó với DynamoDB nhưng cần thêm khả năng truy vấn, đây thực sự là một lựa chọn tốt, đặc biệt khi sử dụng dịch vụ AWS ES sẽ quản lý toàn bộ cụm Elasticsearch cho bạn. Điều quan trọng cần nhớ là Elasticsearch không thay thế bảng DynamoDB của bạn, nó chỉ là một chỉ mục có thể tìm kiếm dễ dàng của cùng một dữ liệu.

Chỉ cần sử dụng một cơ sở dữ liệu SQL

Các giải pháp hiển nhiên là nếu bạn có yêu cầu SQL sau đó di chuyển từ một hệ thống NoSQL dựa vào một hệ thống dựa trên SQL.Cung cấp RDS của AWS cung cấp giải pháp được quản lý. Trong khi DynamoDB cung cấp rất nhiều lợi ích, nếu trường hợp sử dụng của bạn kéo bạn tới một giải pháp SQL, điều dễ nhất có thể là không chống lại nó và chỉ thay đổi các giải pháp. Điều này không có nghĩa là giải pháp dựa trên SQL hoặc giải pháp dựa trên NoSQL là tốt hơn, có những ưu và khuyết điểm đối với mỗi và những thay đổi dựa trên trường hợp sử dụng cụ thể, nhưng nó chắc chắn là một tùy chọn để xem xét.

0
+1

Điều này có sẵn thông qua cụm Amazon EMR kết nối với DynamoDB; nó không phải là một tính năng có sẵn trong chính DynamoDB. Có [hướng dẫn thiết lập] [http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Tutorial.html) nếu bạn không phản đối việc sử dụng dịch vụ phụ được kết nối với luồng DynamoDB của bạn cho các truy vấn tổng hợp. – Hal

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