
Today, many developers correlate the word “database” with Relational Database Management Systems (RDBMS). While RDBMS offerings provide deep functionality, for many use cases, they introduce more complexity (and more cost) than is necessary. Many developers simply want to store, process, and query their data without worrying about managing schemas, maintaining indexes, tuning performance or scaling access to their data. Amazon SimpleDB removes the need to maintain a schema, while your attributes are automatically indexed to provide fast real-time lookup and querying capabilities. This flexibility minimizes the performance tuning required as the demands for your data increase.
Some developers do require a complex schema or broader functionality, and will undertake the extra work required to run their own relational database. Many developers are doing just this by hosting their own databases inside the Amazon EC2 compute environment. This provides them complete control over whatever database they choose to run, while still accessing the benefits of Amazon’s computing infrastructure and the ability to scale capacity up and down instantly.
Either choice is fine with us. Over time, we plan to continue to add features that make it as easy as possible for developers to pursue whichever option they prefer for obtaining database functionality.Unlike Amazon S3, Amazon SimpleDB is not storing raw data. Rather, it takes your data as input and expands it to create indices across multiple dimensions, which enables you to quickly query that data. Additionally, Amazon S3 and Amazon SimpleDB use different types of physical storage. Amazon S3 uses dense storage drives that are optimized for storing larger objects inexpensively. Amazon SimpleDB stores smaller bits of data and uses less dense drives that are optimized for data access speed.
In order to optimize your costs across AWS services, large objects or files should be stored in Amazon S3, while smaller data elements or file pointers (possibly to Amazon S3 objects) are best saved in Amazon SimpleDB. Because of the close integration between services and the free data transfer within the AWS environment, developers can easily take advantage of both the speed and querying capabilities of Amazon SimpleDB as well as the low cost of storing data in Amazon S3, by integrating both services into their applications.You can get started with SimpleDB for free and without risk. For at least the first six months of the public beta (starting December 1, 2008), you pay no charges on the first 25 Machine Hours, 1 GB of Data Transfer, and 1 GB of Storage that you consume every month. Amazon SimpleDB lets developers pay only for what they consume and there is no minimum fee.
Machine Utilization
- First 25 Amazon SimpleDB Machine Hours consumed per month are free
- $0.14 per Amazon SimpleDB Machine Hour consumed thereafter
Amazon SimpleDB measures the machine utilization of each request and charges based on the amount of machine capacity used to complete the particular request (QUERY, GET, PUT, etc.), normalized to the hourly capacity of a circa 2007 1.7 GHz Xeon processor.
Data Transfer
- First 1 GB of data transferred in per month is free
- $0.100 per GB – all data transfer in thereafter
- First 1 GB of data transferred out per month is free; thereafter:
- $0.170 per GB – first 10 TB / month data transfer out
- $0.130 per GB – next 40 TB / month data transfer out
- $0.110 per GB – next 100 TB / month data transfer out
- $0.100 per GB – data transfer out / month over 150 TB
Data transfer “in” and “out” refers to transfer into and out of Amazon SimpleDB. Data transferred between Amazon SimpleDB and other Amazon Web Services is free of charge (i.e., $0.00 per GB).
Structured Data Storage
- First 1 GB stored per month is free
- $0.25 per GB-month thereafter
Amazon SimpleDB measures the size of your billable data by adding the raw byte size of the data you upload + 45 bytes of overhead for each item, attribute name and attribute-value pair.
The following examples refer to charges for usage beyond the free usage levels described above. As previously described, usage below the monthly free tier is provided at no charge.
Machine Utilization:
Amazon SimpleDB measures the machine utilization of each request and charges based on the amount of machine capacity used to complete the particular request (QUERY, GET, PUT, etc.), normalized to the hourly capacity of a circa 2007 1.7 GHz Xeon processor. Machine utilization is driven by the amount of data (# of attributes, length of attributes) processed by each request. A GET operation that retrieves 256 attributes will use more resources than a GET that retrieves only 1 attribute. A multi-predicate QUERY that examines 100,000 attributes will cost more than a single predicate query that examines 250.
In the response message for each request, Amazon SimpleDB returns a field called Box Usage. Box Usage is the measure of machine resources consumed by each request. It does not include bandwidth or storage. Box usage is reported as the portion of a machine hour used to complete a particular request. The cost of an individual request is Box Usage (expressed in hours) * $0.14 per Amazon SimpleDB Machine hour. The cost of all your requests is the sum of Box Usage (expressed in hours) * $0.14.
For example, if over the course of a month, the sum of the Box Usage for your requests uses the equivalent of one 1.7 GHz Xeon processor for 9 hours, your charge will be:
9 hours * $0.14 per Amazon SimpleDB Machine hour = $1.26.
Network Data Transferred:
(i) $0.10 per GB data transfer in
This charge is for the amount of data sent to Amazon SimpleDB, and applies whenever data is written to any of your domains.
Transfer In Example:
You upload 500 MB of data to Amazon SimpleDB each day during the month of March.
Total Data Transfer In for the month = 500 MB x (1 GB / 1024 MB) x 31 days = 15.14 GB
Total Charge = 15.14 GB x ($0.10 / GB) = $1.52
(ii) $0.17 per GB data transfer out for the first 10 TB, $0.13 per GB for the next 40 TB, $0.11 per GB for the next 100 TB, and $0.10 for all remaining data transfer out of Amazon SimpleDB in a month
This charge is for the amount of data retrieved from Amazon SimpleDB, and applies whenever data is read from any of your domains.
Transfer Out Example:
You transfer 500 MB of data out of Amazon SimpleDB each day during the month of March.
Total Data Transfer Out for the month = 500 MB x (1 GB / 1,024 MB) x 31 days = 15.14 GB
Total charge = 15.14 GB x ($0.17 / GB) = $2.58
Storage
The best way to predict the size of your structured data storage is as follows:
To calculate your estimated monthly storage cost, take the resulting size in GB and multiply by $0.25.Raw byte size (GB) of all item IDs + 45 bytes per item + Raw byte size (GB) of all attribute names + 45 bytes per attribute name + Raw byte size (GB) of all attribute-value pairs + 45 bytes per attribute-value pair
You organize your structured data into domains and can run queries across all of the data stored in a particular domain. Domains are comprised of items, and items are described by attribute-value pairs. To understand these elements, consider the metaphor of data stored in a spreadsheet table. An Amazon SimpleDB domain is like a worksheet, items are like rows of data, attributes are like column headers, and values are the data entered in each of the cells.
However unlike a spreadsheet, Amazon SimpleDB allows for multiple values to be associated with each “cell” (e.g., for item “123,” the attribute “color” can have both value “blue” and value “red”). Additionally, in Amazon SimpleDB, each item can have its own unique set of associated attributes (e.g., item “123” might have attributes “description” and “color” whereas item “789” has attributes “description,” “color” and “material”). Amazon SimpleDB automatically indexes your data, making it easy to quickly find the information that you need. There is no need to pre-define a schema or change a schema if new data is added later.