Queries under the hood
In the previous two chapters, we learned that datastore is built on top of BigTable. We also learned the BigTable operations. You may recall from our discussion in the third chapter on BigTable that while reading data from BigTable, operations fetch either a row whose key is known, or a set of rows by using a starting and ending key, which is also known as a range scan. We also learned that the rows in BigTable are always stored sorted in the lexicographic order of the row keys. Hence, scanning the range is very efficient because all the rows are consecutive on the disk.
You'll also recall that our entities are stored as rows in BigTable, with all the properties serialized into a single column. Now, we have a situation where all the properties end up in a single BigTable column and on top of that, the only operations that are available are fetching a single row by key or a range of rows by giving a starting and an ending key range.
So, when this is how data is...