Bonjour,
Nous sommes en train de voir comment mettre en place un systeme de replication d'une BDD SQL Server 2000 (si besoin nous migrerons vers 2005). Nous hesitons entre une replication par transaction ou bien par fusion et avons besoin d'avis d'expert.
Quelques details:
- la BDD fait environ 300 GO aujourd'hui et devrait faire environ 1TO d'ici 1 an ou 2.
- Le nombre de nouveaux enregistrement par jour est entre 1 a 10 millions
- la BDD est en acces depuis un site internet et environ depuis 30 applications windows par les usagers internes.
A ce jour, nous sommes satisfait des performances de notre server. On a un serveur de secours qui est mis a jour 1 fois par semaine. Nous souhaitons que ce serveur de secours soit "continuellement" a jour. De plus si nombre d'utilisateurs internet explose je crains que le serveur SQL (sur une machine 32 bits) n'arrive plus a suivre. Mes premieres 2 questions sont donc :
- Pour de telles demandes SQL server 64 bits (avec donc bien de plus de RAM) est-il plus rapide en general pour faire des INSERT ? C'est en effet l'ecriture des donnees qui nous parait le plus problematique plus que les performances des SELECT.
- Devons-nous nous orienter vers une replication par fusion pour faire du load balancing plutot qu'une replication par transaction ?
Une autre question que nous nous posons est comment faire pour que les developpeurs ne galerent pas avec les Connection string pour acceder a la base. Voici les pistes discutees jusqu'a present :
- Avec ADO.Net et la technologie Mirroring (SQL Server 2005) on peut specifier 1 unique serveur Failover ce qui n'est pas genial mais est mieux que rien. Mais sous ADO (et donc Delphi win32) la notion de Failover n'existe pas. De plus Mirroring => 2 machines seulement dont une qui en pratique fait TOUT c'est a dire il n'y a pas de load balancing. Est-ce exact ?
- Modifier le code de sorte a ce que l'on fasse de partout:
oConn.ConnectionString = "server=X...";
try
oConn.Open();
catch
oConn.ConnectionString = "server=Y...";
oConn.Open();
end;
Or cela ne marche pas avec les pages ASP.NET et les SqlDataSource car ils lisent la connection string depuis le web.config file
- Avoir un service windows qui teste la connection a SQL server regulierement. Si la connection ne peut etre etablie changer la connection string dans le fichier web.config et ailleurs. Mais la encore on n'utilise en pratique qu'une seule machine pour SQL tout le temps et il n'y a pas de load balancing.
Donc l'autre question que nous nous posons est de savoir comment mettre en place une strategie de replication pour que les developpeurs et le support ne galere pas avec les connection string et etre sur que le load balancing soit efficace.
Toute idee, piste, livre a acheter (en anglais de preference), etc est la bienvenue.
Merci,
Michael
Partager