database volumineuse

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

database volumineuse

Florent
Bonjour à tous,

Lors de l'exécution de mes requêtes sql, une requête permettant d'associer des altitudes à des portions de route "freeze" l'ordinateur et m'oblige à arrêter le processus.

Sous linux des alertes de mémoire sont affichées, et je remplis la totalité du fichier de travail.

Le fichier database.mv.db fais plus de 45Go, ce qui me semble franchement anormale mais je ne sais pas comment réduire le volume de ce fichier? je n'ai pas l'impression que la fonction drop table le permette.

Pouvez-vous m'indiquer un lien où je pourrai trouver des informations théoriques sur le fonctionnement de la database?

Merci à vous,

je vous souhaite une bonne journée.

Florent
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: database volumineuse

Nicolas F.
Administrator
Bonjour,

Oui c'est un problème récurant avec H2 et MVStore. Thomas Mueller travail sur ce problème. Un des post traitant de ce sujet:

https://groups.google.com/forum/#!topic/h2-database/dqONbAmK9-M

Il faut essayer de conserver une version à jour de OrbisGIS (télécharger chaque lundi par exemple).

MVStore (l'algorithme de stockage de la bdd) est en beta-version et est la méthode par défaut.

 Il est possible d'utiliser l'ancien algorithme de stockage (pagestore) en créant un nouveau workspace tout en modifiant l'url de connexion:
jdbc:h2:/home/user/workspace/database;DB_CLOSE_DELAY=30;MV_STORE=FALSE

http://www.h2database.com/html/mvstore.html#storageEngine

Cordialement,

--
Nicolas Fortin
IRSTV FR CNRS 2488
GIS        http://orbisgis.org
Spatial DB http://h2gis.org
Noise      http://noisemap.orbisgis.org
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: database volumineuse

Florent
Merci de l'info, j

j'ai utilisé l'ancien algorithme mais la requête a problème ne s'exécute pas, l'erreur affichée est : Stream Closed"; "/home/staghymu/test/database.h2.db" et la base de données fait 26,5 Go. je continue la lecture des liens.

Il y a t'il un moyen de rediriger le résultat de cette requête spécifique vers une autre base de donnée et faire une connexion entre les deux résultats?

Je vous souhaite un bon appétit.

Florent
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: database volumineuse

Nicolas F.
Administrator

Avec MVStore il est également possible d’appeler la command SQL suivante pour reconstuire la base de données afin qu’elle prenne moins de place:


SHUTDOWN DEFRAG;

Cordialement,

-- 
Nicolas Fortin IRSTV FR CNRS 2488 GIS http://orbisgis.org Spatial DB http://h2gis.org Noise http://noisemap.orbisgis.org

Le 2015-03-18 12:01, Florent [via OrbisGIS] a écrit :

Merci de l'info, j

j'ai utilisé l'ancien algorithme mais la requête a problème ne s'exécute pas, l'erreur affichée est : Stream Closed"; "/home/staghymu/test/database.h2.db" et la base de données fait 26,5 Go. je continue la lecture des liens.

Il y a t'il un moyen de rediriger le résultat de cette requête spécifique vers une autre base de donnée et faire une connexion entre les deux résultats?

Je vous souhaite un bon appétit.

Florent

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: database volumineuse

Florent
Bonjour à tous,

Je reviens vers vous suite à ma demande d'hier, je me suis mal exprimé dans mes posts.

Le fichier database dépasse bien les 30 Go mais c'est seulement suite à l'exécution d'une requête :

create table parcel_fil_1 as select a.IDOBJ, a.gravity_center, a.gravity_z, a.NUMFIL, a.fil_geom, ST_UPDATEZ(a.projection, b.alti) as projection from parcel_fil a, MNT_ZONE_QB_POINT_SELECTION b;

cette requête permet (normalement) d'attribuer des altitudes à des point qui sont les projections des centres de gravité des parcelles (calculé par rapport au bâtiment le plus imposant sur la parcelle) sur la route la plus proche.

la projection est faite antérieurement mais la requête d'attribution des altitudes augmentent la taille de la database jusqu’à saturation. je me demande si l'erreur vient de la requête?

Merci à vous
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: database volumineuse

Gwendall Petit
Administrator
Bonjour Florent,

Le problème vient très probablement de ta requête.

Ici tu cherches à joindre deux tables sans avoir de champs commun. Donc en gros tu es en train de faire un produit cartésien de tes deux tables ... ce qui potentiellement peu générer une table assez monstrueuse en terme de nombre de ligne (d'ou les 30Go ou plus).

Lorsque tu fais ta jointure (entre les deux tables) il faut que tu trouves le moyen de définir une correspondance entre les deux tables :
- soit via un champ commun --> jointure attributaire (ex "WHERE a.PK=b.PK")
- soit via une opération spatiale --> jointure spatiale (ex "WHERE ST_Contains(a.THE_GEOM, b.THE_GEOM)")

Cordialement,

Gwendall
Loading...