Edit: it is now visible that each user has different weather data. Saving "general data" in the answer, but you are interested in the second case.
Users share weather data
Based on, say, their nearest weather station identifier.
I would save the table (userId, stationId, isActive, isPreferred) to find out what data the user is interested in, and then I ran a query from stationWeatherData to get 90 rows of meteorological data for this station.
Each user has their own weather data.
There should be no particular problems handling 900 million users. If you really needed to, you could beware in different tables based on userId, for example, the weather174 table will contain data for all users for which (userId% 1000) gives 174, and you would end up with 1000 tables - perhaps on different servers - one thousandth of a size.
So, you start with one big table and get ready for a splinter (or move to the cloud storage and the keystore database without SQL, for example MongoDB, VoltDB). Or a section based on UserID, as soon as the UserID reaches, say, a million.
Or even, you do not use the database at all. The database makes sense if you need to search or map / join data - here you just get access to the user’s “weather station”.
If you know that you will never ask “How many users have 60% humidity?”, But always only “What data does the user have 1234567?”, Then you can save the data in the buffer format in binary format, JSON or HTML (in the cloud) storage, S3 or even MongoDB - now only one document for each user). Much will then depend on how the data to be updated arrives, i.e. In one large batch from a hub or each user downloading their own.