Azure table storage and Google Appengine datastore are both no-sql key-value datastores. Google appengine indexes data on each of the columns so that you can do fast WHERE queries on each of the data column variable. E.g., lets say I am inserting data with following columns:
Date Author Book Reviews
Google appengine will go ahead and index data on each of these columns so that following queries are fast:
- get all rows WHERE Date == something
- get all rows WHERE Author == someone
- get all rows WHERE Book == title
- get all rows WHERE Reviews >= 4
but it looks like azure table storage does not index data on all the columns. It seems to index only the {partition key, row key} combination. Is that correct? This seems to be a significant shortcoming compared to google's datastore. Why this design? Here is a workaround I found.
You are correct that PartionKey and RolWey values are the only two indexed properties. As you mentioned, you can work around this limitation. Please see intra-partition secondary index pattern and inter-partition secondary index pattern in the following MSDN article for more details: https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/. The article also contains all you need to know about the Azure Table.
If you want to discuss more about the table design, you can drop us an email at [email protected].