
The problem.
You are doing a small/proof of concept project. You want to have a centralized database, but do not want to hassle of creating another mySQL database on your live server. You know just need a simple datastore, but you do not want to write codes to read/write from an XML file. You need a flexible datastore that just works, you know you do not need much scalability for this simple application, or the overhead of Simpledb. You want it to be REST possible but installing phprestsql is too much of an overkill.
Stuck?
Enter Google SpreadSheet.
If the above is the problem you are facing, you might want to take a look at Google SpreadSheet. The first reaction might be “what?!?, I wrote 1000 lines stored procedure and you want to me to code with SpreadSheet??”. But if you are just doing a small application, something that just requires an online datastore, what is better than an API that lets you do queried search, allows you to do CRUD on your records, with a ready API for .NET, PHP, Java and it is hosted by Google?
Not Google Apps Engine.
Google SpreadSheets are essentially..spread sheets. SpreadSheets consist of Worksheets, and each worksheets consist of ROWS and COLUMNS. Effectively, each Worksheet is like a Table in your database. The first ROW of the Worksheet will be the column names. Take a look at the worksheet below.

Essential , username, gender, contact_no and gender will be the column name. Since Google SpreadSheet allow us to do queried search on the spreadsheets, we can think of username as the primary key and we can base the query on it. If you need more tables, simply create more worksheet. If you need another database, create another spreadsheet. Thus, we can use a Spreadsheet to simulate a database. In the nutshell:
Spreadsheet -> Database
Worksheet -> Tables in Database
1st Row in Worksheet -> Defines the column names
Subsequent Rows in Worksheet -> Defines the rows in tables.
Queries Search -> Select Statements
Add Rows -> Insert Statment
Delete Rows -> Delete Statement
Update Rows -> Update Statement
The Good
Google SpreadSheet, as what Google mentioned, has the following features:
Upload from and save to your desktop
Edit anytime, from anywhere
Pick who can access your documents
Share changes in real time
Files are stored securely online
It’s FREE
Essentially, it means that the hosted “database” will be free, secure, and you will not need to install any client application except for your browser to access it. You can even create it on an excel sheet first, and then upload it online and transform it into your database.
You can access the spreadsheets via code by HTTP, as well as .NET, PHP, Java or Python API
The Bad
As this is not a real RDBMS, there is no real constrain. Unique keys has to be handled by code and constrains has to be verified at the code level. For simple applications like a simple Book-Ordering form, or Contact-Management form, this will work great. However, Google SpreadSheet will not be the way to go for larger CMS systems.
On top of that, you can easily change a column name on Google Spreadsheet. The ease of change also increase the changes of the developer mistakenly changing the columns in the main spreadsheet and thus breaking the application.
Security
Google SpreadSheet is not shared by default, so only you can edit it. You can also share it to other users as Collaborator or Viewers. This also means that your ‘database’ can be shared with our users for collaboration, but you can limit them to View-only so they cannot mess up your application by accident.

API Website
For documentation, code samples and how-to, visit http://code.google.com/apis/spreadsheets/overview.html
Summary
In short, Google SpreadSheet provides us with a simple and easy datastore for simple applications that needs a hosted database. Other formal alternatives includes Amazon’s SimpleDB, Google Apps Engine Datastore API, and Apache's CouchDB. Which one do you prefer and which one do you think is the more scalable solution? Do chip in!
Related Article: Top 10 Reasons to Avoid the SimpleDB Hype