Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A JDBC driver for Amazon's SimpleDB

tree: 56e8f8f8a7

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 conf added first snap shot of code
Octocat-spinner-32 docs adding updates
Octocat-spinner-32 lib
Octocat-spinner-32 src
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README
Octocat-spinner-32 build.xml
Octocat-spinner-32 added first snap shot of code
SimpleJDBC is a JDBC driver for Amazon's SimpleDB ( Thus, this driver makes it possible to use the myriad tools available that leverage standard JDBC interfaces to facilitate working with relational data (i.e. SimpleJDBC enables ETL tools to import or extract data from SimpleDB via existing logic coded for working with JDBC). All SimpleDB communication is via Amazon's SDK. 

For detailed code examples, documentation, downloads, etc see the SimpleJDBC Google code site & wiki (; plus, join and/or search the mailing list ( If you are looking for the source, you can find it here. 

What is SimpleDB? 

SimpleDB is a cloud-based key/value store exposed via a web service interface. SimpleDB is a massively scalable, highly available datastore -- it's logically defined as domains containing items. SimpleDB also permits items to contain attributes. Think of a domain much like you would a table in the relational sense. Domains can have many items (which are similar to rows) and items can have many attributes (which are like columns in the relational world).

Attributes are really just name/value pairs and the "pair" aspect isn't limited to one value. That is, an attribute name can have a collection (or list) of associated values. What's more, all data within SimpleDB is represented as a String, which is distinctly different from a standard RDBMS, which typically support myriad datatypes.

SimpleDB doesn't support the notion of cross-domain joins, so you can't query for items in multiple domains. You could, however, overcome this limitation by performing multiple SimpleDB queries and doing the join on your end. Items don't have keys per se. The key or unique identifier for an item is the item's name. 

Searching in SimpleDB is different: data comparisons are done lexicographically. Lexicographic searching can cause issues when looking for numbered data (including dates), but all is not lost. One way to fix the searching-on-distance issue is by padding numeric data (which this driver attempts to facilitate).

What SimpleJDBC supports:

INSERT statements:
  * create a domain (i.e. table) if not already in existence
  * Thus, "INSERT INTO Races (Name, Distance) VALUES ('Richmond Marathon', 26.2)" is a valid insert statement
    that will create a domain named Races with an item having a unique id attribute (item name) and two attributes:
    Name and Distance with values
  * Numeric values are encoded 
  * All inserted objects are given an id (if one isn't provided (i.e. id or ID)).
    Right now, this id isn't guaranteed to be unique.  

DELETE statements
  * Deletes only support comparing values by equals (=); that is, the
    statement "DELETE from Races where Name = 'Richmond Marathon'" works
    but "DELETE from Races where distance > 13.1" would not (yet)

UPDATE statements
  * Numeric values are encoded

SELECT statements
  * Numeric values are encoded and decoded

 see Google code issue list (
Something went wrong with that request. Please try again.