Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementDnn Multibases ?Dnn Multibases ?
Précédente
 
Suivante
Nouveau message
09/01/2008 15:13
 
Dnn Multibases ?  (N/A)

Bonjour,

J'ai une question concernant le développement de module DNN. Je voudrais développer des modules en séparant les données de chaque portails dans des bases de données distinctes.

Je compte avoir plus d'une centaine de sites avec chacuns 20-30 modules. J'ai peur qu'une seule base de données ne devienne trop monstrueuse (certains modules pourront contenir vraiment beaucoup de données). Aussi, en cas de crash ou de mauvaise manip, plus aucun portails ne fonctionnera...
A l'inverse avec plusieurs bases, je pourrai répartir la charge sur plusieurs serveurs et les crashs serveurs n'impacterait qu'un nombre minimum de portails.

Mes questions sont donc les suivantes :
Si le multi-base est possible :
- Est-il possible d'avoir une seule base par portail et une base pour le moteur DNN ?
- Comment se dérouleront les mises à jour de modules ? Une boucle sur toutes les bases existantes existe quelquepart ?
- Ou peut-on mettre une chaine de connexion associée au portail ?

Si ce n'est pas possible :
- Est-ce que DNN peut supporter un grand nombre de portails avec un grand nombre de modules ? Si oui qu'elle est la limite ? Un benchmarking est-il disponible ?
- Comment puis-je extraire toutes les données d'un portail et les réinjecter dans un autre moteur DNN ?
- Pour ruser, puis-je définir un setting pour y mettre une chaine de connexion par portail, ouvrir une connexion à chaque appel de module et ainsi simuler un DNN multibase ? Est-ce simple ou trop compliqué ? Quel problèmes je risque d'avoir si je me lance là-dedans ?

Merci pour vos réponses,

Ze Seb

 
Nouveau message
09/01/2008 16:29
 

Bonjour,

Normalement, on n'utilise qu'une seule base quelque soit le nombre de portails. Tu peux toujours faire ce que tu veux dans tes modules, mais du coup il ne seraient plus "standard". Si tu regarde un peu le code des différents modules "standard", les tables contiennent toujours une colonne PortalID pour identifier le portail en question. En fait, tu peux très bien ne pas utiliser la chaine de connexion du fichier web.config et créer une chaine spécifique dans chacun de tes sqlprovider.

Maintenant, tu as aussi la solution de créer une base avec une instance séparée de dnn par portail. Ce serait bien plus simple à maintenir et tu conserverais ainsi la compatibilité de tes modules. De plus, tu pourrais alors créer un pool d'application par portail. Ce qui peux être utile au cas ou un portail plante, les autres continuerons de tourner. Seulement avec une centaine de portails, les mises à jours te prendrons plus de temps. Mais bon, il faut voir, tu n'es pas obligé non plus de créer une instance par portail. Peut-être suffirat-il de créer une dizaine d'instances avec une dizaine de sites chacune, compte tenu que tu sais déjà que tu auras une centaine de sites, j'en déduis qu'il s'agit d'un projet pour une grosse entreprise. Dans ce cas, peut-être est-il possible de faire des sub-division par entité ?

En théorie, il n'y a pas de limite au nombre de portails par instance. Car l'id de portail est un entier 32 bits, soit un peu plus de 2 milliards de portails par instance. En fait, c'est plutôt du côté de SQL Server qu'il faut imaginer les optimisations. Car tout le gros du travail est efffectué par lui. L'idéal serait d'avoir un serveur avec IIS et les instances de dnn et un second serveur pour SQL Server et toutes les bases des différentes instances. Sachant que SQL Server est plus rapide s'il dispose d'un maximum de mémoire vive, je dirais que le serveur web pourrait être un bi-proc avec 1Go de ram, et le second un bi-proc avec 2 ou 4 Go de ram.

Gilles

 
Nouveau message
10/01/2008 11:58
 

Merci pour ta réponse,

En fait j'ai commencé à regarder pour séparer les données mais ça me semble trop lourd à gérer. Je pensais ajouter un setting ConnectionString pour chacun de mes modules, ensuite, chacun de mes modules ouvriraient une connexion sur ce setting. Ainsi je pourrai mettre mes données dans des bases séparées. Mais j'ai peur que cela me pose des gros problèmes de maintenance (Les montées de versions des modules devront faire évoluer toutes les bases, ...)

Je pense faire comme tu le propose, un site par un portail. Pour les mises à jour, je pense qu'il sera possible de développer un petit script qui met à jour tous mes modules et moteurs DNN en même temps (y'aura intérêt à bien le tester celui là :) ). Je vais continuer mon étude dans ce sens.

Pour les tests de montée en charge, je vais essayer de m'en faire un pour voir comment les bases évoluent.

Ze Seb

 
Nouveau message
10/01/2008 15:48
 

Bonjour,

Utiliser une autre chaine de connexion est toujours possible, mais plus difficile à gérer je pense.

Pour le script de mise à jour, il faudra faire bien attention et connaitre l'architecture de dnn pour ne rien oublier. Entre autre :

  • Mettre à jour la base (ajout/modif/supp de colonne) avec un script sql
  • Copier les nouveaux/modifiés ascx/aspx dans ...\DesktopModules\TonModule
  • Copier les fichiers de ressources dans ...\DesktopModules\TonModule\App_LocalResources
  • Copier les nouvelles dll dans ...\bin
  • Mettre à jour les références (numéros de version, nouveaux module) dans les tables de dnn correspondantes

Bref, c'est faisable mais il faut faire très attention ! ;-)

Gilles

 
Nouveau message
10/01/2008 16:15
 
Pour le script, ca peut etre une bonne idée mais je vois pas bien la possibilité de le faire pour le core.

Car devoir modifier le web.config, remplacer tous les fichiers .... Ca fait quand même énormément de boulot de maintenance.


Je serais plutôt pour mutualiser les sites web sur une instance ou plusieurs suivant les besoins(dotnetnuke supporte bien la charge, il est fait pour ça à ce niveau là). Par contre ce qui pourrait être intéressant pour des problèmatique de sécurité, c'est de se tourner vers le webfarming car normalement dotnetnuke doit tourner de cette manière.

JB
 
Nouveau message
16/01/2008 11:39
 

Ok merci pour vos réponses. Pour le core, effectivement ça ferait beaucoup de boulot mais ça doit être faisable en regardant comment ils font lors des montés de versions.

Concernant le webfarming, comment cela fonctionnerait ? Je pourrais avoir un moteur unique avec de la réplication entre chaque serveur ? Je mettrai à jour un moteur et les autres suivraient ? ça pourrait être effectivement une bonne piste si cela est bien supporté par DNN.

Merci,

ZeSeb

 
Nouveau message
16/01/2008 16:47
 

Salut,

Je n'ai jamais "monté" une ferme de serveurs, mais Philip Beadle a plusieurs posts sur son blog à ce sujet. Il s'occupe (si j'ai bien tout compris) du site de la ligue nationale de rugby Australienne, qui affiche seulement 17 millions de pages par mois ! ;-) Le tout sous DNN évidement.

Gilles

 
Nouveau message
17/01/2008 16:10
 
je retrouvais plus le blog, mais Gilles l'a fait avant moi.

Je n'ai pas expérimenté le webfarming mais tout a l'air de bien tourner de son coté et les retours etaient positifs sur dotnetnuke.com.

JB
 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementDnn Multibases ?Dnn Multibases ?