Dynamodb là gì

  -  

Giới thiệu

DynamoDB là môt các dịch vụ thống trị NoSQL có khả năng đáp ứng nhu cầu năng suất cao và nhanh hao cố nhiên tài năng không ngừng mở rộng. Nếu bạn là một trong công ty phát triển, chúng ta có thể áp dụng DynamoDB để tạo ra một bảng có tác dụng lưu trữ với truy hỏi xuất bất kỳ số lượng tài liệu, mà lại vẫn có thể Giao hàng đến ngẫu nhiên cường độ request traffic.

Bạn đang xem: Dynamodb là gì

DynamoDB auto phân tán tài liệu với traffic của một bảng ra một vài lượng server toàn diện nhằm rất có thể xử lý request capathành phố đưa ra bơi lội người sử dụng cùng lượng dữ liệu tàng trữ, với bên cạnh đó bảo vệ năng suất nhanh hao và đồng điệu. Tất cả dự liệu được lưu trữ bên trên SSD và tự động được coppy ra các vùngsẵn sằng (Availability Zones) trong một Quanh Vùng (Region) nhằm cung ứng độ sẵn sàng cao với thời gian chịu đựng của tài liệu (high availablity và data durability)

Nếu các bạn là 1 trong công ty làm chủ dữ liệu, bạn có thể tạo một bảng dữ liệu mới, mở rộng xuất xắc thu khiêm tốn request capathành phố mà lại không xẩy ra giảm hiệu suất, với rất có thể thây được những thông số qua AWS Management Console. Với DynamoDB, bạn cũng có thể phó thác gánh nặng thống trị cùng mở rộng dữ liệu mang đến AWS với không phải băn khoăn lo lắng về việc cung cấp hardware, cấu hình thiết lập và cài đặt, coppy dữ liệu.

Làm bài toán với DynamoDB

1. Bảng vào DynamoDB

khi bạn tạo một bảng trong Amazon DynamoBD, bạn phải cung ứng thương hiệu bảng (tất nhiên rồi) (haha), primary key và quý giá read write throughput. Mỗi tòa tháp trong bảng rất có thể bao gồm từng nào attributes tùy ý, tuy nhiên gồm số lượng giới hạn 400KB mang lại dung tích một thành tích.Chỉ định Primary Key: khi tạo nên một bảng, thì kế bên Việc knhị báo tên bảng bạn phải chứng thực primary key . Primary key để bảo vệ rằng không tồn tại nhì items làm sao trong bảng gồm cùng primary key. DynamoDB cung ứng nhì các loại primary key sau:Hash Primary Key: Chỉ buộc phải một attribute nhằm tạo ra primary key. DynamoDB kiến tạo hash index không được sắp tới xếp mang đến primary key attribute.Hash cùng Range Primary Key: Cần 2 attributes nhằm tạo ra primary key. Attribute đầu tiền là hash attribute với attribute sót lại là range attribute. DynamoDB chế tạo hash index ko được sắp đến xếp mang lại hash attribute và range index được sắp đến xếp đến range attribute. Mỗi thành phầm được định danh bởi cặp primary key này. Vấn đề này cho phép 2 items có cùng hash attribute tuy thế khác range attribute cùng vĩnh cửu vào một bảng.Trong quá trình chế tác bảng, chúng ta chứng thật nút têu trúc (throughput) những hiểu biết theo đơn vị chức năng là capađô thị unit. Quý khách hàng có thể chuyển đổi (tăng hoặc giảm) chỉ số này qua UpdateTable requestStrongly consistent: đảm bảo tài liệu mang ra là dữ liệu bắt đầu nhấtEventually consistent: đảm bảo rằng trong tương lai dữ liệu sẽ đồng hóa không còn bên trên phân vùng tuy nhiên không bảo vệ dự liệu trả về vào một trong những thời điểm khăng khăng là new nhấtRead capathành phố unit - Con số đề đạt con số phát âm strongly consitent của những cống phẩm không quá 4KBWrite capacity unit - Số lượng những lần ghi gồm dung lượng 1KB từng giây. Có nghĩa rằng nếu như bạn thưởng thức 10 write capathành phố units là chúng ta đang yêu thương cầu nút tiêu trúc 10 writes cùng với dung lượng 1 KB mỗi giây của bảng đó

DynamoDB sử dụng đều capađô thị unit này nhằm hỗ trợ tài ngulặng không thiếu mang đến lượng tiêu trúc tận hưởng.

Một strongly consistent read tương tự 2 evenly consitent read. Xem bảng sau để hiểu hơn

*

2. Read/Write capacity

Nếu chúng ta không áp dụng #batch_get_chiến thắng thì chẳng thể nhóm các tác phẩm cho một lần hiểu dữ liệu. Ví dụ:

Quý Khách đang yêu cầu mất 10 lần phát âm mang đến 10 công trình gồm dung tích 3KB (auto làm tròn cho 4KB) nếu sử dụng #get_vật phẩm tuy vậy ví như thực hiện #batch_get_cửa nhà thì đã đem tổng số dung lượng của 10 thành công với phân tách mang lại 4KB, ở đây vẫn là 3KB x 10 / 4KB làm tròn là 8 reads

Tương từ bỏ với write thì cũng đều có nhị hàm để ghi là #put_itemcùng #batch_write_thành phầm dẫu vậy 1 write chỉ nhận 1KB tài liệu.

Xem thêm: Lỗi Window Disc Image Burner Là Gì, 404 Not Found, Lỗi Window Disc Image Burner Là Gì, 404 Not Found

3. Secondary index

Để hỗ trợ cho việc truy cập tài liệu, Amazon DynamoDB tạo với làm chủ index mang lại primary key. Việc này giúp cho hệ thống truy vấn dữ liệu khá nhanh hao khi chỉ định và hướng dẫn primary key. Tuy nhiên, những khối hệ thống chắc rằng đang hưởng lợi từ những việc có một hoặc nhị key thay thế sửa chữa (alternate). Để tăng vận tốc truy cập bạn có thể tạo nên secondary index.

Một secondary index là một trong cấu tạo tài liệu đựng tập con của những attributes vào một bảng, cùng rất một key thay thế để cung cấp mang lại Query operation. Với một secondary index, các query vẫn không bị giới hạn Khi chỉ sử dụng được primary key; chúng ta có thể tầm nã vấn dữ liệu bởi việc sử dụng key thay thế sửa chữa từ secondary index. Một bảng hoàn toàn có thể có rất nhiều secondary index để cung ứng cho các query pattern.

DynamoDB cung cấp hai các loại index:

Global secondary index: một loại index tất cả hash và range key không giống cùng với hash cùng range key tự bảng gốc.Local secondary index: một một số loại index nhưng mà tất cả hash key trùng cùng với hash key trường đoản cú bảng nơi bắt đầu cùng range key là một trong attribute khác.

4. Query/Scan

Query:

Để triển khai một query operation các bạn cần có primary key cùng không đề xuất dĩ nhiên ĐK mang lại range key. Query hoàn toàn có thể triển khai trên một bảng hoặc secondary index.

Xem thêm: Hướng Dẫn Tạo Tài Khoản Bitcoin, Cho Người Mới Bắt Đầu

Lưu ý rằng: điều kiện đối chiếu ko tiến hành bên trên hash key được.

Range key yêu cầu được tiến hành đối chiếu nhỏng sau:

a = b — true if the attribute a is equal lớn the value ba b — true if a is greater than tía >= b — true if a is greater than or equal khổng lồ ba BETWEEN b AND c — true if a is greater than or equal to b, & less than or equal to lớn c.Tất cả thành quả được trả về sẽ được tính phổ biến là một query operation, Có nghĩa là với 100 1KB cống phẩm thì chúng ta chỉ cần 100 x 1KB / 4KB = 25 reads thay vày 100 reads (yeah)Scan:Một scan operation có thể thực hiển bên trên cả bảng cùng secondary index. Giá trị trả về mang định của một scan operation là cục bộ dữ liệu (sohai). Vì vậy hãy cẩn trọng Khi áp dụng scan.Một số để ý về Scan và Query:

Cả 2 operation đều phải có dung tích trả về tối đa là 1MB.Query cung cấp strongly consistenteventually consistent trong lúc kia Scan chỉ hỗ trợ eventually consistentHãy tránh bài toán Scan một bảng hoặc index có dung tích Khủng.Theo thời gian dung lượng tạo thêm thì Scan operation đã càng chậm

Dynamodb local

Nếu mà lại không muốn ĐK thực hiện DynamoDB chúng ta có thể sử dụng dynamodb-local để phát triển ứng dụng.Thêm vào Gemfile:

gem "dynamodb-local"Nên áp dụng Aws-sdk v2 để cải cách và phát triển (yeah)Sau kia mnghỉ ngơi dynamodb-local bằng terminal

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

Tạo một tệp tin config đặt vào initializers

#config/initializers/Aws.config.update( access_key_id: x, secret_access_key: y, region: "localhost", dynamodb: endpoint: "localhost:8000" )Giờ đến việc chế tạo bảng: Chúng ta đang sử dụng #create_table của Dynamodb client trong Aws sdk

#create_table.rbdef create_table dynamodb = Aws::DynamoDB::Client.new table_name = "users" dynamodb.create_table( table_name: table_name, attribute_definitions: < attribute_name: :user_id, attribute_type: :S, , attribute_name: :thành phố, 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 )endBảng tạo thành có tên là users cùng với:

hash key là user_id và loại tài liệu là Stringrange key là đô thị cùng một số loại tài liệu là Stringcác chỉ số throughput là 10 reads/s cùng 10 writes/s

Đến đó là dứt phần 1. Phần tới mình vẫn phân chia đã những best practices Khi thao tác làm việc cùng với dynamodb (yeah)

References

<1> http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html<2> http://docs.aws.amazon.com/sdkforruby/api/Aws/DynamoDB/Client.html