Giả sử dữ liệu của bạn là không thay đổi và có kích thước, bạn có thể muốn xem xét Amazon Redshift; nó được viết cho các giải pháp báo cáo có kích thước petabyte.
Trong Dynamo, tôi có thể nghĩ ra một vài thiết kế khả thi. Trong lần đầu tiên, bạn có thể sử dụng một bảng, với một khóa băm/dãy phức hợp (cả hai chuỗi). Khóa băm sẽ là tên chuỗi thời gian, phím phạm vi sẽ là dấu thời gian là chuỗi ISO8601 (có thuộc tính dễ chịu khi sắp xếp theo thứ tự bảng chữ cái cũng là thứ tự thời gian) và sẽ có thuộc tính phụ trên mỗi mục; một giá trị'. Điều này cho bạn khả năng chọn tất cả mọi thứ từ một chuỗi thời gian (Truy vấn trên bình đẳng hashKey) và một tập hợp con của một chuỗi thời gian (Truy vấn trên bình đẳng hashKey và mệnh đề rangeKey BETWEEN). Tuy nhiên, vấn đề chính của bạn là vấn đề "hotspot": bên trong, Dynamo sẽ phân vùng dữ liệu của bạn bằng hashKey, và sẽ phân tán ProvisionedReadCapacity của bạn trên tất cả các phân vùng của bạn. Vì vậy, bạn có thể có 1000 KB đọc một giây, nhưng nếu bạn có 100 phân vùng, thì bạn chỉ có 10 KB mỗi giây cho mỗi phân vùng và đọc tất cả dữ liệu từ một chuỗi thời gian đơn (hashKey đơn) sẽ chỉ nhấn một phân vùng. Vì vậy, bạn có thể nghĩ rằng 1000 KB lần đọc của bạn cung cấp cho bạn 1 MB một giây, nhưng nếu bạn có 10 MB lưu trữ nó có thể đưa bạn lâu hơn để đọc nó, như phân vùng duy nhất của bạn sẽ throttle bạn nhiều hơn nữa.
Ở phía trên, DynamoDB có mức ràng buộc cực kỳ cao nhưng chi phí cao trên quy mô lớn; nếu bạn muốn, bạn có thể trả 100.000 đơn vị dung lượng đọc và có thời gian phản hồi phụ trên tất cả dữ liệu đó.
Một thiết kế lý thuyết khác là lưu trữ mọi chuỗi thời gian trong một bảng riêng biệt, nhưng tôi không nghĩ DynamoDB có nghĩa là chia tỷ lệ cho hàng triệu bảng, vì vậy đây có thể là không có.
Bạn có thể thử và trải rộng chuỗi thời gian của mình trên 10 bảng trong đó dữ liệu "có độ đọc cao" nằm trong bảng 1, "hầu như không bao giờ đọc dữ liệu" trong bảng 10 và tất cả dữ liệu khác ở giữa. Điều này sẽ cho phép bạn "chơi" các quy tắc điều tiết phân vùng/phân vùng được cung cấp, nhưng ở mức độ phức tạp cao trong thiết kế của bạn. Nhìn chung, nó có lẽ không đáng giá; nơi nào bạn loạt thời gian mới? Làm thế nào để bạn nhớ tất cả chúng ở đâu? Làm thế nào để bạn di chuyển một chuỗi thời gian?
Tôi nghĩ DynamoDB hỗ trợ một số nội bộ "bùng nổ" trên các loại đọc từ kinh nghiệm của riêng tôi, và nó có thể số của tôi là tắt, và bạn sẽ nhận được hiệu suất đầy đủ. Tuy nhiên bản án của tôi là xem xét Redshift.
Nguồn
2013-08-13 18:42:13
Bạn đã sử dụng kết thúc bằng cách nào? – Hugo
bạn đã sử dụng thiết kế nào? – Narayan