Re: EAV or not to EAV?

From: Jeff Davis <pgsql(at)j-davis(dot)com>
To: Reg Me Please <regmeplease(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: EAV or not to EAV?
Date: 2007-11-25 18:01:29
Message-ID: 1196013689.24251.342.camel@jdavis
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin pgsql-general

On Thu, 2007-11-22 at 09:48 +0100, Reg Me Please wrote:
> I have to take into account the update history of every single
> field into a number of tables.
> Those updates can come to the future (next values) but also to the
> past (history fix) and apply only to some fields, usually not to the
> entire record.
> Every lookup in those tables is always related to a timestamp that
> normally is the current timestamp, but can also be a past timestamp.
>
> I've come up with a "traditionally regretted" EAV design with the add of
> timestamps for the history. And the related problems, some of which have
> been solved by Joe Conways's crosstab contrib.

Here are two more ideas:

1) Vertically partition the tables so that each field you want to track
is in its own table, and then track the history of those individual
tables. Then join the tables on a key that doesn't change when you need
to see the whole table. This works well if you only have a few non-key
fields per table.

2) Store a normal history, but also store a bitmap of the fields that
change in each record. You might use partial indexes to be able to
quickly select only those records where a certain field has changed.

EAV will give you many problems down the line, and I don't think it will
solve anything for you.

Regards,
Jeff Davis

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Tom Lane 2007-11-25 18:02:56 Re: pg_start_backup without WAL archiving
Previous Message Никоноров Григорий 2007-11-25 17:39:28 Re: Error while compiling PostgreSQL with Java

Browse pgsql-general by date

  From Date Subject
Next Message Stefan Kaltenbrunner 2007-11-25 18:08:44 Re: Error while compiling PostgreSQL with Java
Previous Message Ivan Sergio Borgonovo 2007-11-25 17:39:32 \copy ... with null as '' csv doesn't get nulls