On 4/13/15 6:21 AM, Anil Menon wrote:
In addition to all these comments

- If you use multiple databases, if you want to keep some "common"
tables (example counties_Table, My_company_details), its going to be a pain
- if you want to access tables across databases - you might need to
start using FDWs (which is going to be a administrative pain - syncing
passwords and stuff)
- you could set up security easier with multiple schemas - example userA
can only use schema A and no access to other schemas

Please don't top-post.

On Mon, Apr 13, 2015 at 4:48 PM, Pavel Stehule <pavel.steh...@gmail.com
<mailto:pavel.steh...@gmail.com>> wrote:



    2015-04-13 10:43 GMT+02:00 Albe Laurenz <laurenz.a...@wien.gv.at
    <mailto:laurenz.a...@wien.gv.at>>:

        Michael Cheung wrote:
        > I have many similar database to store data for every customer.
        > Structure of database is almost the same.
        > As I use same application to control all these data, so I can only use
        > one database user to connect to these database.
        > And I have no needs to query table for different customer together.
        >
        > I wonder which I should use, different shema or different database to 
store data?
        >
        > I 'd like to know the advantage and disadvantage for using schema or 
database.

        In addition to what others have said:

        If you use multiple schemas within one database, the danger is
        greater that
        data are written to or read from the wrong schema if your
        application has a bug
        ans does not make sure to always set search_path or qualify
        every access with a
        schema name.

        With multiple databases you are guaranteed not to access data
        from a different
        database.

        The main downside that I see to multiple databases is the
        overhead: each of
        the databases will have its own pg_catalog tables.


    It can be advantage - if your schema is pretty complex - thousands
    procedures, tables, then separate pg_catalog can be better - there
    are issues with pg_dump, pg_restore.

    So it depends on catalog size and complexity.

Two things no one has mentioned. First, you could also use row-level security. If you plan on each customer having a fairly small amount of data, this is by far your most efficient option. Anything else will result in either huge catalogs or a lot of wasted catalog space.

Second, if you do per-database, that makes it trivial to scale across multiple servers.

Regarding backups; you can easily do partial either way with pg_dump; there's really no difference. You can't do partial with PITR, but that's true for both schema and database.
--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com


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

Reply via email to