DynamoDB - Tạo các mục

Việc tạo một mục trong DynamoDB chủ yếu bao gồm đặc điểm kỹ thuật thuộc tính và mục cũng như tùy chọn chỉ định điều kiện. Mỗi mục tồn tại dưới dạng một tập hợp các thuộc tính, với mỗi thuộc tính được đặt tên và gán một giá trị của một loại nhất định.

Các loại giá trị bao gồm vô hướng, tài liệu hoặc tập hợp. Các vật phẩm có giới hạn kích thước 400KB, với khả năng có bất kỳ số lượng thuộc tính nào có thể phù hợp trong giới hạn đó. Kích thước tên và giá trị (độ dài nhị phân và UTF-8) xác định kích thước mục. Sử dụng tên thuộc tính ngắn giúp giảm thiểu kích thước mặt hàng.

Note- Bạn phải chỉ định tất cả các thuộc tính khóa chính, với khóa chính chỉ yêu cầu khóa phân vùng; và các khóa tổng hợp yêu cầu cả phân vùng và khóa sắp xếp.

Ngoài ra, hãy nhớ các bảng không có lược đồ được xác định trước. Bạn có thể lưu trữ các bộ dữ liệu khác nhau đáng kể trong một bảng.

Sử dụng bảng điều khiển GUI, Java hoặc công cụ khác để thực hiện tác vụ này.

Làm thế nào để tạo một mục bằng GUI Console?

Điều hướng đến bảng điều khiển. Trong ngăn điều hướng ở bên trái, hãy chọnTables. Chọn tên bảng để sử dụng làm đích, sau đó chọnItems như được hiển thị trong ảnh chụp màn hình sau.

Lựa chọn Create Item. Màn hình Create Item cung cấp một giao diện để nhập các giá trị thuộc tính cần thiết. Bất kỳ chỉ số phụ nào cũng phải được nhập.

Nếu bạn yêu cầu nhiều thuộc tính hơn, hãy chọn menu hành động ở bên trái Message. Sau đó chọnAppendvà kiểu dữ liệu mong muốn.

Sau khi nhập tất cả thông tin cần thiết, hãy chọn Save để thêm mục.

Làm thế nào để sử dụng Java trong việc tạo vật phẩm?

Sử dụng Java trong các hoạt động tạo mục bao gồm tạo một cá thể lớp DynamoDB, cá thể lớp Bảng, cá thể lớp Mục và chỉ định khóa chính và các thuộc tính của mục bạn sẽ tạo. Sau đó, thêm mục mới của bạn bằng phương thức putItem.

Thí dụ

DynamoDB dynamoDB = new DynamoDB (new AmazonDynamoDBClient(
   new ProfileCredentialsProvider()));
Table table = dynamoDB.getTable("ProductList");
   
// Spawn a related items list 
List<Number> RELItems = new ArrayList<Number>(); 
RELItems.add(123); 
RELItems.add(456); 
RELItems.add(789);  
   
//Spawn a product picture map  
Map<String, String> photos = new HashMap<String, String>(); 
photos.put("Anterior", "http://xyz.com/products/101_front.jpg"); 
photos.put("Posterior", "http://xyz.com/products/101_back.jpg"); 
photos.put("Lateral", "http://xyz.com/products/101_LFTside.jpg");  

//Spawn a product review map 
Map<String, List<String>> prodReviews = new HashMap<String, List<String>>();  
List<String> fiveStarRVW = new ArrayList<String>(); 
fiveStarRVW.add("Shocking high performance."); 
fiveStarRVW.add("Unparalleled in its market."); 
prodReviews.put("5 Star", fiveStarRVW);  
List<String> oneStarRVW = new ArrayList<String>(); 
oneStarRVW.add("The worst offering in its market."); 
prodReviews.put("1 Star", oneStarRVW);  

// Generate the item 
Item item = new Item()
   .withPrimaryKey("Id", 101) 
   .withString("Nomenclature", "PolyBlaster 101") 
   .withString("Description", "101 description") 
   .withString("Category", "Hybrid Power Polymer Cutter")  
   .withString("Make", "Brand – XYZ") 
   .withNumber("Price", 50000) 
   .withString("ProductCategory", "Laser Cutter") 
   .withBoolean("Availability", true) 
   .withNull("Qty") 
   .withList("ItemsRelated", RELItems) 
   .withMap("Images", photos) 
   .withMap("Reviews", prodReviews);

// Add item to the table  
PutItemOutcome outcome = table.putItem(item);

Bạn cũng có thể xem ví dụ lớn hơn sau đây.

Note- Mẫu sau có thể giả sử là nguồn dữ liệu đã tạo trước đó. Trước khi cố gắng thực thi, hãy thu thập các thư viện hỗ trợ và tạo các nguồn dữ liệu cần thiết (các bảng có các đặc điểm bắt buộc hoặc các nguồn tham chiếu khác).

Mẫu sau cũng sử dụng Eclipse IDE, tệp thông tin xác thực AWS và Bộ công cụ AWS trong Dự án Java AWS của Eclipse.

package com.amazonaws.codesamples.document;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DeleteItemOutcome;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.Table;

import com.amazonaws.services.dynamodbv2.document.UpdateItemOutcome;
import com.amazonaws.services.dynamodbv2.document.spec.DeleteItemSpec;
import com.amazonaws.services.dynamodbv2.document.spec.UpdateItemSpec;
import com.amazonaws.services.dynamodbv2.document.utils.NameMap;
import com.amazonaws.services.dynamodbv2.document.utils.ValueMap;
import com.amazonaws.services.dynamodbv2.model.ReturnValue;

public class CreateItemOpSample { 
   static DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient ( 
      new ProfileCredentialsProvider()));  
   static String tblName = "ProductList";  
      
   public static void main(String[] args) throws IOException {  
      createItems();  
      retrieveItem();  
         
      // Execute updates 
      updateMultipleAttributes(); 
      updateAddNewAttribute(); 
      updateExistingAttributeConditionally();  
         
      // Item deletion 
      deleteItem();  
   }
   private static void createItems() {  
      Table table = dynamoDB.getTable(tblName); 
      try {  
         Item item = new Item() 
            .withPrimaryKey("ID", 303)
            .withString("Nomenclature", "Polymer Blaster 4000") 
            .withStringSet( "Manufacturers", 
            new HashSet<String>(Arrays.asList("XYZ Inc.", "LMNOP Inc.")))  
            .withNumber("Price", 50000) 
            .withBoolean("InProduction", true) 
            .withString("Category", "Laser Cutter"); 
         
         table.putItem(item);  
         item = new Item() 
            .withPrimaryKey("ID", 313) 
            .withString("Nomenclature", "Agitatatron 2000") 
            .withStringSet( "Manufacturers", 
            new HashSet<String>(Arrays.asList("XYZ Inc,", "CDE Inc."))) 
            .withNumber("Price", 40000) 
            .withBoolean("InProduction", true) 
            .withString("Category", "Agitator"); 
         
         table.putItem(item);  
      } catch (Exception e) { 
         System.err.println("Cannot create items."); 
         System.err.println(e.getMessage()); 
      } 
   }   
}