Giới thiệu về DynamoDB (Phần 1)

Giới thiệu

  • DynamoDB là môt dịch vụ quản lý NoSQL có khả năng đáp ứng hiệu suất cao và nhanh kèm theo khả năng mở rộng. Giả dụ bạn là 1 nhà phát triển thành, bạn có thể dùng DynamoDB để tạo ra 1 bảng có khả năng lưu trữ và truy xuất bất kỳ số lượng dữ liệu, mà vẫn có thể chuyên dụng cho cho bất kỳ mức độ request visitors.

  • DynamoDB tự động động phân tán dữ liệu và visitors của 1 bảng ra 1 số lượng server vừa đủ để có thể xử lý request capability đặt ra bơi khách hàng và lượng dữ liệu lưu trữ, và đồng thời đảm bảo hiệu suất nhanh và đồng nhất. Mọi dự liệu được lưu trữ trên SSD và tự động động được sao chép ra những vùng sẵn sằng (Availability Zones) trong 1 khu vực (Area) để phân phối độ sẵn sàng cao và độ bền của dữ liệu (excessive availablity and knowledge sturdiness)

  • Giả dụ bạn là 1 nhà quản lý dữ liệu, bạn có thể tạo 1 bảng dữ liệu new, mở rộng hay thu hẹp request capability mà ko bị giảm hiệu suất, và có thể thây được những thông số qua AWS Administration Console. Sở hữu DynamoDB, bạn có thể phó thác gánh nặng quản lý và mở rộng dữ liệu cho AWS và ko nên lo lắng về việc phân phối {hardware}, thiết lập và cài đặt, sao chép dữ liệu.

Làm cho việc sở hữu DynamoDB

1. Bảng trong DynamoDB

  • Lúc bạn tạo 1 bảng trong Amazon DynamoBD, bạn cần phân phối tên bảng (dĩ nhiên rồi) (haha), major key và giá trị learn write throughput. Từng merchandise trong bảng có thể có bao nhiêu attributes tùy thuộc} ý, tuy nhiên có giới hạn 400KB cho dung lượng 1 merchandise.
  • Chỉ định Major Key: Lúc tạo 1 bảng, thì bên cạnh việc khai báo tên bảng bạn cần chỉ rõ major key . Major key để đảm bảo rằng ko có 2 gadgets nào trong bảng có cùng major key. DynamoDB tương trợ 2 loại major key sau:
    • Hash Major Key: Chỉ cần 1 attribute để tạo ra major key. DynamoDB xây dựng hash index ko được sắp xếp cho major key attribute.
    • Hash và Vary Major Key: Cần 2 attributes để tạo ra major key. Attribute đầu tiền là hash attribute và attribute còn lại là vary attribute. DynamoDB xây dựng hash index ko được sắp xếp cho hash attribute và vary index được sắp xếp cho vary attribute. Từng merchandise được định danh bởi cặp major key này. Điều này cho phép 2 gadgets có cùng hash attribute nhưng khác vary attribute cùng tồn tại trong 1 bảng.
  • Trong quy trình tạo bảng, bạn chỉ rõ mức têu thụ (throughput) bắc buộc theo đơn vị là capability unit. Bạn có thể thay đổi đổi (nâng cao hoặc giảm) chỉ số này qua UpdateTable request
    • Strongly constant: đảm bảo dữ liệu lấy ra là dữ liệu new nhất
    • Ultimately constant: đảm bảo rằng sau này dữ liệu sẽ đồng bộ hết trên phân vùng nhưng ko đảm bảo dự liệu trả về vào 1 thời điểm nhất định là new nhất
    • Learn capability unit – Con số phản ánh số lượng đọc strongly consitent của những merchandise ko quá 4KB
    • Write capability unit – Số lượng những lần ghi có dung lượng 1KB từng giây. Có nghĩa rằng trường hợp bạn bắc buộc 10 write capability items là bạn đang bắc buộc mức tiêu thụ 10 writes sở hữu dung lượng 1 KB từng giây của bảng đấy
Xem Thêm  Ngọc bích Nephrite: tìm hiểu thuộc tính, giá trị và lịch sử

DynamoDB dùng những capability unit này để phân phối tài nguyên toàn bộ cho lượng tiêu thụ bắc buộc.

1 strongly constant learn tương đương 2 evenly consitent learn. Xem bảng sau để hiểu hơn

2. Learn/Write capability

  • Giả dụ bạn ko dùng #batch_get_item thì ko thể nhóm những merchandise cho 1 lần đọc dữ liệu. Dí dụ:

    Bạn sẽ nên mất 10 lần đọc cho 10 merchandise có dung lượng 3KB (tự động động khiến tròn tới 4KB) trường hợp dùng #get_item nhưng trường hợp dùng #batch_get_item thì sẽ lấy tổng số dung lượng của 10 merchandise và chia cho 4KB, trên đây sẽ là 3KB x 10 / 4KB khiến tròn là 8 reads

  • Tương tự động sở hữu write thì cũng có 2 hàm để ghi là #put_item và #batch_write_item nhưng 1 write chỉ nhận 1KB dữ liệu.

3. Secondary index

Để giúp cho việc truy cập dữ liệu, Amazon DynamoDB tạo và quản lý index cho major key. Việc này giúp cho hệ thống truy cập dữ liệu khá nhanh lúc chỉ định major key. Tuy nhiên, nhiều hệ thống có lẽ sẽ hưởng lợi từ việc có 1 hoặc 2 key thay đổi thế (alternate). Để tăng cường độ truy cập bạn có thể tạo ra secondary index.

1 secondary index là 1 cấu trúc dữ liệu chứa tập con của những attributes trong 1 bảng, cùng sở hữu 1 key thay đổi thế để tương trợ cho Question operation. Sở hữu 1 secondary index, những question sẽ ko bị giới hạn lúc chỉ dùng được major key; bạn có thể truy vấn dữ liệu bằng việc dùng key thay đổi thế từ secondary index. 1 bảng có thể có nhiều secondary index để tương trợ cho nhiều question sample.

Xem Thêm  CPU-Z

DynamoDB tương trợ 2 loại index:

  • International secondary index: 1 loại index có hash và vary key khác sở hữu hash và vary key từ bảng gốc.
  • Native secondary index: 1 loại index mà có hash key trùng sở hữu hash key từ bảng gốc và vary key là 1 attribute khác.

4. Question/Scan

  • Question:
    • Để thực hành 1 question operation bạn cần có major key và ko yêu cầu} kèm theo điều kiện cho vary key. Question có thể thực hành trên 1 bảng hoặc secondary index.

      Lưu ý rằng: điều kiện so sánh ko thực hành trên hash key được.

    • Vary key nên được thực hành so sánh như sau:

a = b — true if the attribute a is equal lớn the worth b a < b — true if a is lower than b a <= b — true if a is lower than or equal lớn b a > b — true if a is larger than b a >= b — true if a is larger than or equal lớn b a BETWEEN b AND c — true if a is larger than or equal lớn b, and fewer than or equal lớn c.

  • Mọi merchandise được trả về sẽ được tính chung là 1 question operation, có nghĩa là sở hữu 100 1KB merchandise thì bạn chỉ cần 100 x 1KB / 4KB = 25 reads thay đổi vì 100 reads (yeah)
  • Scan:
  • 1 scan operation có thể thực hiển trên cả bảng và secondary index. Giá trị trả về mặc định của 1 scan operation là toàn bộ dữ liệu (sohai). Vì vậy hãy thận trọng lúc dùng scan.

1 số lưu ý về Scan và Question:

  • Cả 2 operation đều có dung lượng trả về cao nhất} là 1MB.
  • Question tương trợ strongly constantfinally constant trong lúc đấy Scan chỉ tương trợ finally constant
  • Hãy giảm thiểu việc Scan 1 bảng hoặc index có dung lượng lớn.
  • Theo thời kì dung lượng nâng cao lên thì Scan operation sẽ càng chậm
Xem Thêm  Raz children là gì, có nên sắm raz children hay ko? | Con Tự động Học

Dynamodb native

Giả dụ mà ko muốn đăng ký dùng DynamoDB bạn có thể dùng dynamodb-local để phát triển thành ứng dụng. Thêm vào Gemfile:

gem “dynamodb-local”

Nên dùng Aws-sdk v2 để phát triển thành (yeah) Tiếp tục mở dynamodb-local bằng terminal

dynamodb-local

Tiếp tới là config để Aws-sdk kết nối tới dynamodb-local

Tạo 1 file config đặt trong initializers

#config/initializers/ sentayho.com.vnte({ access_key_id: x, secret_access_key: y, area: “localhost”, dynamodb: { endpoint: “localhost:8000” } })

Giờ tới việc tạo bảng: Chúng ta sẽ dùng #create_table của Dynamodb consumer trong Aws sdk

#sentayho.com.vn def create_table dynamodb = Aws::DynamoDB::sentayho.com.vn table_name = “customers” sentayho.com.vnte_table( table_name: table_name, attribute_definitions: [ { attribute_name: :user_id, attribute_type: :S, }, { attribute_name: :city, attribute_type: :S } ], key_schema: [ { attribute_name: :user_id, key_type: :HASH }, { attribute_name: :city, key_type: :RANGE } ], provisioned_throughput: { read_capacity_units: 10, write_capacity_units: 10 } ) finish

Bảng tạo ra có tên là customers cùng sở hữu:

  • hash key là user_id và loại dữ liệu là String
  • vary key là metropolis và loại dữ liệu là String
  • những chỉ số throughput là 10 reads/s và 10 writes/s

Tới đây là kết thúc phần 1. Phần tới mình sẽ chia sẽ những finest practices lúc khiến việc sở hữu dynamodb (yeah)

References

[1] sentayho.com.vn/amazondynamodb/newest/developerguide/sentayho.com.vn [2] sentayho.com.vn/sdkforruby/api/Aws/DynamoDB/Consumer.html