One promising emerging category of NoSQL databases is key-value stores. These include Redis (disk-backed), Riak, Aerospike and others. The problem I struggle with the most is the lack of joins.
Consider a weather application, which would need to store weather conditions for, say, every city in the US, with one record (forecast) each for every hour in the next two weeks. First, you'd need a list of cities, each with an associated state, zip code, coordinates and key. Then, a list of weather conditions, such as 'raining', 'sunny', 'snowing', etc. Then, a list of forecasts, each associated with a particular time and date, a particular city, and a particular weather condition (along with miscellaneous other information, like temperature, pollen count, UV, whatever else happens to be included in the forecast). The issue is the joins, connecting forecasts to cities and weather conditions, and necessary for fluid relationships between data.
I realize this is a somewhat simplified (yet contrived) example, but in basically any data management scenario the question remains. How do key-value stores deal with joins?
I do realize that Riak has link walking, which is functionally similar to a join, but the question remains.
When I say "deal with joins", I mean without Cassandra-like shameless replication to the point at which data happens to be organized in at least as many different ways as you want to access it
I would also be happy to hear of other databases that have solved this problem