Cách đặt khóa phân vùng DynamoDB

Cach Dat Khoa Phan Vung Dynamodb



Năng suất của bất kỳ cơ sở dữ liệu nào đều phụ thuộc vào khả năng truy cập dữ liệu vì việc tìm kiếm một mục từ một số đối tượng có thể rất bận rộn. Thông thường, cách bạn truy vấn cơ sở dữ liệu luôn được xem xét nghiêm túc. Các khóa phân vùng là điểm nhập chính của bạn trong DynamoDB bất cứ khi nào bạn muốn thực hiện các truy vấn hiệu quả cao.

Thông thường, các khóa phân vùng trên các bảng là duy nhất. Do đó, không thể có hai hoặc nhiều mục có cùng khóa phân vùng trong một bảng, nhưng điều ngược lại có thể xảy ra khi được sử dụng trong các chỉ mục. Ngoài ra, các khóa phân vùng không thể thay đổi khi bạn tạo bảng vì chúng không thay đổi.







Bài viết này thảo luận về các phím phân vùng. Chúng tôi sẽ tập trung vào lý do tại sao bạn cần các khóa phân vùng và các phương pháp hay nhất để tuân theo khi thiết lập chúng. Cuối cùng, chúng ta sẽ xem xét tầm quan trọng của các khóa phân vùng DynamoDB.



Khóa phân vùng DynamoDB là gì và tại sao nó lại quan trọng?

Khóa phân vùng là một khóa chính đơn giản trong DynamoDB, thường bao gồm một thuộc tính duy nhất. Mỗi mục trong bảng DynamoDB có một khóa phân vùng duy nhất để kích hoạt các quy trình truy vấn nhanh chóng và hiệu quả.



Bạn có thể ghép khóa chính với khóa sắp xếp để tạo khóa chính tổng hợp chứa hai thuộc tính. Khi được sử dụng cùng nhau, bạn có thể sắp xếp tất cả dữ liệu theo khóa phân vùng bằng cách sử dụng giá trị khóa sắp xếp.





Do DynamoDB lưu trữ dữ liệu dưới dạng tập hợp các thuộc tính được gọi là các mục nên các thuộc tính này có các khóa giá trị chính duy nhất để dễ dàng truy cập. Đáng chú ý là các mục trong DynamoDB tương tự như bản ghi, trường, cột hoặc hàng trong hầu hết các hệ thống cơ sở dữ liệu.

Hơn nữa, DynamoDB cho phép bạn phân phối dữ liệu vào các phân vùng có dung lượng lên tới 10 GB. Do đó, mỗi bảng có thể có một hoặc nhiều phân vùng. Bạn có thể sử dụng giá trị của khóa phân vùng làm đầu vào cho hàm băm bên trong của cơ sở dữ liệu, với đầu ra từ hàm băm xác định phân vùng trong đó mục được lưu trữ. Bên cạnh đó, vị trí của một mục xác định phân vùng mà nó được lưu trữ.



Cách đặt khóa phân vùng DynamoDB

Đặt các khóa phân vùng có thể là một nhiệm vụ khó khăn nếu bạn chưa hiểu khái niệm này. Tuy nhiên, quá trình này có thể dễ dàng và hiệu quả khi bạn tập hợp các mẹo và thủ thuật cần thiết. Sau đây là một số thực tiễn tốt nhất để làm theo khi thiết lập các khóa phân vùng:

1. Chọn đúng khóa phân vùng

Loại khóa phân vùng xác định sự thuận tiện và hiệu quả của việc truy vấn dữ liệu của bạn. Chúng là các điểm nhập chính để truy vấn dữ liệu của bạn và việc xác định các mẫu truy cập của từng ứng dụng là rất quan trọng.

Bạn nên sử dụng thuộc tính high-cardinality khi thiết lập khóa phân vùng DynamoDB của mình. Các thuộc tính cardinality cao có các giá trị riêng biệt cho từng mục và có thể bao gồm employee_id, employee_no, order_id, emailid, customerid hoặc orderid.

2. Sử dụng Quy ước đặt tên PK

Khóa phân vùng thường sử dụng quy ước đặt tên pk. Phương pháp đặt tên này đảm bảo một cơ chế đặt tên chính xác mà không phân biệt đối xử dựa trên kiểu hoặc loại mặt hàng được đại diện.

Chẳng hạn, mặc dù bạn có thể muốn sử dụng postID và userID làm khóa phân vùng cho các mô hình Bài đăng và Người dùng trong một bảng, nhưng DynamoDB chỉ cho phép một khóa phân vùng cho mỗi bảng. Vì vậy, bạn không thể sử dụng hai trong một bảng. Lưu ý rằng các bảng không có khóa sắp xếp có thể có khóa phân vùng ID.

3. Sử dụng các thuộc tính tổng hợp

Một số bảng được hưởng lợi nhiều hơn từ các phím tổng hợp. Điều đó có nghĩa là bạn cần nhiều hơn một thuộc tính để tạo thành các khóa duy nhất. Chẳng hạn, bạn có thể thuận tiện sử dụng customer_ID, country_code và product_ID để tạo khóa phân vùng (customerid#countrycode#productid). Đồng thời, bạn có thể sử dụng order_id làm khóa sắp xếp của mình.

4. Thêm số ngẫu nhiên một cách hợp lý

Nếu bạn mong đợi một khối lượng ghi khổng lồ cho mỗi khóa, thì việc sử dụng tiền tố hoặc hậu tố bổ sung sẽ giúp các trường hợp sử dụng nhiều hiệu quả hơn. Ví dụ: bạn có thể sử dụng số hóa đơn cùng với một tập hợp các số ngẫu nhiên làm khóa phân vùng của mình. Hãy nhớ tách các phần khác nhau của khóa phân vùng của bạn. Chẳng hạn, InvoiceNumber#125656#0 làm khóa phân vùng lý tưởng cho việc sử dụng nhiều với hàng nghìn lần ghi mỗi giây.

Tạo khóa phân vùng DynamoDB

Giống như các khóa sắp xếp, việc tạo khóa phân vùng trong DynamoDB liên quan đến việc tạo một lược đồ khóa cho bảng của bạn. Tất nhiên, điều này xảy ra khi bạn tạo một bảng. Điều này thường liên quan đến việc mô tả thuộc tính của bạn bằng cách sử dụng tên thuộc tính cùng với loại thuộc tính. Cú pháp sau đây sẽ giúp:

AttributeName=chuỗi,KeyType=chuỗi ...

Trong cú pháp đã cho, tên thuộc tính là tên thực của thuộc tính trong khi loại thuộc tính có thể là Chuỗi (S), Số (N) hoặc Nhị phân (B).

Bạn cũng có thể chọn sử dụng cú pháp JSON như sau:

[

{

'Tên Thuộc Tính': 'chuỗi',

'Kiểu khóa': 'HASH'

}

...

]

Cho dù bạn chọn cú pháp nào, vai trò của thuộc tính đảm nhận chức năng HASH vì chúng tôi đang tạo khóa phân vùng. Ngược lại, loại khóa đảm nhận chức năng RANGE khi tạo các khóa sắp xếp.

Cuối cùng, cũng có thể thay đổi khóa phân vùng bằng tiện ích sau:

DynamoDBClient.updateItem({
'TableName': 'myTable_Name',
'Chìa khóa': {
'pk': {
'S': 'my_PartitionKey'
}
},
'UpdateExpression': 'SET #emailaddress = :emailaddress',
'ExpressionAttributeNames': {
'#email': 'địa chỉ email'
},
'ExpressionAttributeValues': {
':địa chỉ email': {
'S': ' [email được bảo vệ] '
}
}
})

Tiện ích đã cho cập nhật thuộc tính email của bạn để trông giống như những gì bạn có trong [email được bảo vệ] đối với mục có khóa phân vùng (pk) bằng với my_PartitionKey.

Phần kết luận

Khi thiết lập các khóa phân vùng DynamoDB, không có một phương thức chung nào. Việc tạo và sử dụng các khóa phân vùng tùy thuộc vào trường hợp sử dụng. Bên cạnh đó, bạn có thể xem xét các phương pháp khác nhau có sẵn và tìm ra phương pháp phù hợp nhất cho ứng dụng của mình. Hãy chắc chắn rằng bạn tuân thủ các nguyên tắc nhất định.