I have a web application running over a MySQL database (in development). I'm considering to migrate my application to Google App Engine, and would like to better understand how my simple relational database model can be transformed to the non-relational approach.
I'm a long time relational database person, and I have no experience with column based DBs such as BigTable. Just in case Google also supports small deployments of relational databases, I would like to state that my question is general and not specific to Google - I would like to understand how simple relational models can be represented in non-relational DBs.
My database (simplified) is as follows:
Items Table
------------
ItemID ItemName ItemPriority
1 "Car" 7
2 "Table" 2
3 "Desk" 7
ItemProperties Table
---------------------
ItemID Property Importance
1 "Blue" 1
1 "Four Wheels" 2
1 "Sedan" 0
2 "Rectangular" 1
2 "One Leg" 1
I have many items, each with a name and ID. Each item has multiple properties, each property has several parameters (I only stated the name and "importance" of each property, but there are more). I have tens of millions of items, each has hundreds of properties.
The usage scenario: I receive an ItemName as input, look up its ID in the items table, and fetch all the properties by that id. I then perform some analysis on the list of properties (in memory), and return a result.
90% of the work is lookup based on a parameter, which (if I understand correctly) is the pain-point of non-relational DBs.
What is the recommended approach?