Re: Live sort-of-'warehousing' database how-to?

From: "Igor Neyman" <ineyman(at)perceptron(dot)com>
To: "Mario Splivalo" <mario(dot)splivalo(at)megafon(dot)hr>, <pgsql-admin(at)postgresql(dot)org>
Subject: Re: Live sort-of-'warehousing' database how-to?
Date: 2010-03-31 19:16:45
Message-ID: F4C27E77F7A33E4CA98C19A9DC6722A205C1872B@EXCHANGE.corp.perceptron.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

> -----Original Message-----
> From: Mario Splivalo [mailto:mario(dot)splivalo(at)megafon(dot)hr]
> Sent: Wednesday, March 31, 2010 10:20 AM
> To: pgsql-admin(at)postgresql(dot)org
> Subject: Live sort-of-'warehousing' database how-to?
>
> Suppose I have 'stupid' database with just one tables, like this:
>
> CREATE TABLE messages (
> message_id uuid NOT NULL PRIMARY KEY,
> message_time_created timestamp with time zone NOT NULL,
> message_phone_number character varying NOT NULL,
> message_state type_some_state_enum NOT NULL,
> message_value numeric(10,4)
> )
>
> Now, let's say that I end up with around 1.000.000 records
> each week. I actually need just last week or two worth of
> data for the whole system to function normaly.
>
> But, sometimes I do need to peek into 'messages' for some old
> message, let's say a year old.
>
> So I would like to keep 'running' messages on the 'main'
> server, and keep there a month worth of data. On the
> 'auxiliary' server I'd like to keep all the data. (Messages
> on the 'auxiliary' server are in the final state, no change
> to that data will ever be made).
>
> Is there a solution to achieve something like that. It is
> fairly easy to implement something like
>
> INSERT INTO auxilary.database.messages
> SELECT * FROM main.database.messagaes
> WHERE message_id NOT IN (SELECT message_id FROM
> auxilary.database.messages....)
>
> using python/dblink or something like that. But, is there
> already a solution that would do something like that?
>
> Or is there a better way to achieve desired functionality?
>
> Mike
>

Partition your MESSAGES table by week or month (read on table
partitioning in PG docs).

Pg_dump "old" purtitions from "current" server, when they are not needed
any more.
Move backups of dumped partitions to your "auxilary" server, and
pg_restore them there.

Igor Neyman

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Scott Carey 2010-03-31 20:37:15 Re: Database size growing over time and leads to performance impact
Previous Message Greg Smith 2010-03-31 16:47:38 Re: Migrate postgres to newer hardware