24
Integrating an App with Amazon Web Services SimpleDB “A Matter of Choices” Presented by Mark Maslyn – [email protected]

Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Embed Size (px)

DESCRIPTION

There are many ways to integrate an Android app with an Amazon Web Services database. This presentation explores some of those possibilities and the choices I made for my app using the AWS SimpleDB NoSQL cloud database.

Citation preview

Page 1: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Integrating an App with Amazon Web Services SimpleDB

“A Matter of Choices”

Presented by Mark Maslyn – [email protected]

Page 2: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Amazon Web Services Menu

Page 3: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Amazon Web Service Databases

• RDB (Relational Database)

• S3 (Large Object Database)

• SimpleDB (NoSQL Database)

Page 4: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Amazon SimpleDB

• NoSQL Database – Non Relational

• Distributed - Highly Scalable, Highly Reliable, Incremental Writes

• Primarily for Database Reads

• RESTful Calls Passing Credentials and Query

• Very Low Cost – First 25 Hours Free Each Month.

Page 5: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

SimpleDB Language Support

Page 6: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Whoa… Non – Relational ???

From WikiMedia Commons

Page 7: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

NoSQL Databases• Use “Domains” Instead of “Tables”• Don’t Have Fixed Schemas – Easily Add or

Remove Columns• Variable Number of Fields per Record (Row)• Each Record is a List of Name / Value Pairs• Everything is a String• Record Indexed By A Unique Item ID• Implements Most SQL Calls• Maintained By Amazon Web Services

Page 8: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Android to Amazon Database Model

Android Phone

For UI and Display

Amazon SimpleDB Cloud

For Database Heavy Lifting

Data Request

Data Response

Each Does What It Does Best !

Images From HTC and WikiMedia

Page 9: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Remote Database Example: Kooaba

From www.kooaba.com

Page 10: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Kooaba Architecture

From www.kooaba.com

Page 11: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

My Application – Oil Well Information

• Location (Latitude / Longitude)

• Well Status

• Land Survey Boundaries

• Must Have the Ability to “Drill Down” for More Information

Page 12: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Drilling For Oil

Amount of Data Generated Depends On How Deep the Well is Drilled

A

B

C

D

Page 13: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Example NoSQL Row For Geologic Formation Names and Depths

Item

Key

“05-10123”, “BLAINE”, “1464”,”ATOKA”,”4744”,”MORROW”,”4854”

Name3Name2Name1 Value1 Value2 Value3

Page 14: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Coding the ConnectionFrom Android

Image From http://www.vpnchoice.com/blog/wp-content/uploads/2011/06/android-vpn-300x187.jpg

Page 15: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Connecting to Amazon SimpleDB

private static AmazonSimpleDB sdb = null;

public static AmazonSimpleDB getInstance() {

if ( sdb == null ) { // pass in the authenication credentials

sdb = new AmazonSimpleDBClient( AWSDemo.credentials );

// set the node we want to use sdb.setEndpoint("sdb.us-west-1.amazonaws.com"); }

return sdb;}

Page 16: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Creating SimpleDB Domains From Android

public void createDomain(String domainName) { sdb.createDomain(new CreateDomainRequest(domainName));}

Page 17: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Inserting Records From Android

// each row is keyed with a “replaceable” item id followed by // attributes i.e. name / value pairs

// construct a list of items to be insertedList<ReplaceableItem> dataList = new ArrayList<ReplaceableItem>();

// populate the list using the item id and the attribute name / value pairsdataList.add(new ReplaceableItem(“05-123”).withAttributes( new ReplaceableAttribute(DBFields.STATE, “CO”, true), new ReplaceableAttribute(DBFields.COUNTY, “Weld”, true), new ReplaceableAttribute(DBFields.DRILLING_DATE, “05-11-2011”, true));

// batch insert the list into the SimpleDB database

sdb.batchPutAttributes(new BatchPutAttributesRequest(“my_domain”, dataList ));

Page 18: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Retrieving Data From Amazon

// build your SQL select statementString selectExpression = "select * from " + domain + " where itemName() = '“05-123’”;

// construct a select requestSelectRequest selectRequest = new SelectRequest(selectExpression);

// retrieve a list of matching items (records)List<Item> itemList = sdb.select(selectRequest).getItems();

// loop through each record and extract the attributes from each itemfor (int i = 0; i < itemList.size(); i++){ Item item = (Item) itemList.get(i); ArrayList<Attribute> attributeList = (ArrayList<Attribute>) item.getAttributes();}

Page 19: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Question:

Since Android Devices Can Use the Internal SQLite Database…

When I Would I Use the Internal Database and When Would I Use the

Amazon Cloud Database ?

Page 20: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

It Depends On…

• Size of Your Database – Size Does Matter

• APK Maximum of 30 MB – Cloud Unlimited

• Whether the Data is Static or Subject to Change

• Whether You Need an Internet Connection For Access

• Whether You Require Authentication

Page 21: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

My Choices: Local vs. Remote

Android SQLite Database

100,000 Colorado WellsLatitude

Longitude

Status Value

4 MB

54 Colorado CountiesLand Survey Information

12 MB

Amazon SimpleDB

100,000 Colorado WellsDetailed Well Information

21 MB

LOCAL REMOTE

Page 22: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

Locally Stored Data

• Well Type / Location• Land Grid

Page 23: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

• Authentication as part of RESTful Model

• Drill Down – Provide More Detailed Information

• No Limit on Amount of Data Accessible

Internet (Remotely) Accessed Data

Page 24: Integrating an App with Amazon Web Services SimpleDB - A Matter of Choices

For Further Information

Amazon Web Services For SDK’s, Tutorials,

Case Studies and Sample Code :

http://aws.amazon.com

Mark Maslyn: [email protected]