Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Thu 21 October 2010 10:57
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
historique de modifications de la BDD
Bonjour,
Je souhaite migrer prochainement la BDD de notre SIG (actuellement sur Géoconcept uniquement) vers un SGBDR, pour gérer notamment l'historique de modifications, et créer une interface pour faciliter la gestion de la base par des utilisateurs novices.
Je pense me tourner vers une base Access ou Postgre. Ces SGBDR reponderont-ils à mes attentes.
Par avance merci,
Hors ligne
#2 Thu 21 October 2010 11:07
Re: historique de modifications de la BDD
Bonjour,
Concernant PostGIS tu peux faire des triggers qui vont gérer l'historique des modifications. L'idée est la suivante :
1. ta table contient un champ timestamp (nommé update_date), un champ update_by si tu veux savoir quoi, éventuellement un champ update_fields et un champ actif (booléen)
2. tu écris des triggers qui vont reécrire tes requêtes UPDATE. Celui-ci va dans un premier temps désactiver la vielle ligne (actif = false) puis reécrire la requête UPDATE en requête INSERT
3. Même chose pour les requêtes DELETE qui vont seulement faire un update sur le champ actif = false.
Autre solution : avoir une deuxième table archive qui va être mise à jour avant chaque mise à jour/suppression des lignes pour copier les lignes modifiées/supprimées.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Thu 21 October 2010 12:08
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: historique de modifications de la BDD
Ok, merci de la réponse. Pour créer une interface Postgresql/postgis voila ce que j'ai trouvé sur wikipédia
Des interfaces existent aux niveaux pilote et graphique :
* Java : pilotes JDBC/JDO,
* PHP : phpPgAdmin (interface web d'administration), pgAdmin (application)
* Python : Psycopgzsql/PyGRes (pilotes Python), PoPy/Zope-DA (pilotes Zope)
* Microsoft Windows : des pilotes ADO, .NET, OLE et ODBC existent
Ainsi PostGis semble doublement intéressant. Avez-vous des retours d'expérience à faire partager sur le développement d'une interface aussi bien avec access que postgis?
Merci.
Dernière modification par renard (Thu 21 October 2010 12:18)
Hors ligne
#4 Thu 21 October 2010 12:53
Re: historique de modifications de la BDD
Bonjour,
de mon point de vue, la migration d'un SIG fichier vers un sgbd doit se faire dans un serveur de base de données spatiales.
PostgreSQL/PostGIS est tout indiqué : licence, cout, performances et dans votre cas un lien facilité avec geoconcept.
Les possibilités d'interfaces sont nombreuses (clients lourds, légers).
Avec Qgis par exemple : http://rootabagis.blogspot.com/2010/06/ … -qgis.html
En web avec les librairies et langages courants ou avec des outils de génération de formulaire (http://www.postgresql.org/about/news.1190)
Concernant l'historisation des modifications sur les données un exemple est donné dans le document ci dessous, dans la partie "PLPGSQL FUNCTION SAMPLES"
http://www.postgresonline.com/special_f … ormat=html
Code:
--Sample logging trigger taken from docs CREATE TABLE emp_audit( operation char(1) NOT NULL, stamp timestamp NOT NULL, userid text NOT NULL, empname text NOT NULL, salary integer ); CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS $$ BEGIN -- Create a row in emp_audit to reflect the operation performed on emp, -- make use of the special variable TG_OP to work out the operation. IF (TG_OP = 'DELETE') THEN INSERT INTO emp_audit SELECT 'D', now(), current_user, OLD.*; RETURN OLD; ELSIF (TG_OP = 'UPDATE') THEN INSERT INTO emp_audit SELECT 'U', now(), current_user, NEW.*; RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO emp_audit SELECT 'I', now(), current_user, NEW.*; RETURN NEW; END IF; RETURN NULL; -- result is ignored since this is an AFTER trigger END; $$ LANGUAGE plpgsql; CREATE TRIGGER emp_audit AFTER INSERT OR UPDATE OR DELETE ON emp FOR EACH ROW EXECUTE PROCEDURE process_emp_audit();
Bonne migration,
Dernière modification par Mathieu BOSSAERT (Thu 21 October 2010 12:55)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#5 Thu 21 October 2010 12:55
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: historique de modifications de la BDD
Ok, merci de la réponse. Pour créer une interface Postgresql/postgis voila ce que j'ai trouvé sur wikipédia
Des interfaces existent aux niveaux pilote et graphique :
* Java : pilotes JDBC/JDO,
* PHP : phpPgAdmin (interface web d'administration), pgAdmin (application)
* Python : Psycopgzsql/PyGRes (pilotes Python), PoPy/Zope-DA (pilotes Zope)
* Microsoft Windows : des pilotes ADO, .NET, OLE et ODBC existent
Ainsi PostGis semble doublement intéressant. Avez-vous des retours d'expérience à faire partager sur le développement d'une interface aussi bien avec access que postgis?
Merci.
Bonjour,
En gros, il est possible d'acceder a postgresql et postgis depuis a peu pres tous les langages de programmation.
S'il s'agit de realiser une interface graphique client lourd, le choix est vaste, mais un langage supporté par plusieurs plateforme est un plus.
Pour une interface web, des langages comme Java/JSP ou PHP font ca tres bien.
Pour l'acces a la base, notamment pour la partie spatiale, il est interessant de coupler un ORM (object relational mapper), qui permet de faire une séparation claire entre le modele (les objets manipulés) et la base (les tables relationnelles).
En Java, Hibernate fait ca tres bien, notamment avec la partie hibernate spatial, qui gere les objets geometriques.
En PHP, Doctrine sait aussi faire ca, et dispose d'une extension spatiale doctrine spatial (Yves: tu sais ou ce projet en est ? l'integration MapFish/Doctrine ?).
Si vous ne connaissez pas Java, ca serait peut etre un peu lourd d'apprendre a la fois le langage et les frameworks.
PHP est plus facile a apprendre et a mettre en oeuvre il me semble.
Que souhaitez-vous faire, qd vous dites "migrer la base de notre SIG" ?
S'agit-il egalement de migrer les données spatiales ou uniquement une partie attributaire ?
Nicolas
Hors ligne
#6 Thu 21 October 2010 14:43
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: historique de modifications de la BDD
L'objectif est triple.
Nous migrons entièrement la BDD (spatiales+ attributaires)
- gérer l'historique de modification
- créer une application webcarto [intranet/internet] (c'est pourquoi postgis m'intéresse tout particulièrement, toutefois access-géoconcept fonctionne bien en stockant la géométrie en texte aux normes GCES [format géoconcept]). La base access reste à l'ordre du jour si nous utilisons GCIS (module webcarto de géoconcept) mais il sera vraisemblablement trop onéreux (+/- 30 000€).
- traiter/MàJ des données depuis Géoconcept mais aussi depuis une interface non cartographique (traitement sur la base de données où la cartographie est inutile).
La question matériel va également se poser. Nous disposons actuellement de deux licences géoconcept (pour plusieurs utilisateurs allant de novice à bonne maitrise). L'intranet pourrait corriger le problème puisque la plupart des utilisateurs ne feront que consulter les données ou de petites modifications. La question que je me pose concerne notamment les choix à faire en matière d'architecture réseau (rôle et puissance du serveur [dédié...], je pense me faire conseiller par un informaticien mais je maîtrise peu cette aspect et ai toujours crainte des commerciaux...). nous avons 6 postes informatiques.
Dernière modification par renard (Thu 21 October 2010 14:57)
Hors ligne
#7 Thu 21 October 2010 15:21
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: historique de modifications de la BDD
L'objectif est triple.
Nous migrons entièrement la BDD (spatiales+ attributaires)
- gérer l'historique de modification
- créer une application webcarto [intranet/internet] (c'est pourquoi postgis m'intéresse tout particulièrement, toutefois access-géoconcept fonctionne bien en stockant la géométrie en texte aux normes GCES [format géoconcept]). La base access reste à l'ordre du jour si nous utilisons GCIS (module webcarto de géoconcept) mais il sera vraisemblablement trop onéreux (+/- 30 000€).
- traiter/MàJ des données depuis Géoconcept mais aussi depuis une interface non cartographique (traitement sur la base de données où la cartographie est inutile).
La question matériel va également se poser. Nous disposons actuellement de deux licences géoconcept (pour plusieurs utilisateurs allant de novice à bonne maitrise). L'intranet pourrait corriger le problème puisque la plupart des utilisateurs ne feront que consulter les données ou de petites modifications. La question que je me pose concerne notamment les choix à faire en matière d'architecture réseau (rôle et puissance du serveur [dédié...], je pense me faire conseiller par un informaticien mais je maîtrise peu cette aspect et ai toujours crainte des commerciaux...). nous avons 6 postes informatiques.
La bonne occasion, alors, de lacher Access, qui n'est pas une base de données relationnelle et qui contraint a rester sur des technos Microsoft et effectivement de passer a Postgresql/Postgis.
Dans ce contexte, une solution BD + ORM + developpement Web parait la plus sage, mais pas forcement la plus rapide a mettre en place.
La encore, je pense a Hibernate, qui permet de representer les objets d'une base Postgresql ET Postgis en Java, de les manipuler, etc. et ce en faisant abstraction de la base. (qu'on peut eventuellement changer sans changer l'application)
Hibernate dispose, de plus, d'un plugin nommé Envers, qui fait automatiquement l'historisation des tables qu'on lui demande (attention, suis pas sur que Hibernate Spatial permette de faire l'historisation des champs geometry de la base).
Utiliser un module carto a 30 000€, alors que Mapserver + OpenLayers sont gratuits et marchent (tres) bien (ou Geoserver dans un dev pur Java) peut ne pas etre indispensable.
Ces 30000€ pourraient servir a payer le developpement de l'appli Carto intranet/internet plutot.
Pour 6 postes client, un ordinateur "de base" peut largement suffire pour heberger postgresql + le moteur cartographique + le code.
Pour une utilisation internet de l'application, il faudra regarder le nombre de connexions attendues: une machine plus puissante serait alors nécessaire (ou un hebergement externe)
Nico
Hors ligne
#8 Thu 21 October 2010 15:35
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: historique de modifications de la BDD
Bonjour,
Les intervenants précédents vous ayant clairement décrit les avantages de PostGis et du multi plateforme, je me pencherai sur le coté Windows.
Coté Access : Pas de cartouche spatiale native. Les bases de plus de 500 Mo sont ingérables. (temps de réponse). Quel est le format d'ACCESS ? Car le passage de 97-2000 à 2007 au niveau interface de programmation c'est pas simple.(DAO vers ADO.Net).
Deuxièmement Access n'est pas un SGBD "client/serveur".
Je vous conseille fortement de passer par PostGis (nb : sous windows via npgsql il est très facile de ce connecter à partir de .Net).
Pour ma part dans un même applicatif développé en .NET je me connecte indifféremment sur des bases access ou sur des bases PostGis suivant mes besoins. Mais la data spatiale est forcément dans une base PostGis.
En matière d'architecture réseau, pour 6 personnes, vous pouvez soit utiliser un serveur existant, soit un serveur dédié (c'est le mieux). Pour ma part j'ai installé postgis sur le serveur Active Directory en Win 2008 pour 8 personnes connectées, cela ce passe sans soucis. De plus PostGres est connu pour pouvoir être réglé très finement aux niveau des paramètres de communications.
En matière de techno un XEON avec 4 Go de RAM c'est le minimum après ... Je viens de commander une machine type double Xeon quadcore avec 8 Go de RAM et il y en a pas pour très cher (3000 € environ).
Toute la problématique de votre réseau sera d'être équilibré car si vous avez un super serveur et des switches bas de gamme ...
A+
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#9 Thu 21 October 2010 18:10
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: historique de modifications de la BDD
Dans ce contexte, une solution BD + ORM + developpement Web parait la plus sage, mais pas forcement la plus rapide a mettre en place.
La encore, je pense a Hibernate, qui permet de representer les objets d'une base Postgresql ET Postgis en Java, de les manipuler, etc. et ce en faisant abstraction de la base. (qu'on peut eventuellement changer sans changer l'application)
Je connais pas le Java (mais j'ai du temps), cependant je me demande si ce n'est pas mettre en péril la pérennité du SI. C'est pourquoi je préferais une solution MAPSERVER/Openlayer trés utilisée et documentée (plus simple pour d'éventuels successeurs).
Toute la problématique de votre réseau sera d'être équilibré car si vous avez un super serveur et des switches bas de gamme ...
==> Qu'entends tu par switches bas de gamme?
Dernière modification par renard (Thu 21 October 2010 18:11)
Hors ligne
#10 Thu 21 October 2010 19:33
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: historique de modifications de la BDD
Bonsoir,
==> Qu'entends tu par switches bas de gamme?
Un réseau pour 6 ou 8 postes peut-être une livebox (ou équivalent) et un HUB où architecture beaucoup plus évoluée.
Là encore les intervenants précédents pourront certainement vous donner une architecture libre, mais sur l'aspect technique vous pouvez aller ici chapitre 1-A pour vous faire une idée.
Sachant que l'ensemble peut-être réduit.
Des switches évolués comme indiqué dans ce CCTP possèdent une interface de programmation qui permet de régler le traffic de façon assez fine, par exemple rendre prioritaire les paquets circulant entre un PC et le serveur de BD par rapport à un traffic internet.
Je pense qu'un bon réseau LAN pour 6 personnes dans un cadre pro serait composé d'un routeur et d'un switch de qualité équivalente à celle indiqué dans le lien. Vous ajoutez un fire wall et une ligne SDSL, il ne vous reste plus qu'à connecter quelques serveurs et vous êtes paré pour un moment.
Si vous considérez uniquement l'aspect matériel (solution libre pour les serveurs) la solution peut évoluer entre 20 et 30 k€ suivant les options (fire wall particulièrement).
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#11 Fri 22 October 2010 10:22
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: historique de modifications de la BDD
Dans ce contexte, une solution BD + ORM + developpement Web parait la plus sage, mais pas forcement la plus rapide a mettre en place.
La encore, je pense a Hibernate, qui permet de representer les objets d'une base Postgresql ET Postgis en Java, de les manipuler, etc. et ce en faisant abstraction de la base. (qu'on peut eventuellement changer sans changer l'application)
Je connais pas le Java (mais j'ai du temps), cependant je me demande si ce n'est pas mettre en péril la pérennité du SI. C'est pourquoi je préferais une solution MAPSERVER/Openlayer trés utilisée et documentée (plus simple pour d'éventuels successeurs).Toute la problématique de votre réseau sera d'être équilibré car si vous avez un super serveur et des switches bas de gamme ...
==> Qu'entends tu par switches bas de gamme?
Bonjour,
Developper en Java et utiliser Mapserver et OL ne sont pas, loin de la, incompatibles !
Nous faisons des projets avec ces architectures depuis plusieurs années (avec d'autre frameworks clients, qd OL n'existait pas.
Il existe de nombreuses solutions pour piloter Mapserver depuis java: JavaMapscript, ecriture de mapfile, surcharge d'URL, etc.
Le SI n'en sera que plus perenne, il me semble
(voici un exemple d'une appli pur java qui utilise (extensivement) mapserver, OL, ext, geoext: www.geojava.org).
Java servirait ici de liant entre la partie client et la partie serveur.
Sinon, Geoserver (le "pendant" pur Java de mapserver) est tout aussi perenne, documenté, et est garant de l'implementation des normes OGC (WMS, WFS, etc.)
Nico
Hors ligne
#12 Fri 22 October 2010 10:22
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: historique de modifications de la BDD
J'essaie d'estimer un peu le coût du matériel. Par contre comme je l'ai déjà je n'y connais rien en réseau. Dites-moi si je me trompe.
Solution possible.
- un serveur avec pour une bdd par si grande que ca (orthophoto d'un département) (3000€)
- la licence windows (pour un administré il faut une licence windows server non?) je n'arrive pas à trouver un prix.
- un routeur + firewall (+/- 700€)
le Hub nous l'avons déjà.
La connexion passe par une livebox (connecté directement au routeur?).
Ca vous semble complet? Je pense que nos besoins sont bien inférieurs en terme de stockage au CCTP que tu as proposé.
Dernière modification par renard (Fri 22 October 2010 10:23)
Hors ligne
#13 Fri 22 October 2010 10:42
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: historique de modifications de la BDD
Bonjour,
un routeur + firewall (+/- 700€)
Heu je pense que c'est faible, pour ma part il s'agit d'un pare feu physique pas uniquement logiciel c'est donc un peu plus cher.
Je pense qu'il est avantageux de remplacer le HUB par un switch.
Pour le CCTP il s'agissait uniquement du chapitre 1-A, le reste est bien entendu tout autre chose.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#14 Tue 26 October 2010 10:37
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: historique de modifications de la BDD
Je souhaite toujours dans le cadre du même projet faire le site web avec drupal et une BDD mysql et le portail cartographique avec une base postgis/ mapserver. Je suis contraint d'avoir deux bases de données car drupal ne semble pas très stable avec postgresql. Cependant est-ce que apache permet d'être connecté à la fois à mysql et mapserver (connecté à postgis)?
merci,
Dernière modification par renard (Tue 26 October 2010 11:19)
Hors ligne
#15 Tue 26 October 2010 11:18
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: historique de modifications de la BDD
Je souhaite toujours dans le cadre du même projet faire le site web avec drupal et une BDD mysql et le portail cartographique avec une base postgis/ mapserver. Je suis contraint d'avoir deux bases de données car drupal ne semble pas très stable avec postgresql. Cependant est-ce que apache permet d'être connecté à la fois à mysql et mapserver?
merci,
Bonjour,
Hmm, deux bases de données, une pour le cms, une pour la geo, ca parait bien lourd:
Quels sont les pb ou instabilites de drupal avec PG ? ca peut ne pas concerner votre problematique.
Quel type de fonction spatiales est recherchée ? s'il s'agit uniquement de l'affichage, MySQL peut stocker des donnees spatiales, les indexer et les afficher avec Mapserver.
Apache n'est pas vraiment concerné par les connexions aux bases. Les outils serveur de developpement des applications le sont, eux: PHP (Drupal) permettent de se connecter a autant de bases differentes que l'on veut, mapserver aussi.
Il faudrait, je pense, tout faire pour eviter deux BD pour un meme projet.
Nicolas
Hors ligne
#16 Tue 26 October 2010 12:00
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: historique de modifications de la BDD
J'ai lu plusieurs mauvais retours d'expériences sur une connexion postgre-drupal et j'ai pu lire ceci
Drupal is an excellent PHP content management system. It supports both MySQL and PostgreSQL as the back end database for content management. Unfortunately, PostgreSQL comes up short in the documentation department: it is not even mentioned in the Drupal INSTALL.txt file. So here we do our small part for the cause and provide some instructions to get Drupal up and running with PostgreSQL.
(source http://pgedit.com/install_drupal )
J'avais songé à basculer entièrement la base de donnée en mysql. Cependant, avec le rachat de sun par Oracle, j'ai lu pas mal de choses pessimistes quant au devenir de mysql. A contrario l'avenir de postgresql/postgis semble plus radieux, c'est pourquoi je privilégiais ce support, d'autant plus que nos besoins en cartographie sont amenés à se développer. On utilisera aussi postgis pour Geoconcept.
Je ferais tout de même des essais drupal - postgresql/postgis, histoire de juger par moi-même, car en effet tu confirmes ce que je n 'osais pas me dire, avoir deux bases de données n'est pas le choix le plus judicieux.
Dernière modification par renard (Tue 26 October 2010 12:01)
Hors ligne
#17 Fri 29 October 2010 19:30
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: historique de modifications de la BDD
Je me trompe sans doute mais dans votre citation de la doc drupal, il n'est pas fait mention d'instabilité mais d'absence de documentation. À vous de voir, mais deux bd avec les problèmes de link (Quid du dblink sur mysql ?), peut-être plus aventureux.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#18 Wed 03 November 2010 14:15
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: historique de modifications de la BDD
Petit suivi qui n'a pas grand chose à voir avec la géomatique. Lors de l'installation de postgresql, il y a possibilité d'installer apachephp + drupal (+postgis) avec stackbuilder 3. Il est ainsi aisé d'utiliser drupal avec postgresql.
Hors ligne