On Fri, Apr 4, 2014 at 3:15 PM, Itamar Heim <iheim@redhat.com> wrote:
On 04/04/2014 04:30 AM, Liran Zelkha wrote:



On Thu, Apr 3, 2014 at 8:40 PM, Gilad Chaplik <gchaplik@redhat.com
<mailto:gchaplik@redhat.com>> wrote:

    ----- Original Message -----
     > From: "Liran Zelkha" <liran.zelkha@gmail.com
    <mailto:liran.zelkha@gmail.com>>
     > To: "Gilad Chaplik" <gchaplik@redhat.com
    <mailto:gchaplik@redhat.com>>
     > Cc: "Omer Frenkel" <ofrenkel@redhat.com
    <mailto:ofrenkel@redhat.com>>, "Eli Mesika" <emesika@redhat.com
    <mailto:emesika@redhat.com>>, "engine-devel" <engine-devel@ovirt.org
    <mailto:engine-devel@ovirt.org>>,
     > devel@linode01.ovirt.org <mailto:devel@linode01.ovirt.org>
     > Sent: Thursday, April 3, 2014 7:51:39 PM
     > Subject: Re: [Engine-devel] vds_dynamic refactor
     >
     > On Thu, Apr 3, 2014 at 5:33 PM, Gilad Chaplik
    <gchaplik@redhat.com <mailto:gchaplik@redhat.com>> wrote:
     >
     > > *From: *"Liran Zelkha" <liran.zelkha@gmail.com
    <mailto:liran.zelkha@gmail.com>>

     > > *To: *"Gilad Chaplik" <gchaplik@redhat.com
    <mailto:gchaplik@redhat.com>>

     > > *Cc: *"Omer Frenkel" <ofrenkel@redhat.com
    <mailto:ofrenkel@redhat.com>>, "Eli Mesika" <
     > > emesika@redhat.com <mailto:emesika@redhat.com>>, "engine-devel"
    <engine-devel@ovirt.org <mailto:engine-devel@ovirt.org>>

     > > *Sent: *Thursday, April 3, 2014 5:27:56 PM
     > > *Subject: *Re: [Engine-devel] vds_dynamic refactor
     > >
     > > True but that's no reason to have a bad schema
     > >
     > > I'm open to new ideas and truly want to understand what is bad?
     > >
     > The problem is with both updates and selects.
     > For selects - to get all the information for the VDS we have multiple
     > joins. Adding another one will hurt performance even more.

    What about creating the VDS list in the db. i.e. your patch [1]
    about constructing VDS objects in the engine, should occur in the db
    within a SP, and should be transparent to the server. that will
    solve the multiple table join.


The joins are happening on the server. We have a VDS view that brings in
information from many tables and we retrieve rows from it all the time.
Just run an explain on a select * from vds and see for yourself.

thought the distinction was vds_static is updated by user (configuration), where as vds_dyanmic/statistics is reported from vdsm (slow/fast updates).

True - vds_static hardly change. But vds_dynamic is split-brain - it has practically static data, but also has the status - which changes rapidly. And since we have 3 tables, we need to do 3 joins to get VDS (actually we do much more). 
 
please remember joining them to one table, also means DWH will ETA all of data each time. today it will only copy statistics if dynamic did not change.

I'm not saying joining all 3 tables to 1 table, just make them 2 tables. And since the data is hardly changing - same logic of DWH will stay.