1 / 24

Integrating an App with Amazon Web Services SimpleDB

“A Matter of Choices”. Integrating an App with Amazon Web Services SimpleDB. Presented by Mark Maslyn – mmaslyn@msn.com. Amazon Web Services Menu. Amazon Web Service Databases. RDB (Relational Database) S3 (Large Object Database) SimpleDB (NoSQL Database). Amazon SimpleDB.

chava
Download Presentation

Integrating an App with Amazon Web Services SimpleDB

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. “A Matter of Choices” Integrating an App with Amazon Web Services SimpleDB Presented by Mark Maslyn – mmaslyn@msn.com

  2. Amazon Web Services Menu

  3. Amazon Web Service Databases • RDB (Relational Database) • S3 (Large Object Database) • SimpleDB (NoSQL Database)

  4. 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.

  5. SimpleDB Language Support

  6. Whoa… Non – Relational ??? From WikiMedia Commons

  7. 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

  8. Android to Amazon Database Model Data Request Data Response Android Phone For UI and Display Amazon SimpleDB Cloud For Database Heavy Lifting Each Does What It Does Best ! Images From HTC and WikiMedia

  9. Remote Database Example: Kooaba From www.kooaba.com

  10. Kooaba Architecture From www.kooaba.com

  11. My Application – Oil Well Information • Location (Latitude / Longitude) • Well Status • Land Survey Boundaries • Must Have the Ability to “Drill Down” for More Information

  12. Drilling For Oil A B C D Amount of Data Generated Depends On How Deep the Well is Drilled

  13. Example NoSQL Row For Geologic Formation Names and Depths Item Key Name1 Value1 Name2 Value2 Name3 Value3 “05-10123”, “BLAINE”, “1464”,”ATOKA”,”4744”,”MORROW”,”4854”

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

  15. 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; }

  16. Creating SimpleDB Domains From Android publicvoid createDomain(String domainName) { sdb.createDomain(new CreateDomainRequest(domainName)); }

  17. 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 inserted List<ReplaceableItem> dataList = new ArrayList<ReplaceableItem>(); // populate the list using the item id and the attribute name / value pairs dataList.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));

  18. Retrieving Data From Amazon // build your SQL select statement String selectExpression = "select * from " + domain + " where itemName() = '“05-123’”; // construct a select request SelectRequest 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 item for (int i = 0; i < itemList.size(); i++) { Item item = (Item) itemList.get(i); ArrayList<Attribute> attributeList = (ArrayList<Attribute>) item.getAttributes(); }

  19. 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 ?

  20. 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

  21. My Choices: Local vs. Remote LOCAL REMOTE Android SQLite Database 100,000 Colorado Wells Latitude Longitude Status Value 4 MB 54 Colorado Counties Land Survey Information 12 MB Amazon SimpleDB 100,000 Colorado Wells Detailed Well Information 21 MB

  22. Locally Stored Data • Well Type / Location • Land Grid

  23. Internet (Remotely) Accessed Data • Authentication as part of RESTful Model • Drill Down – Provide More Detailed Information • No Limit on Amount of Data Accessible

  24. For Further Information Amazon Web Services For SDK’s, Tutorials, Case Studies and Sample Code : http://aws.amazon.com Mark Maslyn: mmaslyn@msn.com

More Related