Re: DB Design Advice
От | Merlin Moncure |
---|---|
Тема | Re: DB Design Advice |
Дата | |
Msg-id | b42b73150908210757x6ff6ed0bw169ed11d6db0d72a@mail.gmail.com обсуждение исходный текст |
Ответ на | DB Design Advice ("stoneg64@excite.com" <stoneg64@excite.com>) |
Список | pgsql-general |
On Fri, Aug 21, 2009 at 12:50 AM, stoneg64@excite.com<stoneg64@excite.com> 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
В списке pgsql-general по дате отправления: