|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Ingé. Info. Inscription : janvier 2008 Messages : 338 ![]() |
Bonjour à tous, dans le cadre d'un projet je vais développer une GED (gestion électronique de document). J'en suis à la modélisation de ma base de données, mais il y a un truc qui m'échappe, je dois construire ma base d'après la modélisation suivante :
table dossier table fichier un dossier peut contenir zéro ou plusieurs fichiers et un fichier ne peut être contenu que dans un seul dossier. Pour le requêtage ultérieur aucun problème, inner join ect... Je suis sous mySql, et je me demande si finalement les foreign key ne sont pas une modélisation abstraite à ne pas implémenter dans ma base de donnée. Enfin je ne sais pas trop et comme en cherchant sur le net je n'ai pas trouver mon bonheur je me dis que peut être je ne prend pas le problème du bon côté. Si vous voulez une quelconque autre précision n'hésitez pas à me demander car j'ai l'impression d'avoir été un peu flou! Merci d'avance.
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
implementer une GED... sacré travail. parce que rien qu'un petit script pour faire de l'upload de fichier, c'est pas dur mais qu'est ce que c'est ***
j'avais supervisé une étude sur nuxéo et j'avais été ébloui, y faut un peu de temps pour la relooker mais c'est un produit qui fait tout... Si t'en es à te poser des questions existentielles sur contrainte d'integrité ou pas vaut mieux penser à un produit sur étagère. D'ailleurs un wiki comme mediawiki intègre un p'tit côté ged qui peut suffire pour pas mal d'usages.
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Ingé. Info. Inscription : janvier 2008 Messages : 338 ![]() |
Oui c'est un gros projet, j'ai 6 mois pour le mener à terme.Concrètement Je compte développer une ged simple et robuste pour le compte de mon entreprise.
Les solutions clef en main même open source ne correspondent ou correspondent "bcp trop" au cahier des charges. Les specs se passent bien, mais je veut vraiment partir avec quelque chose de stable et cohérent au niveau de ma base de donnée. Et puis si je prend une ged je n'aurais plus grand chose à présenter pour mon mémoire de fin d'étude !
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Stable et cohérent n'est pas compatible avec MySQL. Pour la stabilité c'est catastrophique, il n'y a qu'a voir les nombreux plantages rapportés dans ce forums comparé à du PG, du SQL Server ou du Oracle.
Quand à cohérent, là j'espère que vous plaisantez, car MySQL ne sait toujours pas faire des contraintes CHECK, (voir http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/) ni d'ailleurs correctement de nombreuses autres contraintes et rigger et n'est même pas ensembliste... Ne parlons pas performances, là je rigole ! http://blog.developpez.com/sqlpro/p9...lles-en-sql-1/ Enfin pour de la GED, il serait souhaitable d'utiliser le stockage des fichiers à titre de DATALINK (norme SQL) que MySQL ne sait pas gérer.... Voyez ce qu'est un exemple de stokage de fichiers à travers le SGBDR avec SQL Server et son système appelé FILESTREAM : http://mikedavem.developpez.com/tuto...l-server-2008/ Par exemple en l'absence de ce dispositif, vous ne pourrez même pas faire de sauvegardes cohérente de la base avec les fichiers. Vous ne pourrez même pas faire de sauvegarde cohérente de la base à chaud, car MySQL ne sait toujours pas le faire.... Enfin une bonne GED c'est aussi de l'indexation Full text pour aller rechercher les bon, doc. Su ce sujet MySQL est plus que nul (voir : ) De p)lus il ne sait pas indexer textuellement les fichiers.... A lire : http://blog.developpez.com/sqlpro/p9...ext-search-no/ Et pour couronner le tout, n'oubliez pas que MySQL est PAYANT ! (soit en numéraire, soit sous forme de code). A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Ingé. Info. Inscription : janvier 2008 Messages : 338 ![]() |
Merci tout d'abord d'avoir pris le temps de répondre et de m'éclairer,sur, je l'avoue une zone d'ombre.
J'ai peut être été un peu trop hyperbolique avec mes termes. Je veux que ma ged soit simple et efficace et de par sa simplicité obtenir une certaines stabilité, je sais bien que toute ces indexations/ check /filestream/ ect.. sont le nerf de la guerre quand on parle d'appli bdd et surtout d'une ged. Mais si je ne me heurte pas moi même sur ce genre de problématique ça me dépasse un peu. Je vais cependant lire vos liens avec attention. En revanche mySQL, il me semble, à moins d'un usage commercial, reste gratuit. Par contre oui, je vais m'orienter vers posgresql, je l'eu utilisé sur linux j'espère qu'il est tout aussi performant sous window. Cependant ça ne répond pas à ma question initiale à savoir la création de relation(s) dans ma bdd. Puis je profiter de votre expérience pour vous reposer deux de mes problématiques ? La première assez simple j'en doute pas, mettre en place, si c'est vraiment nécessaire, une relation de type clef étrangère dans ma base. Ex: un dossier comporte plusieurs fichiers. Ou c'est simplement pour gérer par ex la suppression des entrées associées à la suppression de l'entrée ? Et seconde question, je souhaite forcément rajouter pour chaque fichier/dossier des utilisateurs/groupes "autorisés" . Je ne vois pas comment m'y prendre à moins de faire une table relationnelle du genre en clef primaire de deux clef étrangère du genre User01,fichier01 Mais ce qui voudrait dire qu'il faudrait une table au nombre d'entrées égales au nb de fichiers*le nb d'utilisateurs autorisés. Dsl pour la longueur !
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Vous posez le problème du modèle de données, qui de toute façon est indépendant de tout SGBDR. Le mieux serait donc de poser ces questions dans le forum consacré à la modélisation. La question de l'intégrité référentielle étant subsidiaire. En effet si je fais de la base de données relationnelle et que je n'utilise ni les contraintes, ni les index, alors autant en revenir à Cobol, cela sera encore plus rapide....
Postez donc ici vos question avec un debut d'ébauche de votre modèle : http://www.developpez.net/forums/f62...sation/schema/ A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#7 |
|
Membre confirmé
![]() Ingé. Info. Inscription : janvier 2008 Messages : 338 ![]() |
Bonjour je reviens alimenter cette discussion, j'ai pas mal avancé vis à vis de la conception de ma ged, j'ai tout d'abord choisie posgres et une modélisation intervallaire de mon arborescence je règle ainsi tout les problèmes de requêtage, tant la méthode est peu gourmande.
Il me manque encore la "meilleure solution" pour traiter les fichiers eux même. Et c'est la ou vous pouvez m'être d'une grande utilité sachant bien entendu que je ne peut pas me permettre de prendre un SGBD ni tout autre chose payant. Voila pour point de chute au cas ou je peux mettre le contenu de mon fichier (word/pdf) dans un blob et l'url du fichier dans un champ. Mais je sais très bien que ce n'est pas optimisé du tout, à 4000 fichiers si je doit parcourir le champ contenu, ça va vite exploser. Je cherche à obtenir un truc fonctionnel en premier temps, mais assez efficace. D'après vous le meilleur rapport qualité/temps passé serait ?
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Stockez les en tant que fichier après anonymisation dans une arborescence.
Pour ce faire je stocke dans une table de paramétrage le répertoire racine de mon "filer". Par exemple D:\files\. Avant tout j'estime le nombre de fichiers par unité de temps et projette sur la durée de vie du serveur, par exemple 5 ans. Par exemple 100 fichiers jours => 180 000 fichiers. A partir de la racine je vais créer une arborescence dans laquelle statistiquement je ne devrais pas avoir plus de 250 fichiers par répertoire. Pour anonymiser mes fichiers je vais leur donner des GUID... Exemple : 0FF2F871-92E3-4FF7-BE02-141FEE15E204 83BEBF90-9A8C-47B7-A268-751D70C158FE BC0F27D8-C757-499E-9FA6-1AC1162821CC 5F78D2FF-B364-4DEC-8A20-B6ADD1524ED1 270CE6F8-A1D0-43D2-A2EF-D021B38EB2D3 Ainsi le fichier "La Sainte Victoire par Cezanne.bmp" sera anonymisé 0FF2F871-92E3-4FF7-BE02-141FEE15E204 et son vrai nom stocké dans la table (avec sa taille en octet, sa date et tout un tas d'autres métadonnées si besoin est). Pour l'arborescence des répertoires j'utilise les premiers symboles hexadécimaux du GUID. Ainsi "La Sainte Victoire par Cezanne.bmp" anonymisé 0FF2F871-92E3-4FF7-BE02-141FEE15E204 sera stocké dans l'arborescence : D:\Files\0\F\F\0FF2F871-92E3-4FF7-BE02-141FEE15E204 Apparemment il ne vous faut pas plus de 3 niveaux de sous répertoire à partir de la racine pour stocker tous vos fichiers : 1) la racine peut en contenir 250 2) sous la racine vous créez 16 sous répertoire de '0' à 'F' pouvant donc contenir 16 * 250 = 4000 2) sous ce premier niveau, vous créez 16 sous répertoire de '0' à 'F' dans chacun des sous répertoires, et cela peut donc contenir 16 * 16 * 250 = 64 000 3) en recommençant ce petit jeu, au 3e niveau vous avez 16* 16 * 16 * 250 = 1 024 000 Bien entendu il est inutile de créer tous les répertoires à l'avance, vous les créerez à la volée, à chaque demande de stockage.... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Ingé. Info. Inscription : janvier 2008 Messages : 338 ![]() |
Merci à vous pour cette piste. Je vais m'y pencher sérieusement dessus, en revanche, je me suis sans doute mal exprimé, mais je souhaiterai en fait lors d'une recherche étendue de contenu ( càd trouver par exemple tous les fichiers word qui contiendrai le terme "toto") optimiser ce temps de recherche car la solution que j'envisage de faire n'est certainement pas la bonne.
Vous m'en aviez parlé au tout début (cf: datalink, filestream). Mais la dans le cadre d'une implémentation sur posgresql.
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Impossible avec PostGreSQL. Il ne sait pas faire de l'indexation textuelle de fichiers électronique ! Or pour faire cela vous avez besoin de cet outil.
Utilisez MS SQL Server qui sait indexer en Full text de tels fichier (plus de 60 types en standard et en rajoutant les ifilter appropriés, vous pouvez indexer d'aures typers comme du PDF - il existe un ifilter gratuit). L'édition SQL Server 2008 R2 Express with advanced services est gratuite mais limitées à des bases de 10 Go. Au pire vous pouvez créer plusieurs bases et les voir comme une seule à l'aide des vues partitionnées (UNION ALL des tables interbases). Lisez l'article que j'ai écrit au sujet de l'indexation textuelle : http://blog.developpez.com/sqlpro/p9...ext-search-no/ A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#11 |
|
Membre confirmé
![]() Ingé. Info. Inscription : janvier 2008 Messages : 338 ![]() |
C'est un peu flou dans ma tête, j'ai trouvé plein de personnes qui faisaient du full text search avec posgres
http://www.postgresql.org/docs/8.3/s...ch-tables.html depuis la 8.3 apparemment. Ou alors il y'a quelque chose que je n'ai pas bien saisi au niveau de l'indexage en lui même...?
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
sur des données dans les colonnes des tables, pas sur des données contenues dans un fichier.
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#13 |
|
Membre confirmé
![]() Ingé. Info. Inscription : janvier 2008 Messages : 338 ![]() |
Donc en utilisant PG, si j'insère le plain text de mes fichiers dans un champ, outre le fait d'augmenter la taille de la base, ça peut être une solution viable ?
(je laisserai par exemple à l'utilisateur le choix de pouvoir ou non, ultérieurement chercher dans le contenu du fichier en question)
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
Salut, pour la recherche, tu as des solutions pour maintenir une liste de tags et la table de liaison qui la lie au documents
coté langage qui interroge le sgbd, tu vas extraire la liste des expressions contenu dans le document.tu fais donc :
tu indexes ton document et tu mets à jour ta liste de tag de ton ged tu mets à jour la table de liaisons qui lie le document aux tags. Du coup, pas de recherche dans du texte, quand tu cherches une expression tu ne joues que sur des recherches d'index donc très rapide et compact en taille malgré le nombre de fichier (le nombre d'expressions est forcément limité pour une langue, même si tu rajoutes les expressions numériques ou alphanumérique et les noms propres). En appliquant le même algorithme d'extraction de tag à la requête de recherche tu as donc le résultat voulu L'annonymation de fichier est en effet un préalable évidant pour faire cela mais un simple index suffit (un simple int(4) donne plus de 2 milliards de fichiers, vu que tu veux du simple) En gros, tu transferts un lourd travail de recherche à finalement un lourd travail d'insertion... Le stockage des fichiers en interne de la bd n'a de sens que si tu as un traitement bd à faire dessus |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com