We are using the YouTube API to gather data from python code requests to the API. We have the UI concept down, the UI design concept down, info graphs explaining the concept etc. Once you see those things everything will make much more sense for what the end goal is (a website). If you think you can handle the following, let me know. We will speak and if we're a good fit we will proceed. We have a team chat for this project which you will be invited to afterwards.
Application (or data model)
The database schema, for example, for the channels table, should be defined after the json response from the YouTube API call. Along with additive data fields that are not included in the json response. This is the reason the database is needed in the first place. Data about change over time doesnt exist in the YouTube data api, and must be recorded and stored in a proprietary database. Some superfluous fields from the json possibly may not be required in the schema. The requirements are defined by the user interface, and application. The application is responsible for populating an existing database schema with values. It might say "everyday, starting at 12am, start updating the database (for the reason of being able to know something such as the current daily view count.)" The application will call YouTube, and update each database record accordingly. With an intermediate step; an algorithm to produce or update additive data, such as things related to change over time (like current view counts.)
I imagine that there should be a table for region codes, where each region has a "channels" relation (the reason for this structure is that it is defined by the YouTube api; a regional code is the predicate for a search on channels ordered by view counts.) The "channels" related to a region: should be a database relation to the specific (defined by region code) table of channels, from which, values will be populated by the correspondent json returned by a YouTube API call (made through the application.) For each region, then, there is a set of channels. That way, if the user selects a country, we have the channels for that "region" on hand, along with the required data (each channel record should have its (defined by the json) included in the schema.) On this, the "channels, by region, ordered by top view counts (as defined by the YouTube API,) is variable dependent on time. The top 500 today, may not be the same top 500 tomorrow. Therefore, for each region, if the view (UI) is intended to display the top 500, the database should keep the top 600 (the number here is arbitrary, and only intended to show that an overflow of channels should be stored in the database so that the expected data exists if it specifically becomes required in the future (the relative position of two channels changes, altering the contents of the list such that a new member (channel) is introduced to the set (channels to be displayed), and one is removed)).
It seems that simply querying the database on demand, would be the most straightforward, and optimized procedure.
We don't know much about databases, this is why we are looking for you to help. If anything seems vague that is because it probably is. If you think you can help, reply or DM me.