Search Postgresql Archives

Re: DB Design Advice

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Aug 21, 2009 at 12:50 AM,
stoneg64@xxxxxxxxxx<stoneg64@xxxxxxxxxx> wrote:
> Hey all,
>
> My company is designing a database in which we intend to store data for
> several customers.  We are trying to decide if,
>
> A:  we want to store all customer data in one set of tables with customer_id
> fields separating the data or,
> B:  storing each customers data in a separate schema.
>
> I'd like to get some opinions on the pros and cons of these methods
> concerning maintainability, scalability, and performance.

The schema approach works really well. In cases where you can do this,
I greatly prefer it over the build in table partitioning features.
Some tips:

*) You only have to define functions once.  As long as you don't
schema qualify tables in function definitions, you can have your
pl/sql and pl/pgsql functions 'float' over the schema.  Just be
prepared to regenerate the plans if you change the search path.

but,
*) Views must be added for each schema

*) Queries joining against multiple companies are a pain.  In cases
where you must do this, make views in the public schema with lots of
'UNION ALL'.

*) Make helper functions in dynamic pl/pgsql so you can do things like
apply ddl to multiple schemas and rig a 'grant all in schema' if
necessary.

*) If you are managing huge numbers of schemas, you can use
tablespaces to divide up the database into different filesystems.

merlin

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux