[Haskell-cafe] relational data representation in memory using
marco-oweber at gmx.de
Thu May 22 07:25:07 EDT 2008
On Thu, May 22, 2008 at 12:48:42PM +0200, Salvatore Insalaco wrote:
> 2008/5/22 Marc Weber <marco-oweber at gmx.de>:
> > So in haskell it would look like this:
> > let updatedCd = 0x22 CD (0x6 "My song") (0x20 ( 0x23 : ...)
> > updatedTrack = 0x23 Track ( 0x21 "updated track title" ) 0x22
> > in (0x27) DB (0x24 (updatedCd:otherCds)) (0x25 (updatedTrack:otherTracks))
> Mmmm I don't think that this is a good way to go.
> Let me do a counter-example:
> data A = A String
> data B = B String [A]
> data C = C String [B]
> data D = D String [C]
> A little change like changing the String in A requires updating the whole "DB".
You're right. Very bad idea unless you only insert once a year and only
have queries the whole day.
The only way to fix this is by separating relational data from record
> data A = Map RecordDataA RelationalDataA
> data B = Map RecordDataB RelationalDataB
So when changing a field in RecordDataA only the relational data B would
have to be updated.. but I see that that's not that good either.
Fine. Then the only way to go is using uniq ids as keys the way it's
already done everywhere
More information about the Haskell-Cafe