Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2011, 14h40   #1
Membre du Club
 
Inscription : février 2007
Messages : 187
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 187
Points : 41
Points : 41
Par défaut Choix d'un SGBD pour application métier (Web)

Bonjour,

Depuis maintenant 10 ans, notre application métier tourne sous MYSQL MyISAM (Serveur apache & PHP pour infos).
Nous rencontrons de plus en plus de problématique en terme de scalabilité et de performances (lecture extrêmement longue sur de grosses tables)
Il est grand temps d'évoluer vers un SGBD digne de ce nom.

La charge principale est la lecture même si les données écrites restent importantes.

De plus nous utilisons le mirroring pour répliquer la base de données sur différents serveurs.

Je suis donc chargé de trouver un sgbd capable de répondre aux attentes évoquées ci-dessus pour évoluer sereinement.

Je me suis intéressé à la vague NoSQL et notamment Cassandra qui me semble particulièrement approprié pour ce cas mais je suis quand même intéressé par des conseils ou des retours d’expérience qui pourrais m'aider à choisir efficacement un SGBD.

Merci d'avance pour vos réponses et vos orientations.
Neilime05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 15h35   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Quel est le volume actuel de votre base ?
Quel est le nombre de bases ?
Quel est le nombre de connexions simultanées ?
Quel est le nombre de transactions par minute ?
Quelle est la configuration actuelle de votre serveur physique ?

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 * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h06   #3
Membre du Club
 
Inscription : février 2007
Messages : 187
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 187
Points : 41
Points : 41
Citation:
Quel est le volume actuel de votre base ?
environ 5Go+

Citation:
Quel est le nombre de bases ?
130 tables

Code :
Quel est le nombre de connexion simultanées ?
Selon les statistiques sur le trafic de phpmyadmin (max. de connexions simultanées) : 47

Code :
Quel est le nombre de transaction par minute ?
Selon les statistiques sur les requêtes de phpmyadmin : 4,64 k

Code :
Quelle est la configuration actuelle de votre serveur physique ?
Debian 64bits
16coeurs
24Go Ram
Disque dur 64Go

Besoin d'autres informations en particulier ?
Neilime05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h33   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Laissez tomber le NoSQL : trouvez surtout des développeurs qui connaissent bien le SQL.

C'est impensable d'avoir des problèmes de performance entre la configuration que vous annoncez (excellente) et la taille de votre base de données (petite) !
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/10/2011, 18h23   #5
Membre du Club
 
Inscription : février 2007
Messages : 187
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 187
Points : 41
Points : 41
Citation:
C'est impensable d'avoir des problèmes de performance entre la configuration que vous annoncez (excellente) et la taille de votre base de données (petite) !
Je tiens à préciser qu'il y a une quinzaine de bases de données de cette taille par serveurs.

Citation:
Laissez tomber le NoSQL : trouvez surtout des développeurs qui connaissent bien le SQL.
Je suis conscient de l'impact du modèle de données (mal pensé au début, puis consentement "engraissé" sans aucune refonte pour améliorer la performance).

En ce qui concerne l'adoption du NoSQL, cela n'est pas du tout acté, mais plutôt une réflexion de son utilité.
La refonte du modèle de donnée doit s'accompagner d'un changement de SGBD afin de garantir de meilleures performances, ma demande est réellement large et pas seulement axée sur le NoSQL
Neilime05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 19h03   #6
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 644
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 644
Points : 2 641
Points : 2 641
Avant de tout défoncer et partir sur une migration de vos application...

Avez-vous fait auditer votre système actuel pour savoir d'où venaient vos problèmes ?
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/10/2011, 19h43   #7
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
La première des optimisations est la restructuration des bases en respectant A LA LETTRE les règles de l'art de la modélisation que sont les formes normales.
Bref, commencez par normaliser votre base.

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 * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/10/2011, 23h59   #8
Membre chevronné
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 624
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 624
Points : 633
Points : 633
1- InnoDB (disponible sous MySQL si ce n'est pas trop vieux) sera potentiellement plus performant car permettant de conserver des données en mémoires. La version 5.5 de MySQL a beaucoup avancé sur la gestion d'un grand nombre de requêtes parallèles pour ce moteur qui est par défaut à présent.

2- Y a-t'il des index? Si, quand il n'y pas d'autres requêtes en même temps, sélectionner une ligne via une requête classique prend plus de 100 millisecondes, il y a un problème à ce niveau.

3- Quel est la complexité des requêtes? Notamment en nombre de sélections et de jointures? MySQL n'est pas prévu pour prendre un grand nombre de lignes d'une table et les lier avec des lignes d'une autre.

4- Le NoSQL ne vous sera pas très utile. NoSQL serait plus rapide que MySQL si le nombre de requêtes était très grand et la complexité d'exécution très faible (cas où comprendre le SQL prend du temps relativement à exécuter la requête). L'autre avantage du NoSQL est ses schéma libres, mais dans votre cas ça me semble peu utile.

5- Quel est le problème? Disque (en exécutant la commande top vous avez le '%wa' très élevé, wa = waiting for I/O)? CPU?

Exécutez les requêtes et regardez celles qui prennent trop de temps, pourquoi ?
Jester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 15h10   #9
Membre du Club
 
Inscription : février 2007
Messages : 187
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 187
Points : 41
Points : 41
Le modèle de données étant complexe, il y a en effet un certain nombre de requêtes portant sur de nombreuse jointure, il y a cependant des index, je vais donc m'orienter vers l'optimisation du modèle de données / requêtes.

Auriez vous des outils à me conseiller permettant de m'aider dans cette tache de benchmark / optimisation / normalisation ?

Il en existe plutôt pas mal sur le marché, je ne sais pas vers le(s)quel(s) me tourner.

Merci
Neilime05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 16h59   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Quelques logiciels de modélisation :
- La star "PowerAMC".
Cher mais paraît-il très performant, uniquement sous Windows.

- Open Modelsphere.
Gratuit et assez complet mais parfois capricieux et nécessitant quelques manipulations pas ergonomiques dans certains cas (héritages notamment).

- JMerise.
Tout nouveau et gratuit.

- MySQL Workbench.
Dédié à MySQL donc en principe parfaite cohérence avec les types et les spécificités de MySQL. Par contre, on modélise directement les tables ; pas de MCD Merisien ou de diagramme de classes UML avec ce logiciel. Quand on n'est pas habitué à la modélisation, je conseillerai de toujours commencer par un MCD, fut-il simplifié (sans les propriétés) et fait à la main.

Et pour vous aider à bien modéliser :
- le cours de SQLPro sur la modélisation Merise ;
- la bible de fsmrel sur la normalisation des BDD ;
- le forum Schéma.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 18h42   #11
Membre chevronné
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 624
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 624
Points : 633
Points : 633
Je remonte que passer vos tables en InnoDB pourrait résoudre déjà une partie du problème sans grand effort.

En effet, vous avez beaucoup d'écriture. Or sous MyISAM l'écriture bloque la table donc on ne peut y lire et il faut attendre.

Faite déjà le test sur un clone pour voir.

Ensuite listez la liste des requêtes les plus fréquentes et vérifiéz qu'elles n'utilisent pas de lecture séquentielles dans les tables (via EXPLAIN, http://dev.mysql.com/doc/refman/5.0/...g-explain.html mais la suite mysql propose peut-être un outil graphique) mais passent toujours par des index.

Sur la prod, en ligne de commande lancez top et regardez le %id (idle), %wa (waiting I/O), ça vous dira pas mal de chose, notemment si vous êtes CPU bound ou IO bound.

Si c'est IO bound (et c'est fort probable), InnoDB et un bon buffer de 10Go solutionnera probalement le problème.
Si c'est %id est important, c'est que vous avez trop de lock du aux écritures. Là encore InnoDB peut gérer le problème.

Après vous pouvez refaire le modèle de données et recoder une bonne partie de l'application si vous avez beaucoup de temps à perdre. Mais dans tout les cas ne restez pas en MyISAM, c'est n'est pas un mode de stockage sûr pour vos données.
Jester est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h56.


 
 
 
 
Partenaires

Hébergement Web