Amazon SimpleDB is a lightweight, highly available NoSQL database that offloads the tasks of database provision and administration.
Benefits of Amazon SimpleDB
Featured Use Cases
Logging:
Online Games
Building AmazonSimpleDB Client
AmazonSimpleDBClientBuilder clientBuilder = AmazonSimpleDBClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).withRegion(Regions.EU_WEST_1); AmazonSimpleDB sdb = clientBuilder.build();
Create a domain
String myDomain = "MyStore"; System.out.println("Creating domain called " + myDomain + ".\n"); sdb.createDomain(new CreateDomainRequest(myDomain));
List domains
System.out.println("Listing all domains in your account:\n"); for (String domainName : sdb.listDomains().getDomainNames()) { System.out.println(" " + domainName); } System.out.println();
Put data into a domain
System.out.println("Putting data into " + myDomain + " domain.\n"); sdb.batchPutAttributes(new BatchPutAttributesRequest(myDomain, createSampleData()));
Select data from a domain
String selectExpression = "select * from `" + myDomain + "` where Category = 'Clothes'"; System.out.println("Selecting: " + selectExpression + "\n"); SelectRequest selectRequest = new SelectRequest(selectExpression); for (Item item : sdb.select(selectRequest).getItems()) { System.out.println(" Item"); System.out.println(" Name: " + item.getName()); for (Attribute attribute : item.getAttributes()) { System.out.println(" Attribute"); System.out.println(" Name: " + attribute.getName()); System.out.println(" Value: " + attribute.getValue()); } } System.out.println();
Delete values from an attribute
System.out.println("Deleting Blue attributes in Item_O3.\n"); Attribute deleteValueAttribute = new Attribute("Color", "Blue"); sdb.deleteAttributes(new DeleteAttributesRequest(myDomain, "Item_03") .withAttributes(deleteValueAttribute));
Delete an attribute and all of its values
System.out.println("Deleting attribute Year in Item_O3.\n"); sdb.deleteAttributes(new DeleteAttributesRequest(myDomain, "Item_03") .withAttributes(new Attribute().withName("Year")));
Replace an attribute
System.out.println("Replacing Size of Item_03 with Medium.\n"); ListreplaceableAttributes = new ArrayList (); replaceableAttributes.add(new ReplaceableAttribute("Size", "Medium", true)); sdb.putAttributes(new PutAttributesRequest(myDomain, "Item_03", replaceableAttributes));
Delete an item and all of its attributes
System.out.println("Deleting Item_03.\n"); sdb.deleteAttributes(new DeleteAttributesRequest(myDomain, "Item_03"));
Delete a domain
System.out.println("Deleting " + myDomain + " domain.\n"); sdb.deleteDomain(new DeleteDomainRequest(myDomain));
Sample Data Method
/** * Creates an array of SimpleDB ReplaceableItems populated with sample data. * * @return An array of sample item data. */ private static ListcreateSampleData() { List sampleData = new ArrayList (); sampleData.add(new ReplaceableItem("Item_01").withAttributes( new ReplaceableAttribute("Category", "Clothes", true), new ReplaceableAttribute("Subcategory", "Sweater", true), new ReplaceableAttribute("Name", "Cathair Sweater", true), new ReplaceableAttribute("Color", "Siamese", true), new ReplaceableAttribute("Size", "Small", true), new ReplaceableAttribute("Size", "Medium", true), new ReplaceableAttribute("Size", "Large", true))); sampleData.add(new ReplaceableItem("Item_02").withAttributes( new ReplaceableAttribute("Category", "Clothes", true), new ReplaceableAttribute("Subcategory","Pants", true), new ReplaceableAttribute("Name", "Designer Jeans", true), new ReplaceableAttribute("Color", "Paisley Acid Wash", true), new ReplaceableAttribute("Size", "30x32", true), new ReplaceableAttribute("Size", "32x32", true), new ReplaceableAttribute("Size", "32x34", true))); sampleData.add(new ReplaceableItem("Item_03").withAttributes( new ReplaceableAttribute("Category", "Clothes", true), new ReplaceableAttribute("Subcategory", "Pants", true), new ReplaceableAttribute("Name", "Sweatpants", true), new ReplaceableAttribute("Color", "Blue", true), new ReplaceableAttribute("Color", "Yellow", true), new ReplaceableAttribute("Color", "Pink", true), new ReplaceableAttribute("Size", "Large", true), new ReplaceableAttribute("Year", "2006", true), new ReplaceableAttribute("Year", "2007", true))); return sampleData; }