PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 28/11/2018 11:00:44

yves31
Membre

1 database par instance ou plusieurs database par instance ?

Bonjour,

dans le cadre de la création d'un logiciel modulaire où chaque module pourra disposer de sa propre base de données, je me pose la question suivante : l'instance PostgreSQL (<=> le contenu de PGDATA) est-elle plutôt conçue de telle manière à ce que :
- alternative 1: elle stocke toutes les database logiques (1 PGDATA => plusieurs CREATE DATABASE) de mes modules ?
- alternative 2: elle ne stocke qu'une seule database de module à la fois (1 PGDATA => 1 seule CREATE DATABASE) ? (ce qui signifierait que j'aurais autant de PGDATA que de modules)

L'alternative 2 me semble être une énormité mais je ne veux pas me fier "que" à mon instinct et je souhaite avoir votre avis.

Merci d'avance pour vos avis éclairés et bienveillants !

Hors ligne

#2 28/11/2018 12:00:15

rjuju
Administrateur

Re : 1 database par instance ou plusieurs database par instance ?

Bonjour,

Si chaque module a sa propre base de donnée, cela veut dire que vous ne pourrez pas avoir de cohérence (que cela soit clé étrangère, requête voyant les données à un même instant ou même faire une requête entre les données de plusieurs modules) entre plusieurs modules.  Ne connaissant pas votre logiciel, je ne sais pas si cela a du sens ou non.


Pour répondre à votre question, il s'agit plutôt de considérations de maintenance (une sauvegarde binaire sauvegardera toutes les bases par exemple, et une restauration binaire restaurera toutes les bases), ou de gestion des ressources (chaque instance aura son propre shared_buffers, son propre nombre de connexion etc etc).

Hors ligne

#3 28/11/2018 12:34:13

yves31
Membre

Re : 1 database par instance ou plusieurs database par instance ?

Merci beaucoup pour cet avis éclairé.

En ce qui concerne mon contexte:
- certains modules seront très sollicités en terme de charge/d'accès à la base, d'autres moins
- certains modules ne disposeront pas de PostgreSQL mais d'autres SGBD NoSQL plus adaptés au besoin métier
- les modules seront fonctionnellement distincts mais auront à la marge certaines données liées entre elles. La cohérence entre les modules sera garantie par un MOM (Kafka) qui transmettra les informations de maj entre les modules.

Pour tous les modules avec une base PostgreSQL, il est donc effectivement envisageable :
- soit d'utiliser un schéma par module au sein d'une unique database dans une unique instance PostgreSQL,
- soit d'utiliser une base par module au sein d'une unique database dans une unique instance PostgreSQL,
- soit d'utiliser une base par instance => autant d'instances que de modules

Hors ligne

Pied de page des forums