Thread: Fwd: Re: Can I search for an array in csf?

Fwd: Re: Can I search for an array in csf?

From
Vernon Wu
Date:



Hi, Richard,

Thanks for your response and see below.

10/21/2002 3:13:57 AM, Richard Huxton <dev@archonet.com> wrote:

>On Friday 18 Oct 2002 1:58 pm, Vernon Wu wrote:
>> One field of a table stores an array of characters in a string fromat as
>> "a,b,c,d". Is anyway to apply a select statement without using stored
>> procedure?
>>
>> Thanks for your input.
>
>Not really,  and I can't think any way of accessing an index on this either. 
>Are you sure you wanted the characters stored this way? Even if the overhead 
>of a separate table isn't woth it, you might want to look into arrays and the 
>intarray stuff in contrib/
>

The reason I use this format for an array is that the array is dynamic. I have quite few cases of this type of
situation.The 
 
maximize length in some cases is known, is unknown in others. I have learnt the comment separated format is one way 
to solve the problem. Someone also suggested to store the array as an object. I am not sure whether it works or not. 
The application is written in Java, by the way.

I have taken a look at intarray by searching on the postgres.org web site as well as in google. (I use cypwin and
unable
 
to find the contrib directory). My impression is it isn't a standard SQL data type. And its element is integer only. 

It is my first time doing DB table design. Any helps will be gracfully appreciated.

Thanks,

Vernon
 

>-- 
>  Richard Huxton
>
>---------------------------(end of broadcast)---------------------------
>TIP 3: if posting/reading through Usenet, please send an appropriate
>subscribe-nomail command to majordomo@postgresql.org so that your
>message can get through to the mailing list cleanly
>


-------- End of forwarded message --------





Re: Fwd: Re: Can I search for an array in csf?

From
Josh Berkus
Date:
Vernon,

> >> One field of a table stores an array of characters in a string fromat as
> >> "a,b,c,d". Is anyway to apply a select statement without using stored
> >> procedure?

> The reason I use this format for an array is that the array is dynamic. I
have quite few cases of this type of situation. The
> maximize length in some cases is known, is unknown in others. I have learnt
the comment separated format is one way
> to solve the problem. Someone also suggested to store the array as an
object. I am not sure whether it works or not.
> The application is written in Java, by the way.

You should store this data in a sub-table linked through a foriegn key.
Period.   Messing with arrays will only lead you to heartache ...

Try the book "Database Design For Mere Mortals" for a primer on SQL DB design.

--
-Josh BerkusAglio Database SolutionsSan Francisco



Re: Fwd: Re: Can I search for an array in csf?

From
Achilleus Mantzios
Date:
On Mon, 21 Oct 2002, Vernon Wu wrote:

>
>
>
>
> Hi, Richard,
>
> Thanks for your response and see below.
>
> 10/21/2002 3:13:57 AM, Richard Huxton <dev@archonet.com> wrote:
>
> >On Friday 18 Oct 2002 1:58 pm, Vernon Wu wrote:
> >> One field of a table stores an array of characters in a string fromat as
> >> "a,b,c,d". Is anyway to apply a select statement without using stored
> >> procedure?
> >>
> >> Thanks for your input.
> >
> >Not really,  and I can't think any way of accessing an index on this either.
> >Are you sure you wanted the characters stored this way? Even if the overhead
> >of a separate table isn't woth it, you might want to look into arrays and the
> >intarray stuff in contrib/
> >
>
> The reason I use this format for an array is that the array is dynamic. I have quite few cases of this type of
situation.The
 
> maximize length in some cases is known, is unknown in others. I have learnt the comment separated format is one way
> to solve the problem. Someone also suggested to store the array as an object. I am not sure whether it works or not.
> The application is written in Java, by the way.
>
> I have taken a look at intarray by searching on the postgres.org web site as well as in google. (I use cypwin and
unable
> to find the contrib directory). My impression is it isn't a standard SQL data type. And its element is integer only.
>
> It is my first time doing DB table design. Any helps will be gracfully appreciated.

Well some comments, since i have done a lot of work with
arrays, postgresql and java.

Arrays are supported by the postgresql jdbc driver just fine.
Arrays can be of any valid builtin or user defined type.
Postgresql Arrays along with intarray package are ideal for
doing small set manipulations, where the design fits
the natural model of your data (e.g. storing the factors
of a polynomial formula).
It would be nice if you had yourself a crash course on
relational db design.
Also i would advise you compiling and running postgres
on a unix system.
Note that in order to compile the intarray package
you need to have the sources installed.

>
> Thanks,
>
> Vernon
>
>
>
> >--
> >  Richard Huxton
> >
> >---------------------------(end of broadcast)---------------------------
> >TIP 3: if posting/reading through Usenet, please send an appropriate
> >subscribe-nomail command to majordomo@postgresql.org so that your
> >message can get through to the mailing list cleanly
> >
>
>
> -------- End of forwarded message --------
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

==================================================================
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
Nikis 4, Glyfada
Athens 16610
Greece
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  achill@matrix.gatewaynet.com       mantzios@softlab.ece.ntua.gr



Re: Fwd: Re: Can I search for an array in csf?

From
Achilleus Mantzios
Date:
On Mon, 21 Oct 2002, Josh Berkus wrote:

>
> Vernon,
>
> > >> One field of a table stores an array of characters in a string fromat as
> > >> "a,b,c,d". Is anyway to apply a select statement without using stored
> > >> procedure?
>
> > The reason I use this format for an array is that the array is dynamic. I
> have quite few cases of this type of situation. The
> > maximize length in some cases is known, is unknown in others. I have learnt
> the comment separated format is one way
> > to solve the problem. Someone also suggested to store the array as an
> object. I am not sure whether it works or not.
> > The application is written in Java, by the way.
>
> You should store this data in a sub-table linked through a foriegn key.
> Period.   Messing with arrays will only lead you to heartache ...

It depends.
I can tell you of situations that doing it with child tables
will hurt performance really bad.
Its just a matter of complexity.

One of the apps we run over here, deals with bunker
analysis of the vessels of our fleet.

For each vessel there are 4 formulas that describe the parameters of
the consumption of fuel oil under some given conditions.

I have implemented this using arrays.
The app is written in J2EE.

On a dual xeon 2.2 GHz with 1 GB for postgres,
it takes about 900 miliseconds to compute
some statistics (average, std deviation,etc..)
of the consumption of all vessels (about 20 of them)
for a period of 3 years (the values are stored for each day).

Before going with the formulas, we had a rather
primitive scheme originated from the previous
cobol application, based on subtable look ups,
(and there was no serious computations involved
just table lookups).

I can tell you the performance boost was remarkable.

>
> Try the book "Database Design For Mere Mortals" for a primer on SQL DB design.
>
> --
> -Josh Berkus
>  Aglio Database Solutions
>  San Francisco
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>

==================================================================
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
Nikis 4, Glyfada
Athens 16610
Greece
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  achill@matrix.gatewaynet.com       mantzios@softlab.ece.ntua.gr



Re: Fwd: Re: Can I search for an array in csf?

From
Vernon Wu
Date:
Hi, Achilleus and Josh,

I know three ways to store dynamic array in DB: object, xml or csv, and sub-table. It seems to me there are some 
problems of using the first method in Java. I don't know how the third method work out. That is the reason I use the 
second method.

In my project, the simplest array type is an array of characters or user IDs. The complexest array is an array of data
type
 
of userid and another text field. All operations on the arrays are simple: either element look up, add or delete an
element.
 
Which method is the most suitable for those different operations.

Thanks very much for all your helps.

Vernon


Thanks for your information. See below.

10/22/2002 1:03:56 AM, Achilleus Mantzios <achill@matrix.gatewaynet.com> wrote:

>On Mon, 21 Oct 2002, Josh Berkus wrote:
>
>>
>> Vernon,
>>
>> > >> One field of a table stores an array of characters in a string fromat as
>> > >> "a,b,c,d". Is anyway to apply a select statement without using stored
>> > >> procedure?
>>
>> > The reason I use this format for an array is that the array is dynamic. I
>> have quite few cases of this type of situation. The
>> > maximize length in some cases is known, is unknown in others. I have learnt
>> the comment separated format is one way
>> > to solve the problem. Someone also suggested to store the array as an
>> object. I am not sure whether it works or not.
>> > The application is written in Java, by the way.
>>
>> You should store this data in a sub-table linked through a foriegn key.
>> Period.   Messing with arrays will only lead you to heartache ...
>
>It depends.
>I can tell you of situations that doing it with child tables
>will hurt performance really bad.
>Its just a matter of complexity.
>
>One of the apps we run over here, deals with bunker
>analysis of the vessels of our fleet.
>
>For each vessel there are 4 formulas that describe the parameters of
>the consumption of fuel oil under some given conditions.
>
>I have implemented this using arrays.
>The app is written in J2EE.
>
>On a dual xeon 2.2 GHz with 1 GB for postgres,
>it takes about 900 miliseconds to compute
>some statistics (average, std deviation,etc..)
>of the consumption of all vessels (about 20 of them)
>for a period of 3 years (the values are stored for each day).
>
>Before going with the formulas, we had a rather
>primitive scheme originated from the previous
>cobol application, based on subtable look ups,
>(and there was no serious computations involved
>just table lookups).
>
>I can tell you the performance boost was remarkable.
>
>>
>> Try the book "Database Design For Mere Mortals" for a primer on SQL DB design.
>>
>> --
>> -Josh Berkus
>>  Aglio Database Solutions
>>  San Francisco
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 5: Have you checked our extensive FAQ?
>>
>> http://www.postgresql.org/users-lounge/docs/faq.html
>>
>
>==================================================================
>Achilleus Mantzios
>S/W Engineer
>IT dept
>Dynacom Tankers Mngmt
>Nikis 4, Glyfada
>Athens 16610
>Greece
>tel:    +30-10-8981112
>fax:    +30-10-8981877
>email:  achill@matrix.gatewaynet.com
>        mantzios@softlab.ece.ntua.gr
>
>