Amazon SimpleDB is a web service providing the core database functions of data indexing and querying in the cloud. By offloading the time and effort associated with building and operating a web-scale database, SimpleDB provides developers the freedom to focus on application development.
A traditional, clustered relational database requires a sizable upfront capital outlay, is complex to design, and often requires extensive and repetitive database administration. Amazon SimpleDB is dramatically simpler, requiring no schema, automatically indexing your data and providing a simple API for storage and access. This approach eliminates the administrative burden of data modeling, index maintenance, and performance tuning. Developers gain access to this functionality within Amazon’s proven computing environment, are able to scale instantly, and pay only for what they use.
Amazon SimpleDB provides a simple web services interface to create and store multiple data sets, query your data easily, and return the results. Your data is automatically indexed, 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. And scale-out is as simple as creating new domains, rather than building out new servers.
To use Amazon SimpleDB you:
Simple to use Amazon SimpleDB provides streamlined access to the store and query functions that traditionally are achieved using a relational database cluster – while leaving out other complex, often-unused database operations. The service allows you to quickly add data and easily retrieve or edit that data through a simple set of API calls.
Low touch Accessing these capabilities through the AWS cloud eliminates the complexity of maintaining and scaling these operations in-house. The service allows you to focus on value-added application development, rather than arduous and time-consuming database administration.
Scalable Amazon SimpleDB allows you to easily scale-out your database processing as demand for your application grows. Horizontal scale-out, via the creation of new domains, allows you to easily respond to growth in both data volume and requests.
Highly available The service runs within Amazon’s high-availability data centers. Data stored in Amazon SimpleDB is geographically dispersed and automatically replicated for high availability and durability.
Fast Amazon SimpleDB provides quick, efficient storage and retrieval of your data to support high performance web applications. Applications running fully within the Amazon cloud (e.g. an Amazon SimpleDB request originating from an application running on Amazon EC2), will provide near-LAN latency.
Flexible With Amazon SimpleDB, it is not necessary to pre-define all of the data formats you will need to store; simply add new attributes to your Amazon SimpleDB data set when needed, and the system will automatically index your data accordingly. The ability to store structured data without first defining a schema provides developers with greater flexibility when building applications, and eliminates the need to re-factor an entire database as those applications evolve.
Designed for use with other Amazon Web Services Amazon SimpleDB is designed to integrate easily with other AWS services such as Amazon S3 and EC2, providing the infrastructure for creating web-scale applications. For example, developers can run their applications in Amazon EC2 and store their data objects in Amazon S3. Amazon SimpleDB can then be used to query the object metadata from within the application in Amazon EC2 and return pointers to the objects stored in Amazon S3. Data transferred between Amazon SimpleDB and other Amazon Web Services within the same Region is free of charge.
Inexpensive Amazon SimpleDB passes on to you the financial benefits of Amazon’s scale. You pay only for resources you actually consume. Compare this with the significant up-front expenditures traditionally required to obtain software licenses and purchase and maintain hardware, either in-house or hosted. This frees you from many of the complexities of capacity planning, transforms large capital expenditures into much smaller operating costs, and eliminates the need to over-buy “safety net” capacity to handle periodic traffic spikes.
As your demand grows, you still pay only for what you use. As with other AWS services, there is no minimum fee and no long-term commitment. Also, note that we charge less where our costs are less, thus some prices vary across Geographic Regions. The prices listed are based on the Region in which you establish your Amazon SimpleDB domain(s). Amazon SimpleDB may be used from most countries, so long as payment is made in US Dollars.
|
|||||||||
|
Amazon SimpleDB measures the machine utilization of each request and charges based on the amount of machine capacity used to complete the particular request (SELECT, GET, PUT, etc.), normalized to the hourly capacity of a circa 2007 1.7 GHz Xeon processor.
** Data Transfer In will be $.10 per GB after June 30, 2010Data transfer “in” and “out” refers to transfer into and out of Amazon SimpleDB. There is no additional charge for data transferred between Amazon SimpleDB and other Amazon Web Services within the same Region (i.e., $0.00 per GB). Data transferred across Regions (e.g., between Amazon SimpleDB in the EU (Ireland) Region and Amazon EC2 in the US-East (Northern Virginia) Region, will be charged at Internet Data Transfer rates on both sides of the transfer.
|
|||||||||
|
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.
Amazon SimpleDB is designed to store relatively small amounts of data and is optimized for fast data access and flexibility in how that data is expressed. In order to minimize your costs across AWS services, large objects or files should be stored in Amazon S3, while the pointers and the meta-data associated with those files can be stored in Amazon SimpleDB. This will allow you to quickly search for and access your files, while minimizing overall storage costs. See below for detailed descriptions on calculating your own structured data storage requirements and for a more detailed explanation of how storage in Amazon SimpleDB and storage in Amazon S3 differ.
* The free tier is a monthly offer. Free usage does not accumulate.
** Any data stored as part of the free tier program must be actively used. If a domain is not accessed for a period of 6 months, it will be subject to removal at the discretion of Amazon Web Services.
(Amazon SimpleDB is licensed by Amazon Web Services LLC.)
The data model used by Amazon SimpleDB makes it easy to input, manage and query your structured data. Developers organize their data-set into domains and can run queries across all of the data stored in a particular domain. Domains are collections of items that are described by attribute-value pairs.
Think of these terms as analogous to concepts in a traditional spreadsheet table. For example, take the details of a customer management database shown in the table below and consider how they would be represented in Amazon SimpleDB. The whole table would be your domain named “customers.” Individual customers would be rows in the table or items in your domain. The contact information would be described by column headers (attributes). Values are in individual cells. Now imagine the records below are new customers you would like to add to your domain.
| CustomerID | First name | Last name | Street address | City | State | Zip | Telephone | |
| 123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 | |
| 456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 |
In Amazon SimpleDB, to add the records above, you would PUT the CustomerIDs into your domain along with the attribute-value pairs for each of the customers. Without the specific syntax, it would look something like this:
PUT (item, 123), (First name, Bob), (Last name, Smith), (Street address, 123 Main St.), (City, Springfield), (State, MO), (Zip, 65801), (Telephone, 222-333-4444) PUT (item, 456), First name, James), (Last name, Johnson), (Street address, 456 Front St.), (City, Seattle), (State, WA), (Zip, 98104), (Telephone, 333-444-5555)
Amazon SimpleDB differs from tables of traditional databases in several important ways. First, you have the flexibility to easily go back later on and add new attributes that only apply to certain records. For example, imagine you begin to capture your customers’ email addresses to enable real-time alerts on order status. Rather than rebuilding your “customer” table, re-writing your queries, rebuilding your indices, and so on, you would simply add the new records and any additional attributes to your existing “customers” domain. The resulting domain might look something like this:
| CustomerID | First name | Last name | Street address | City | State | Zip | Telephone | ||
| 123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 | ||
| 456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 | ||
| 789 | Deborah | Thomas | 789 Garfield | New York | NY | 10001 | 444-555-6666 | dthomas@xyz.com |
Amazon SimpleDB provides a small number of simple API calls which implement writing, indexing and querying data. The interface and feature set are intentionally focused on core functionality, providing a basic API for developers to build upon and making the service easy to learn and simple to use.
Amazon Web Services provides a number of database alternatives for developers. Amazon RDS enables you to run a fully featured relational database while offloading database administration; Amazon SimpleDB provides simple index and query capabilities with seamless scalability; and using one of our many relational database AMIs on Amazon EC2 and Amazon EBS allows you to operate your own relational database in the cloud. There are important differences between these alternatives that may make one more appropriate for your use case.
If your application requires relational storage, but you want to reduce the time you spend on database management, Amazon RDS automates common administrative tasks to reduce your complexity and total cost of ownership. Amazon RDS automatically backs up your database and maintains your database software, allowing you to spend more time on application development. With the native database access Amazon RDS provides, you get the programmatic familiarity, and tooling and application compatibility, of a traditional relational database. You also benefit from the flexibility of being able to scale the compute resources or storage capacity associated with your relational database instance via a single API call.
With Amazon RDS, you still control the database settings that are specific to your business. This includes building a relational schema to fit your use case, creating indices, and tuning the performance of your database to your application’s workflow. You also take an active role in the scaling decisions for your database – you tell the service when you want to add more storage or change to a larger or smaller DB Instance class.
We recommend Amazon RDS for customers who:
Developers may use a number of leading relational databases on Amazon EC2. An Amazon EC2 instance can be used to run a database, and the data can be stored within an Amazon Elastic Block Store (Amazon EBS) volume. Amazon EBS is a fast and reliable persistent storage feature of Amazon EC2. By designing, building, and managing their own relational database on Amazon EC2, developers avoid the friction of provisioning and scaling their own infrastructure while gaining access to a variety of standard database engines over which they can exert full administrative control. Available AMIs include IBM DB2, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, Sybase, and Vertica.
We recommend Amazon EC2 Relational Database AMIs for customers who:
For database implementations that do not require a relational model, and that principally demand index and query capabilities, Amazon SimpleDB eliminates the administrative overhead of running a highly-available production database, and is unbound by the strict requirements of a RDBMS. With Amazon SimpleDB, you store and query data items via simple web services requests, and Amazon SimpleDB does the rest. In addition to handling infrastructure provisioning, software installation and maintenance, Amazon SimpleDB automatically indexes your data, creates geo-redundant replicas of the data to ensure high availability, and performs database tuning on customers’ behalf. Amazon SimpleDB also provides no-touch scaling. There is no need to anticipate and respond to changes in request load or database utilization; the service simply responds to traffic as it comes and goes, charging only for the resources consumed. Finally, Amazon SimpleDB doesn’t enforce a rigid schema for data. This gives customers flexibility – if their business changes, they can easily reflect these changes in Amazon SimpleDB without any schema updates or changes to the database code.
However, Amazon SimpleDB is not a relational database, and does not offer some features needed in certain applications, e.g. complex transactions or joins.
We recommend Amazon SimpleDB for customers who:
Visit the Running Databases on AWS page for more detailed information on the various database alternatives for your applications.
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.
For the Beta release, a single Amazon SimpleDB domain may grow to 10 GB and you are initially allocated a maximum of 100 domains; however, over time these allocations may be raised. Please complete this form if you require additional domains.
The best way to predict the size of your structured data storage is as follows:
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
To calculate your estimated monthly storage cost for the US-East (Northern Virginia) Region, take the resulting size in GB and multiply by $0.25. Alternatively, for the EU (Ireland) Region or the US-West (Northern California) Region, take the resulting size in GB and multiply by $.275.
Amazon SimpleDB measures the machine utilization of each request and charges based on the amount of machine capacity used to complete the particular request (SELECT, 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 SELECT 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. For the US-East (Northern Virginia) Region, 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.
If your query domains are located in the EU (Ireland) Region or US-West (Northern California) Region, Amazon SimpleDB Machine hours are priced at $.154 per Machine hour, and all cost calculations should be adjusted accordingly.
The best way to understand Amazon SimpleDB is to work through the Getting Started Guide, part of our Technical Documentation. Within a few minutes, you will be able to create your domain and start building your index!
Your use of this service is subject to the Amazon Web Services Customer Agreement