Mô hình dữ liệu của Amazon DynamoDB

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 44)

Mô hình dữ liệu của Amazon DynamoDB bao gồm bảng, items (mục) và attributes (thuộc tính). Được phân chia như sau: Cơ sở dữ liệu lớn nhất là tập hợp các bảng, bảng là tập hợp các Items và mỗi Items là tập hợp các thuộc tính. Mỗi một thuộc tính được giới hạn 64 KB. Cỡ của một Items là tổng chiều dài tên, giá trị của thuộc tính.

Mỗi thuộc tính trong một Item là một cặp tên – giá trị. Một thuộc tính có thể có một hoặc nhiều giá trị. Ví dụ mục sách có thể có các thuộc tính tiêu đề - tác giả; mỗi cuốn sách có thể có một tiêu đề, nhưng nhiều tác giả.

{

Id = 202

ProductName = "21-Bicycle 202" Description = "202 description" BicycleType = "Road"

Brand = "Brand-Company A" Price = 200

Gender = "M"

Color = [ "Green", "Black" ] ProductCategory = "Bike" } { Id = 201 ProductName = "18-Bicycle 201" Description = "201 description" BicycleType = "Road"

Brand = "Brand-Company A" Price = 100

Gender = "M"

Color = [ "Red", "Black" ] ProductCategory = "Bike" }

Hệ cơ sở dữ liệu này không cho phép thuộc tính có giá trị Null hoặc là rỗng.

Items

Là tập hợp các thuộc tính. Ví dụ:

Table (bảng)

Bảng chứa các Item và tổ chức thông tin trong

các khu vực riêng biệt. Tất cả các Item trong bảng đều có khóa chính. Khi tạo bảng ta chỉ định một tên thuộc tính để làm khóa chính và bảng đòi hỏi mỗi một Item chỉ có một khóa chính duy nhất. Bước đầu tiên để ghi dữ liệu trong Amazon Dynamo DB là tạo bảng và chỉ định tên bảng với một khóa chính. Sau đây là một bảng dữ liệu lớn sử dụng ImageID là khóa chính.

Table: My Images Primary

Key Other Attributes

ImageID = 1 ImageLocation = https://s3.amazonaws.com/bucket/img_1.jpg Date = 1260653179 Title = flower Tags = Flower, Jasmine Width = 1024 Depth = 768

ImageID ImageLocation = Date = Rated = Tags = Width = Depth =

Example items

{

Id = 101

ProductName = "Book 101 Title" ISBN = "111-1111111111"

Authors = [ "Author 1", "Author 2" ] Price = -2

Dimensions = "8.5 x 11.0 x 0.5" PageCount = 500

InPublication = 1

= 2 https://s3.amazonaws.com/bucket/img_2.jpg 1252617979 3, 4, 2 Work, Seattle, Office 1024 768 ImageID = 3 ImageLocation = https://s3.amazonaws.com/bucket/img_3.jpg Date = 1285277179 Price = 10.25 Tags = Seattle, Grocery, Store Author = you Camera = phone ImageID = 4 ImageLocation = https://s3.amazonaws.com/bucket/img_4.jpg Date = 1282598779 Title = Hawaii Author = Joe Colors = orange, blue, yellow Tags = beach, blanket, ball • Khóa chính

Khi tiến hành tạo một bảng dữ liệu trong Amazon Dynamo, đi kèm với việc đặt tên bảng, phải xác định khóa chính của bảng. Hệ CSDL này hỗ trợ 2 loại khóa chính:

Hash Type: Khóa chính được tạo từ một thuộc tính, đã được sử dụng thuật toán băm. Amazon Dynamo xây dựng các chỉ số băm và xếp chúng một cách ngẫu nhiên. Sau đó tự động chọn một chỉ số băm cho thuộc tính lấy làm khóa chính. Thuộc tính sau khi áp dụng quy tắc băm này được gọi là thuộc tính băm.

Hash and Range type: Khóa này được tạo ra từ hai thuộc tính. Thuộc tính đầu tiên là thuộc tính băm và thứ hai là thuộc tính phạm vi. Thuộc tính băm được xây dựng trên danh mục chỉ số băm không theo thứ tự. Thuộc tính phạm vi được xây dựng từ kho chỉ số phạm vi đã được sắp xếp.

Ví dụ: Một diễn đàn sử dụng Amazon Web Services. Diễn đàn có nhiều chủ đề thảo luận mỗi một thread có nhiều trả lời. Ta có thể xây dựng 3 bảng như sau:

Table Name Primary Key Type Hash Attribute Name Range Attribute Name

Forum ( Name, ... ) Hash Attribute Name: Name -

Thread (ForumName, Subject, ... ) Hash and Range Attribute Name: ForumName Attribute Name: Subject Reply ( Id, ReplyDateTime, ... ) Hash and Range Attribute Name: Id Attribute Name: ReplyDateTime

Kiểu dữ liệu của Amazon Dynamo:

Amazon Dynamo hỗ trợ các kiểu dữ liệu sau: - Dữ liệu vô hướng loại: Number và String.

- Dữ liệu Multi-valued (đa giá trị): String set và number set

Ví dụ: Trong bảng dữ liệu tác giả, có trường Id và trường tên các tác giả; trường Id là kiểu dữ liệu number; trường tên các tác giả là Set String.

Ví dụ Item A là tập hợp các thuộc tính được xác định bởi khóa chính. Các thuộc tính của Item là tập hợp các cặp tên – giá trị, trong một thứ tự bất kỳ. Các thuộc tính có thể không liên quan đến các thuộc tính của các Item khác trong cùng một bảng và được tùy chọn (trừ trường hợp thuộc tính là khóa chính). Không giống như cơ sở dữ liệu truyền thống, Amazon Dynamo không có lược đồ quan hệ. Các Item được lưu trữ bởi một bảng. Để thêm các Item vào một bảng, ta phải xác định một thuộc tính của Item như là khóa chính. Các khóa chính xác định một Item duy nhất trong bảng dữ liệu (DynamoDB Table). Trong sơ đồ sau ImegeID là thuộc tính chỉ định khóa chính:

Ở bảng trên tên bảng là “My table”, nhưng Item không có tên; mà lấy khóa chính để xác định. Khóa chính là “ImageID”=1.

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 44)