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).

#2 Installation » [RESOLU] base de données - dossier data - mac / windows » 04/05/2010 11:22:02

lah
Réponses : 2

Bonjour,

Nous utilisons la release 8.4.

Est-il possible d'utiliser une base de données générée sous Mac sous Windows sans passer par le système de backup/restore ?
Un truc du style copier le dossier data depuis le Mac / coller dans Windows ...

Merci

#4 Re : Sécurité » base de données embarquée » 05/03/2010 13:23:03

lah

Savez-vous si il est possible de ne permettre cet accès au fichier qu'au seul utilisateur postgres (tant sous Windows que sous MacOsX) ?

#5 Re : Sécurité » base de données embarquée » 05/03/2010 12:42:05

lah

Bonjour,

C'est principalement le "côté TRUST" du pg_hba qui me pose question.

Si peu que l'on peut accéder à ce fichier, on peut accéder à la base de données .... non ?

#6 Sécurité » base de données embarquée » 05/03/2010 11:46:56

lah
Réponses : 7

Bonjour à toutes et à tous,

Nous développons une application embarquée (Windows et MacOsX)
Chaque "utilisateur" attaquerait, en local, sa propre base de données (PostgreSQL).

Pouvez-vous me dire comment nous pouvons protéger cette base de données ?

"Bétonner" les autorisations d'accès à une DB postgresql distante ... ok.
Mais en local ... ?

Pouvez-vous m'aider ?

Laurent

#7 Re : Optimisation » organisation de la base de données (8.4 / schémas) » 19/11/2009 10:45:07

lah

Je vous remercie, tous les deux, pour votre aide.

gleu a écrit :

(...)code applicatif qui risque de sérieusement se complexifier avec autant de schémas.(...)

c'est principalement pour cette raison que nous souhaitions vous poser la question.

gleu a écrit :

PostgreSQL pourra gérer autant de schémas sans perte de performance.

Impeccable.

#8 Re : Optimisation » organisation de la base de données (8.4 / schémas) » 13/11/2009 12:46:22

lah

(...) vous pourriez la clusteriser (...)
(...) bon candidat au partitionnement (...)

Cluster: dans notre cas, le verrou exclusif nous pose problème.
Partitionnement: peut-être bien, en effet. Même si la fin du dernier paragraphe de http://docs.postgresql.fr/8.4/ddl-partitioning.html

(...)Un partitionnement qui utilise ces techniques fonctionne assez bien jusqu'environ une centaine de partitions ; il est impensable de vouloir atteindre des milliers de partitions.

nous fait quelque peu hésiter.

Pouvez-vous, svp, me dire en quoi notre proposition de solution consistant à passer par les schémas ne vous semble ne pas être indiqué(e) ?
Nous aimerions savoir qu'elles sont les limites PostgreSQL quant à une telle utilisation de schémas.
Postgres peut-il gérer autant de schema qu’on a de documents (+- 2000) ?

Merci

#9 Re : Optimisation » organisation de la base de données (8.4 / schémas) » 12/11/2009 15:40:30

lah

Je vous remercie pour votre aide.

Marc Cousin a écrit :

Avez vous un explain analyze d'une requête posant problème ? (ainsi que les définitions des objets impliqués dans la requête) ?

La table:

CREATE TABLE sysindexterm
(
  sit_dicoitemid integer NOT NULL,
  sit_documentrecordid integer NOT NULL,
  sit_documentdescriptionid integer NOT NULL,
  sit_position smallint NOT NULL,
  sit_phrase bigint NOT NULL,
  sit_type smallint,
  CONSTRAINT sysindexterm_pkey PRIMARY KEY (sit_dicoitemid, sit_position, sit_documentrecordid, sit_documentdescriptionid, sit_phrase),
  CONSTRAINT "Ref_sysindexterm_to_dicoitem" FOREIGN KEY (sit_dicoitemid)
	  REFERENCES dicoitem (dci_id) MATCH SIMPLE
	  ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT "Ref_sysindexterm_to_sysindexphrase" FOREIGN KEY (sit_phrase)
	  REFERENCES sysindexphrase (sip_id) MATCH SIMPLE
	  ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
  OIDS=FALSE
);

CREATE INDEX sysindexterm_idx
  ON sysindexterm
  USING btree
  (sit_dicoitemid);

CREATE INDEX sysindexterm_idx1
  ON sysindexterm
  USING btree
  (sit_documentrecordid);

La table contient 27.000.000 de records

La query

select sit_documentrecordid from sysindexterm where sit_dicoitemid = 377

il trouve 70000 hits en 43 secondes

L'explain

"Bitmap Heap Scan on sysindexterm  (cost=1427.29..146791.02 rows=75893 width=4)"
"  Recheck Cond: (sit_dicoitemid = 377)"
"  ->  Bitmap Index Scan on sysindexterm_idx  (cost=0.00..1408.32 rows=75893 width=0)"
"        Index Cond: (sit_dicoitemid = 377)"

Laurent

#10 Re : Optimisation » organisation de la base de données (8.4 / schémas) » 12/11/2009 13:04:13

lah
Marc Cousin a écrit :

- vous avez un index de mots. Pourquoi ne pas avoir utilisé l'index full text de postgresql ? Il sera infiniment plus rapide que tout ce que vous pourrez proposer : http://docs.postgresql.fr/8.4/textsearch.html

Nous l’avons essayé, les résultats n’étaient pas si bons que ça… de plus certains opérateurs manquent à l’appel (proximité, proximité ordonnée, …)

Marc Cousin a écrit :

- y a t'il une raison fonctionnelle à éclater le document en centaines de record ? (c'est probablement ça qui vous coûte le plus)

Oui, pour des raisons conceptuelles nous devons pouvoir accéder directement à chaque ligne du document. Ceci ne peut pas être remis en cause.

Merci

#11 Re : Optimisation » organisation de la base de données (8.4 / schémas) » 12/11/2009 12:20:24

lah

Bonjour,
En fait cette base de données nous sert à stocker des documents.
Chaque ligne texte d'un document étant un record dans une table.
Nous avons +- 800 documents représentant +- 5.000.000 de lignes (donc de records) - ceci pourra augmenter pas mal à l'avenir.
Une de ces tables contient aussi toutes les occurences des mots présents (en gardant le record dans lequel ils se trouvent,
leur position etc...). Cette table represente actuellement +- 30.000.000 de records.
Nous avons constaté que les queries dans ces grosses tables consomment un peu de temps (de l'ordre de 10 à 30 sec) ce qui est trop pour notre logiciel.
Vu que nos recherches se limitent document par document, nous avions pensé à splitter ces tables verticalement et donc d'avoir une occurence de chaque table par document (dans un schema par exemple) ceci réduirait donc la taille des tables et aussi les temps des queries (nous avons essayé avec de plus petites tables, les temps sont meilleurs ( < 200 ms).

Notre question est donc double:
- est-ce que postgres ne pose pas de problème avec notre solution (donc avoir 800 schema ou plus) ?
- peut-être existe-t-il une meilleure solution que celle à laquelle nous avons pensé.

Merci

#12 Optimisation » organisation de la base de données (8.4 / schémas) » 12/11/2009 12:06:27

lah
Réponses : 10

Bonjour à toutes et à tous,

Nous utilisons la version 8.4.

Nous avons une base de données de près de 140 tables.
5 d'entre elles contiennent un peu plus de 30 millions d'enregistrements.
Elles consistent en une liste de records représentant des lignes de documents (+- 800 documents)

A ce jour nous n'utilisons qu'un schéma (public).

Conceptuellement, nous pourrions créer + ou - 800 schémas (un par document) qui reprendraient, chacun, une définition de ces 5 tables plus importantes.
Nos requêtes les plus gourmandes s'adresseraient à un et un seul de ces schémas (dont les tables ne contiendraient plus 30 millions de records mais 40 000).

Pensez-vous que l'idée est bonne ou est-ce que nous allons nous heurter à l'un ou l'autre problème, à l'une autre ou l'autre limitation ?

Je vous remercie pour votre aide,

Laurent

Pied de page des forums

Propulsé par FluxBB