Accueil > Forum > > > > Conseils sur accès aux données
Conseils sur accès aux données
mardi 29 août 2006 à 10:28:19 |
Conseils sur accès aux données

mdemo
|
Bonjour, Je travaille sur un site qui risque d'héberger pas mal de données uploadées par les membres. Ces membressont repérés par le UserId généré par le login (un Guid). Celà m'amène à poser 2 questions pour m'aider dans mon développement: - je souhaite générer un répertoire par membre, ce répertoire ayant comme nom le Guid. Est-ce que celà pose un problème particulier, ou y-a-t-il une meilleure solution ? - les divers contrôles accèdent aux données par des chemins relatifs ( avec "~/" pour les contrôles serveurs et "../" pour les contrôles html). Donc seul le nom du fichier est sauvegardé dans la base sql server. Que se passe-t-il si je suis amené plus tard à mettre des données sur un second disque, voire sur un autre serveur ? La solution sera-t-elle alors de passer par un chemin absolu, et avec toutes ses contraintes ? Avez-vous une meilleure solution ? Et surtout comment faire pour structurer ça dès maintenant pour éviter d'avoir des problèmes si un jour ça se produit ? Est-ce que ça se joue à mon niveau (code, sql) ou bien puis je expliquer plus tard au serveur de rechercher les chemins relatifs à différents endroits ? Merci d'avance pour vos conseils.
|
|
mardi 29 août 2006 à 11:30:20 |
Re : Conseils sur accès aux données

Yopyop
|
re,
je te conseille de créer un répertoire d'upload en dehors du répertoire de ton application (en effet, modifier le répertoire de l'applcation peut provoquer un restart de celle-ci).
Ensuite tu crées un share sur ce répertoire et tu donnes les droits nécessaires (create, delete, ...) à asp_net.
De cette manière, si un jour tu dois déplacer les fichiers (sur un autre disque/machine), normalement tu n'auras qu'à modifier le share pour qu'il pointe sur le nouveau folder (machine).
mais c'est mon point de vue ...
yopyop
|
|
mardi 29 août 2006 à 13:34:15 |
Re : Conseils sur accès aux données

mdemo
|
Merci yopyop pour ta réponse.
Tu as soulevé un point que je ne savais pas: le restarst si on bouge le répertoire.
Par contre comment gères-tu l'accés aux données dans le cas où celles-ci ne sont pas dans le répertoire de l'application ? Faut-il nécessairement avoir un chemin absolu ?
Mon idée initiale était plutôt de garder le disque initial avec ses données, sous l'application ou non suivant ton conseil, et de pouvoir étendre la sauvegarde vers un autre disque si nécessaire. En gros ne pas être limité par mon choix de premier disque, mais pas nécessairement tout basculer vers un plus gros car à terme ça ne pourra pas aller. Il y aurait donc des données par exemple sur deux disques, mais une même base sql pour y accéder et des contrôles serveurs identiques. Dans un premier temps avec un chemin relatif les contrôles vont lire les données sans pb, et seule la sauvegarde du nom de fichier me suffit dans ma base. Si ensuite je dois passer sur un autre disque, un autre serveur, je me dis que le fichier seul ne suffit plus et qu'il faudrait peut être que j'anticipe en ajoutant un champ dans ma base avec le chemin absolu. Je peux reconstruire ainsi le chemin absolu vers différents disques si nécessaire, et si les données doivent bouger il me suffit alors de changer ce champ. Est-ce stupide ou non ? N'y-a-t-il pas un meilleure solution (notamment au niveau du paramétrage du serveur ?
Merci
|
|
mardi 29 août 2006 à 16:09:02 |
Re : Conseils sur accès aux données

Yopyop
|
re,
comme tu l'as dit, ta solution nécessite d'avoir le chemin complet du fichier dans la base. donc si un jour tu changes ton répertoire, cela risque de compliquer les choses (même si le chemin et le filename sont dans 2 champs séparés, cela reste plus compliqué que de faire une copie des fichiers dans un aurte répertoire et de changer une constante.. dans le web.config) .
mettre tous les fichiers dans un seul répertoire facilite également le backup (pas grand chose, mais quand même).
pour gérer l'accès, il suffit (si je me souviens bien) de donner les droits au user asp_net (lecture/écriture) à ton fileshare/répertoire.
Pour le restart, en fait, dès que tu modifies la structure du folder de ton application (ou un sous folder, fichier, ...) il y a de fortes chances que l'application redémarre (perte de toutes les variables session et application + cache) car le folder applicatif est considéré comme une partie de l'application (donc restart, tout comme si tu mettais une nouvelle version de la dll).
yopyop
|
|
mardi 29 août 2006 à 23:53:13 |
Re : Conseils sur accès aux données

mdemo
|
Merci yopyop pour tes conseils.
Last question: quel est ton avis sur les répertoires créés avec le UserId qui est un Guid ? Ca présente l'intérêt d'éviter les doublons éventuels, de protéger dans une certaine mesure, mais je me demande si compte tenu de la longueur et des caractères utilisés il n'y aurait pas une incompatibilité...
|
|
mercredi 30 août 2006 à 11:08:01 |
Re : Conseils sur accès aux données

Yopyop
|
re,
questions toutes bêtes :
tu vas utiliser SQL Server ?
pourquoi un GUID (c'est une string donc si tu l'utilises comme identitfiant cela risque de ralentir les requêtes notemment lors de jointures etc...) ?
pourquoi ne pas utiliser tout simplement l'id (identity) ?
GUID est surtout utilisé lorsque tu partages tes données sur plusieurs serveur de données (autrement il n'y pas grand intérêt à mon humble avis), de plus, rien ne garanti qu'il soit unique (faut vraiment pas avoir de chance).
Donc si le but est d'éviter les doublons, il faut utiliser l'identity et non le GUID.
Mais tout dépends de la base de données que tu vas utiliser...
Combien de users vas-tu gérer ?
yopyop
|
|
mercredi 30 août 2006 à 16:05:55 |
Re : Conseils sur accès aux données

mdemo
|
En fait j'avais commencé par gérer mes membres avec un integer qui s'incrémentait (Est ce que c'est ce que tu appelles identity?).
Puis depuis une semaine j'ai mis en place les logins... avec les contrôles serveurs de VS2005. Ca m'a donc créé la base aspnet.mdf que j'ai mergée avec la mienne. (on parle bien de sql server 2005).
Chaque nouveau membre créé pas ces contrôles a un UserId qui est un Guid; Je pouvais donc soit faire une table de conversion avec mes IdMember (integer) et UserId (Guid), soit tout reprendre avec ce UserId afin d'avoir un seul identifiant.
J'ai choisi cette seconde solution car le site n'est pas encore lancé. Mais j'ai peut être fait un mauvais choix ?
Pour ce qui est du nombre de users, c'est un grand mystère! Je pense toutefois que nous parlons facilement de plusieurs milliers. Est-ce que le guid a une si grosse incidence sur les requêtes? Merci
|
|
mercredi 30 août 2006 à 16:50:33 |
Re : Conseils sur accès aux données

Yopyop
|
re,
comme indiqué plus haut, le GUID est une string.
Donc si tu fais des jointures sur des strings, cela sera fatalement plus lent (de beaucoup) que des jointures sur des nombres.
j'utilise vs2003 avec sql server 2000 et l'une des base de données sur laquelle je travaille a environs 300'000 users (oui c'est une grosse boîte).
L'utilisation des GUID est hors de question dans le contexte dans lequel je travaille (infime probabilité d'avoir 2 fois le même GUID).
comment se fait-il que tes contrôles génèrent des GUID ? tu ne peux pas les forcer à créer une id "simple".
par example (example basique), pour créer une table id,login,password
create table dbo.USERS(
ID numeric(10) identity,
LOGIN varchar(20) not null,
PASSWORD varchar(20) not null,
constraint USER_PK primary key (ID),
constraint USER_LOG_PASS_UK unique (LOGIN,PASSWORD)
)
go
ensuite, lors d'un insert
insert into users
(login,password) values ('monlogin','monpassword')
l'id est créée automatiquement.
ensuite pour récupérer la nouvelle id
select @@identity (ou @@scope_identity)
le tout dans une transaction :)
mes users ont automatiquement un nouvelle id, qui est unique à coup sûr.
perso, je n'utiliserai pas le GUID (jamais !;) comme identifiant interne à ma base de données.
Le seul cas ou j'utiliserai un GUID, c'est si, par example, je me retrouve avec 2 (ou N) bases de données différentes qui ont toutes la même table users.
Dans ce cas l'utilisation du GUID est une "bonne" solution (et encore!).
Il ne faut pas perdre de vue que le GUID n'est pas forcément unique !
C'est une chaîne de charactères générée "au hasard" qui assez longue pour que la probabilité d'avoir 2 fois la même est quasi nulle.
Mais cette probabilité existe toujours (ok, c'est la même probabilité que de gagner à l'euromillion, au lotto et au pmu et de se faire écraser par une météorite le même jour).
j'espère que cela t'aide...
yopyop
|
|
mercredi 30 août 2006 à 18:03:05 |
Re : Conseils sur accès aux données

mdemo
|
Seulement 300000 users ! Je plaisante. Pire que ça le guid est un objet Guid en .Net, et un uniqueidentifier en Sql. Et bien sûr on doit sans cesse le convertir en string. Je sais bien que j'ai dû prendre une mauvaise direction. Depuis le début j'ai fait ce que tu m'as décrit, mais j'ai bêtement changé d'avis afin d'avoir un Id unique avec le membership... Je mets de côté l'argument probabilité (sauf si j'atteins le milliard de users!). Par contre je me pose des questions sur les perfs depuis le début, et je pense que tu as raison surtout que tu es confronté à ça (moi j'avais idmember = 1 !). Tu vas donc m'obliger à revoir mes tables, mes procédures, mes classes... que j'ai modifiées il y a moins d'une semaine dans l'autre sens ! Le hic est que je me suis laissé avoir par toute la nouvelle gestion des membres des 2.0 : c'est là que le guid est créé. Tout est géré avec de UserId créé avec le CreateUserWizard. Toutes les tables et procédures stockées ont ce guid. Tu peux jeter un coup d'oeil à: [ Lien ]Table 1-3. The aspnet_Users table | Column Name | Column Type | Description |
|---|
| ApplicationId | uniqueidentifier | Application ID | | UserId | uniqueidentifier | User ID | | UserName | nvarchar(256) | User name | | LoweredUserName | nvarchar(256) | User name (lowercase) | | MobileAlias | nvarchar(16) | User's mobile alias (currently not used) | | IsAnonymous | bit | 1=Anonymous user, 0=Not an anonymous user | | LastActivityDate | datetime | Date and time of last activity by this user |
Même l'applicationid qui est un guid. Mais là c'est plus compréhensible car ça correspond à ce que tu as expliqué.
Pour ajouter d'autres infos (addresse...), pas moyen bien sûr dans ces tables, et pas touche aux stores procedures. Il y a la solution Profile expliquée partout, mais pas pratique pour accéder aux données, ou l'ajoût d'une autre table bien sûr. ex: [ Lien ] Voyant qu'ils étaient repartis en utilisant ce guid, je me suis bêtement dit qu'il fallait finalement faire de même.
Tu avoueras qu'il est quand même dommage de gérer deux ids par user. Mais quand je vois le nombre de requêtes que je vais devoir faire sur mes fichiers, il est en effet bien plus judicieux de revenir à mon identity de départ.
Merci mille fois pour tous tes conseils très très précieux. Je me pose souvent des questions de ce type, et comme je manque de recul et d'expérience je me demande souvent si j'ai pris la bonne direction. Dès ce soir je retourne dans le droit chemin...
|
|
mercredi 30 août 2006 à 18:35:34 |
Re : Conseils sur accès aux données

Yopyop
|
Réponse acceptée !
re, Demande quand même l'avis de quelqu'un d'autre (2 avis valent mieux qu'un) car personnellement je ne suis pas passé à ASP.net 2.0. Mais expérience faite, les solutions "clé en main" de Microsoft sont souvent pratiques pour des choses "simples", mais pas facilement adaptables ou pas optimisées (ex: datagrid, dataset, viewstate, system.directoryservices, ...) . Perso, je préfère passer 5 jours à me documenter sur la meilleure façon de faire puis implémenter plutôt que d'y aller tête baissée avec les infos de Microsoft (nous travaillons souvent avec des consultants de Microsoft et eux même avouent ne pas aimer certains de leurs outils/framework). Bonne chance  yopyop
|
|
Cette discussion est classée dans : solution, données, accès, contrôles, conseils
Répondre à ce message
Sujets en rapport avec ce message
Accès à une base de données depuis le site [ par idabou ]
Bonjour,J'ai conçu un site en local qui fonctionne correctement mais lorsque je le fais héberger, je n'arrive pas à accéder à ma base de donnée dont l
Accès a une base de données... CA MERDE. [ par matw ]
salut a tous..PLZ HELLLLLP !j'ai une petite question:j'ai mes pages asp sur phidji.com et d'autres sur efrance.com,est-il possible d'acceder a partir
Envoie de données vers une page d'accès aux données et redirection vers celle-ci (URGENT) [ par LG1 ]
Bonjour1) Dans une page HTML, en vbscript j'exécute une requête et je mets le résultat dans un RecordSet. 2) J'ai créé une page d'accès aux données à
Affichage et modification gridview [ par ahmedmido ]
je suis nouveau en asp.net ,je cherche une solution à ce problème: je dois afficher à l'utilisateur plusieurs données à partir d'une source de données
Accès aux données pour débutant [ par shadow1779 ]
Bonjour,je suis en train d'essayer de passer de PHP a ASP.Net, et comme premier projet j'essaye de refaire mon site actuel avec SQL Server et ASP.Net
Hachage de données en ASP [ par Namleck ]
Bonjour, Je cherche une solution pour hacher des données (si possible avec l'algo SHA-1) et créer une preuve de validité pour l'envoie. L'environnemen
Accès aux contrôles serveur depuis un script [ par Mayzz ]
Bonjour à tous ! Voila, je développe depuis un certain temps en ASP.Net/Silverlight, mais je ne suis pas du tout un expert au niveau du Scripting cli
frotection sur access [ par 6215768V ]
slt je cherche une solution pour protéger certaines requêtes et certains formulaire de ma base access 2002, tout en laissant le menu général accessibl
Hachage de données en ASP [ par Namleck ]
Bonjour, Je cherche une solution pour hacher des données (si possible avec l'algo SHA-1) et créer une preuve de validité pour l'envoie. L'environnemen
Eaffecr contenu base de données Accès en ASP [ par Lemath ]
Bonjour, Je suis désemparé, car je cherche les bonnes lignes de code ASP pour effacer TOUS les enregistrements en une fois dans une base de données
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|