Thread: Fwd: Re: Can I search for an array in csf?
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 --------
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
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
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
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 > >