2012-12-20 70 views
55

Tôi đã sử dụng MySQL cho một hội chợ thời bây giờ và tôi cảm thấy thoải mái với cấu trúc của nó & SQL Queries, vvAWS MySQL RDS vs AWS DynamoDB

Hiện nay việc xây dựng một hệ thống mới trong AWS và tôi đã được tìm kiếm tại DynamoDB. Hiện tại tôi chỉ biết một chút về nó.

Có tốt hơn không?

Ưu điểm của DynamoDB là gì?

chuyển đổi như thế nào từ truy vấn MySQL v.v. sang DB kiểu phẳng này?

Trả lời

32

Bạn có thể đọc giải thích AWS về nó here.

Tóm lại, nếu bạn chủ yếu là Tra cứu truy vấn (và không tham gia Truy vấn), DynamoDB (và các NoSQL DB) khác tốt hơn. Nếu bạn cần xử lý nhiều dữ liệu, bạn sẽ bị giới hạn khi sử dụng MySQL (và các RDBMS khác).

Bạn không thể tái sử dụng truy vấn MySQL cũng như lược đồ dữ liệu, nhưng nếu bạn dành nỗ lực để tìm hiểu NoSQL, bạn sẽ thêm một công cụ quan trọng vào hộp công cụ của mình. Có rất nhiều trường hợp mà DynamoDB đưa ra giải pháp đơn giản nhất.

138

Thực sự DynamoDB và MySQL là táo và cam. DynamoDB là một lớp lưu trữ NoSQL trong khi MySQL được sử dụng để lưu trữ quan hệ. Bạn nên chọn những gì để sử dụng dựa trên nhu cầu thực tế của ứng dụng của bạn. Trong thực tế, một số ứng dụng có thể được phục vụ tốt bằng cách sử dụng cả hai.

Nếu, ví dụ, bạn đang lưu trữ dữ liệu không cho vay tốt với giản đồ quan hệ (cấu trúc cây, biểu diễn JSON giản đồ, vv) có thể được tra cứu trên một khóa hoặc một khóa/phạm vi kết hợp sau đó DynamoDB (hoặc một số cửa hàng NoSQL khác) có thể sẽ là đặt cược tốt nhất của bạn.

Nếu bạn có lược đồ được xác định rõ ràng cho dữ liệu có thể phù hợp trong cấu trúc quan hệ và bạn cần linh hoạt truy vấn dữ liệu theo nhiều cách khác nhau (thêm chỉ mục nếu cần), thì RDS có thể là một giải pháp tốt hơn.

Lợi ích chính khi sử dụng DynamoDB như một kho lưu trữ NoSQL là bạn nhận được thông tin đọc/ghi được đảm bảo ở bất kỳ cấp độ nào bạn yêu cầu mà không phải lo lắng về việc quản lý kho lưu trữ cụm. Vì vậy, nếu ứng dụng của bạn yêu cầu 1000 lần đọc/ghi mỗi giây, bạn chỉ có thể cung cấp bảng DynamoDB cho mức thông lượng đó và không thực sự phải lo lắng về cơ sở hạ tầng cơ bản.

RDS có nhiều lợi ích tương tự khi không phải lo lắng về cơ sở hạ tầng, tuy nhiên nếu bạn cần phải ghi một số lượng đáng kể vào thời điểm kích thước bản sao lớn nhất sẽ không còn nữa, bạn loại trái mà không có tùy chọn (bạn có thể mở rộng theo chiều ngang cho lần đọc bằng cách sử dụng bản sao đã đọc).

Lưu ý cập nhật: DynamoDb hiện hỗ trợ lập chỉ mục phụ toàn cầu, vì vậy bây giờ bạn có khả năng thực hiện tra cứu được tối ưu hóa trên các trường dữ liệu khác với băm hoặc tổ hợp phím băm và phạm vi.

+6

Nếu tôi có thể upvote câu trả lời của bạn bằng 100, tôi sẽ. – Salil

+0

Bạn gần như có ước muốn của bạn là 100 upvotes :) – Luke

+0

Bạn đã hiểu! 100. –

6

Khi sử dụng DynamoDB, bạn cũng nên biết rằng các mục/bản ghi trong DynamoDB được giới hạn ở 400KB (Xem DynamoDB Limits). Đối với nhiều trường hợp sử dụng, điều này sẽ không hoạt động. Vì vậy, DynamoDB sẽ tốt cho vài điều nhưng không phải tất cả. Cũng vậy với nhiều cơ sở dữ liệu NoSQL khác.

89

Chúng tôi vừa di chuyển tất cả các bảng DynamoDB của mình sang RDS MySQL.

Trong khi sử dụng DynamoDB cho các tác vụ cụ thể có thể có ý nghĩa, việc xây dựng một hệ thống mới trên đầu trang của DynamoDB thực sự là một ý tưởng tồi. Tốt nhất đặt kế hoạch vv, bạn luôn cần sự linh hoạt thêm từ DB của bạn.

Dưới đây là lý do chúng tôi chuyển từ DynamoDB:

  1. Indexing - Thay đổi hoặc bổ sung phím on-the-fly là không thể mà không cần tạo một bảng mới.
  2. Truy vấn - Truy vấn dữ liệu rất hạn chế. Đặc biệt nếu bạn muốn truy vấn dữ liệu không được lập chỉ mục. Tham gia là tất nhiên không thể, do đó bạn phải quản lý quan hệ dữ liệu phức tạp trên lớp mã/bộ nhớ cache của bạn.
  3. Sao lưu - Quy trình sao lưu tẻ nhạt như vậy là một sự ngạc nhiên đáng thất vọng so với bản sao lưu mượt mà của RDS
  4. GUI - UX xấu, tìm kiếm giới hạn, không vui.
  5. Tốc độ - Thời gian phản hồi có vấn đề so với RDS. Bạn thấy mình xây dựng cơ chế bộ nhớ đệm phức tạp để bù đắp cho nó ở những nơi bạn đã giải quyết cho bộ nhớ đệm nội bộ của RDS.
  6. Tính toàn vẹn của dữ liệu - Mặc dù khái niệm cấu trúc dữ liệu chất lỏng có vẻ tốt đẹp để bắt đầu, một số dữ liệu của bạn tốt hơn là "đặt trong đá". Mạnh mẽ đánh máy là một phước lành khi một lỗi nhỏ cố gắng để tiêu diệt cơ sở dữ liệu của bạn. Với DynamoDB bất cứ điều gì là có thể và thực sự bất cứ điều gì có thể đi sai.

Hiện tại, chúng tôi sử dụng DynamoDB làm dự phòng cho một số hệ thống và tôi chắc chắn sẽ sử dụng nó trong tương lai cho các tác vụ cụ thể, được xác định rõ. Nó không phải là một DB xấu, nó chỉ không phải là DB để phục vụ 100% của hệ thống cốt lõi của bạn.

Theo như lợi thế, tôi muốn nói Khả năng mở rộng và Độ bền. Nó quy mô vô cùng và minh bạch và nó (loại) luôn luôn lên. Đây là những tính năng thực sự tuyệt vời, nhưng chúng không bù đắp theo bất kỳ cách nào cho các khía cạnh nhược điểm.

+0

Nó cũng là một mô hình rất khác, vì vậy bạn thực sự cần phải hiểu làm thế nào để sử dụng nó, mà tôi không nghĩ rằng họ tài liệu rất tốt. –

+4

Ưu/khuyết điểm rất cụ thể. Câu trả lời hay nhất – stevendesu

+5

Một số điều này đã lỗi thời. Ví dụ: 1 không còn đúng nữa. – mbroshi

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