[mythtv] Channel Management Ideas and Plans

David Engel david at istwok.net
Tue Jan 29 02:25:40 UTC 2019


On Mon, Jan 28, 2019 at 09:54:35AM +0000, Gary Buhrmaster wrote:
> On Sun, Jan 27, 2019 at 9:09 PM David Engel <david at istwok.net> wrote:
> > Please provide comments or other suggestions here.
> 
> I am in transit to another location, so when this
> gets posted is unclear (next time wifi is close by).
> Anyway, I do have a few thoughts (surprise), even
> if I don't have time right at the moment to get
> everything written down I would like to have
> considered.  So this is just some immediate ideas.
> 
> First, I philosophically do not like duplicate data
> in tables.  One table is the authoritative table, or
> there are none (I don't have the ability to check
> if that is a direct rule of Codd while I am writing
> this, but it certainly is derivable from those rules).
> 
> The right answer for some of these issues is often
> what are called effective dated tables (with the
> additional of effective sequences for slightly more
> complex update scenarios).  That means every row
> has a date it starts to be valid.  So (using John's

I do just that with a database at work.  However, I think that's
overkill for MythTV and "the perfect is the enemy of the good."
Still, I will let it percolate for a while as this is not the first
part I expect to work ong.

> example of free promos for a limited time period),
> the row is currently marked with the last update
> date with no visibility.  There is an additional row
> marked as being visible with the effective date of
> (say) next Friday, and then there is another row
> marked as invisible on the Monday after.  At any
> date one can determine visibility, as there is a
> complete history and future for each row.  To use
> this table in many cases, one has to do what is
> called a correlated sub-query, looking for the row
> which is applicable for the date in question (often
> on multiple different tables at the same time using
> the appropriately dated rows for the query).  This
> means that the recordings on the promo channels
> will be scheduled only during the visible period.  It is
> an elegant solution to such requirements.  However,
> it has a couple of substantial problems.  First there
> is the likelihood that probably only a very small
> number of MythTV DB experts could write and
> understand such queries.  The second is that I am
> not sure the current state of the mysql optimizer
> performance on such selects and last I knew it
> performed badly (as I understand it, it is a hard
> problem in the general case (slightly over 20 years
> ago, Oracle, which at the time was generally
> considered to have one of the best query optimizers
> on the planet, could end up performing full table
> scans for certain correlated sub-queries for a
> very popular ERP solution.  Oracle fixed it when it
> was identified, but it was apparently not something
> trivial to get right, and the suggestion at the time
> was that it was a targeted fix identifying the specific
> type of correlated sub-query.)).
> 
> Since you are not likely going to effective date the
> tables (you need more than just a few experts on
> such things to be able to maintain such codes into
> the future), I would expect you will need to copy
> the data, and you should want 100% of the
> information you will want to present as part of the
> (old)recorded be copied.  That would include at
> least the channel name, number, channel icon, etc.
> since (at least for cable) channel 123 may have
> been ABC KABC today, but have been CBS KCBS
> last week, and you want the data presented to be
> valid for when the show was recorded.

For recorded, I'm almost completely in the option 3 camp now.  That is
to have a recordedchannel table.  We already have the precedents for
recordedprogram, et al and the code to populate and clean them up when
needed.

For oldrecorded, I'm still undecided.  I personally would be fine with
saying that anything beyonhd channem number, name and maybe icon
simply aren't there for uses where oldrecorded is the primary table.

David

> btw, the icon data is differently problematic.  It
> is not (currently) identified by videosource, so
> if one has multiple videosources, and the guide
> data provides channel icon names that are the
> same (perfectly possible, especially over time,
> and has the same effective dated challenges),
> you get collisions and incorrect over-writes.
> There are a couple of options that have occured
> to me (the easiest might be to prefix the icon
> file names with the videosource number and a
> date for uniqueness, but I think the more elegant
> solution is an icon blob table indexed by a uuid,
> which could be lazy trimmed when no references
> from the (old)recorded and channel tables exist).
> That might be a bridge (or db table) too far at
> the moment.
> 
> That is all I have time for right now (hope this
> makes it out to the ether at some point....)
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://lists.mythtv.org/mailman/listinfo/mythtv-dev
> http://wiki.mythtv.org/Mailing_List_etiquette
> MythTV Forums: https://forum.mythtv.org

-- 
David Engel
david at istwok.net


More information about the mythtv-dev mailing list