Cấu trúc Amazon dynamo

Một phần của tài liệu BÀI TẬP LỚN MÔN CƠ SỞ DỮ LIỆU NÂNG CAO SO SÁNH CƠ SỞ DỮ LIỆU AMAZON DYNAMO VÀ APACHE CASSANDRA (Trang 42)

Giao tiếp giữa các nút

Amazon DynamoDB sử dụng giao thức Gossip để giao tiếp giữa các nút. Gossip được sử dụng để tìm hiểu về vị trí, trạng thái của các nút liền kề và liên quan. Gossip là một giao thức truyền thống peer-to-peer; trong đó các nút định kỳ trao đổi thông tin trạng thái với nhau và về các nút khác mà chúng biết. Mỗi một Gossip đều có một phiên bản liên quan đến nó, vì vậy quá trình trao đổi, thông tin được ghi đè bằng các trạng thái hiện tại cho mỗi nút cụ thể.

Phân vùng

Phân vùng là việc phân chia dữ liệu trên tất cả các Node. Đây chính là tính mở rộng của cơ sở dữ liệu NoSQL phân tán. Amazon DynamoDB sử dụng một thuật toán băm để

phân vùng. Thuật toán băm này sẽ đảm bảo rằng khi có một nút được thêm vào, mức độ ảnh hưởng là ít nhất. Để phân phối dữ liệu một cách đồng đều qua số lượng các nút, thuật toán băm sẽ tạo ra giá trị băm. Sau đó gán giá trị này cho các nút.

Phân vùng trong Dynamo DB giống như phân vùng của Cassandra, nhưng hạn chế hơn cassandra. Vì Cassandra cho phép người sử dụng chọn được cách phân vùng, còn Dynamo DB cho chế độ tự động không có lựa chọn. Cớ chế phân vùng của Dynamo giống Cassandra khi ta chọn chế độ random trong cassandra. Để tìm hiểu rõ hơn cơ chế này nghiên cứu tại phần cassandra.

Trong DynamoDB, còn sử dụng thêm cơ chế Node ảo, mỗi một nút có thể có nhiều hơn 1 nút ảo. Việc sử dụng nút ảo giúp cho hệ thống có tính chịu lỗi cao, khi một nút gặp vấn đề thì các nút ảo sẽ hỗ trợ để hệ thống vẫn hoạt động bình thường. Số lượng nút ảo của một nút phụ thuộc vào khả năng của nút đó và hạ tầng vật lý cho phép.

Bản sao

Mỗi một Node trong DynamoDB được giao nhiệm vụ phụ trách một số Node trong hệ thống. Khi Node này được ghi/đọc nó sẽ thực hiện việc sao chép dữ liệu cho các nút mà nó phụ trách. (Số Node mà một node phụ trách được ghi trong file preference list).

Xử lý tranh chấp

Amazon DynamoDB xử lý tranh chấp bằng việc sử dụng Vector clock. Vector clock là một dãy cặp (node, counter), mỗi bản sao của đối tượng được liên kết với một Vector clock. Nếu các bộ đếm trên clock đầu tiên nhỏ hơn hoặc bằng giá trị tương ứng của tất cả các node trên clock thứ 2, thì clock đầu tiên là cha của clock thứ 2, do đó nó có thể bị loại bỏ.

Amazon Elastic Map/Reduce

Amazon Dynamo sử dụng Map/reduce (Amazon EMR). Map/reduce giúp những phân tích phức tạp có thể trở nên dễ dàng trên một bộ dữ liệu lớn. Bằng cách sử dụng một pay- as-you-go hadoop trong Amazon web service. Một trong những cách sử dụng EMR là: - Ta có thể phân tích dữ liệu lưu trữ trong DynamoDB để đưa ra kết quả phân tích (S3) dựa trên EMR mà không phải thao tác với dữ liệu gốc.

Ví dụ: Sử dụng Amazon Dynamo lưu các đơn đặt hàng của khách hàng, cơ chế EMR giúp ta truy vấn trên nhiều bảng của cơ sở dữ liệu. Sau khi có kết quả, kết quả được lưu trữ trên S3, trong khi vẫn dữ các thứ tự dữ liệu trong cơ sở dữ liệu gốc.

- Có thể backup dữ liệu từ DynamoDB sử dụng EMR.

Như ví dụ trên, dữ liệu đơn đặt hàng có thể được sao lưu trên S3, khi ta xóa dữ liệu này trong cơ sở dữ liệu của DynamoDB.

- Có thể sử dụng EMR để truy cập dữ liệu trong các dịch vụ của Amazon như Amazon DynamoDB, Amazon RDS và Amazon S3.

Một phần của tài liệu BÀI TẬP LỚN MÔN CƠ SỞ DỮ LIỆU NÂNG CAO SO SÁNH CƠ SỞ DỮ LIỆU AMAZON DYNAMO VÀ APACHE CASSANDRA (Trang 42)