Thread: Arrays Design Question

Arrays Design Question

From
Achilleus Mantzios
Date:
Hi,
i am wondering about what could be the best design practice regarding 
performance for the following problem:
I want to store the factors of a linear formula of unknown degree (but less 
than 10) in a table for online stats/graphs on historical data (about 200 Mb).
I am thinking of
a) Store each formula as a float8[] array and then write a pgsql function in C
to compute the result given the value of variable x.
b) Add 10 columns of type float8 and store 0 values where the position of the 
column exceeds the degree of the formula.

The array implementation seems more simple and more neat since it has no 
assumptions about the maximal degree, but it is not standard SQL,
the JDBC might have problems with array types, and i dont know the performance
implications.

Could some one please give a point to read about arrays implementation in 
postgresql, their performance, accessing arrays from server pgsql C 
functions??

Thanx

-- 
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  it@dynacomtm.com       rnd@gatewaynet.com



Re: Arrays Design Question

From
"Josh Berkus"
Date:
Achilleus ,

> performance for the following problem:
> I want to store the factors of a linear formula of unknown degree
>  (but less 
> than 10) in a table for online stats/graphs on historical data (about
>  200 Mb).
> I am thinking of
> a) Store each formula as a float8[] array and then write a pgsql
>  function in C
> to compute the result given the value of variable x.
> b) Add 10 columns of type float8 and store 0 values where the
>  position of the 
> column exceeds the degree of the formula.

BOTH of the above are poor approaches that will lead to headaches foryou later on.  Instead:

c. Store each formula in a column in another table with a parent-childrelationship to your main table, i.e.

online_stats                           stat_formulas
---------------                           ------------------
online_stat_id ------------->online_stat_id                                                formula_number
                                formula
 

This is basic relational database design.  You should probably pick upa copy of "Relational Database Design for Mere
Mortals" before youget yourself into a real mess ...
 

-Josh Berkus


Re: Arrays Design Question

From
Achilleus Mantzios
Date:
On Wednesday 27 March 2002 09:09, you wrote:
> Achilleus ,
>
> > performance for the following problem:
> > I want to store the factors of a linear formula of unknown degree
> >  (but less
> > than 10) in a table for online stats/graphs on historical data (about
> >  200 Mb).                       ^^^
Dear josh "for" does not mean "in".

> > I am thinking of
> > a) Store each formula as a float8[] array and then write a pgsql
> >  function in C
> > to compute the result given the value of variable x.

Average performer.

> > b) Add 10 columns of type float8 and store 0 values where the
> >  position of the
> > column exceeds the degree of the formula.
>

Worst performer.

The best performer is do the calculations in java using the "arrays" way.
(BTW pgsql Arrays are hated and used by everone it seems)

> BOTH of the above are poor approaches that will lead to headaches for
> you later on.  Instead:
>
> c. Store each formula in a column in another table with a parent-child
          ^^^^ ^^^^^^^    ^ ^^^^^^

That was the question actually.


> relationship to your main table, i.e.
>
> online_stats                                 stat_formulas
> ---------------                           ------------------
> online_stat_id         ------------->      online_stat_id
>                       formula_number
>                           formula
>
> This is basic relational database design.  You should probably pick up
> a copy of "Relational Database Design for Mere Mortals"  before you
> get yourself into a real mess ...
>
> -Josh Berkus

How did you conclude i was about to store the formulae in the stats table?
Is my English that bad?
:))

-- 
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  it@dynacomtm.com       rnd@gatewaynet.com