SaaS et Design de Bdd : une base par client ou une base pour tous les clients ?

Discussion dans 'Administration d'un site Web' créé par fraid26, 7 Juillet 2015.

  1. fraid26
    fraid26 WRInaute discret
    Inscrit:
    3 Octobre 2008
    Messages:
    125
    J'aime reçus:
    0
    Bonjour à tous,

    Nous développons un logiciel SaaS, que nous personnalisons pour chacun de nos clients.

    Pour plus de sécurité et de facilité de gestion (personnalisations des tables, backup & restaurations notamment) nous avons décidé d'avoir une base de données par client.

    Nous avions un serveur dédié chez OVH auparavant, sans aucun soucis lié à mysql (pas de plantage, alors que nous avions environ 2000 bases de données).

    Depuis peu nous faisons appel à une société d'infogérance qui s'est occupée de mettre en place entre autres une réplication du serveur SQL. Depuis que nous avons migré, nous avons quotidiennement des erreurs du type "Mysql Server has gone away", ou encore "Deadlock found when trying to get lock; try restarting transaction". Ce qui est hyper gênant pour nos clients. Cette société nous assure que c'est dû au nombre de base "élevé" (nous avons fait le ménage il en reste 160), et qu'il vaudrait mieux mettre tous les clients dans une seule base, et une seule table (par type de données bien entendu).

    Je suis très surpris de ce type de préconisation, car j'ai dû mal à imaginer que les grands logiciels SaaS présents sur le marché fonctionnent avec une base unique pour l'ensemble de leurs clients ?!

    Quel est votre avis sur le sujet ?

    En vous remerciant !

    Frédéric
     
  2. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Re: SaaS & Design de Bdd : une base par client ou une base pour tous les clients ?

    Bonsoir,

    les deux solutions ont des avantages comme des inconvénients, après c'est du cas par cas, je me vois mal donner un avis tranché là dessus.

    Par contre une chose est sûre pour moi, c'est que ni les erreurs de "mysql server has gone away" ni les erreurs de type "deadlock" sont liées au grand nombre de BDD. J'aurais même tendance à dire que réduire le nombre de BDD peut parfois augmenter la probabilité de "deadlocks", dans le cas de requêtes avec indexes peu efficaces.

    Pour ce qui est du "mysql server has gone away", je vois 2 causes fréquentes :
    - Crash du serveur MySQL. Évidemment à corriger !
    - Timeout de la connexion client. S'il s'agit de longs traitements, vérifiez que la valeur du "wait_timeout" correspond à vos besoins ("show variables like 'wait_timeout'").

    En dehors de ces 2 cas, un problème réseau peut également le provoquer... et peut-être aussi dans le cas où on dépasse le "max packet size" de la connexion, bien que normalement ce n'est pas le même code d'erreur.
     
  3. fraid26
    fraid26 WRInaute discret
    Inscrit:
    3 Octobre 2008
    Messages:
    125
    J'aime reçus:
    0
    Re: SaaS & Design de Bdd : une base par client ou une base pour tous les clients ?

    Oui pour moi un mysql server has gone away me fait plus penser à un timeout... La variables que tu m'as indiqué contient 28800, ce qui correspond à 8h. Cette valeur de timeout n'est jamais atteinte , et il est quoi qu'il en soit causé par PHP (et / ou nginx) au bout de 10 minutes.

    J'ai oublié d'indiquer, le serveur tourne avec nginx, mysql et l'ensemble des tables en innoDB.

    Mon infogéreur m'indiquait que le problème venait du trop grand nombre de fichiers ouverts en simultané (à cause du nombre de tables et bases). Mais ce que j'ai du mal à comprendre, c'est que comme je vous disais sur mon ancien serveur j'avais au sens propre 10* plus de bases, et je n'ai jamais modifié le nombre de fichiers simultanés qui peuvent être ouverts...
     
  4. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Re: SaaS & Design de Bdd : une base par client ou une base pour tous les clients ?

    À ce niveau le plus simple c'est de vérifier : s'il s'agit d'un crash de MySQL, c'est très clairement indiqué dans les logs de mysqld.

    NginX tout comme Apache n'ont absolument aucun impact là dessus. Là c'est uniquement une histoire entre le client MySQL (ici PHP), et le serveur MySQL.
     
Chargement...
Similar Threads - SaaS Design Bdd Forum Date
Un logiciel ou saas qui extrait les title/desc/h1/h2 d'un site ? Débuter en référencement 19 Juin 2015
Vidéo de présentation pour logiciel SaaS Développement d'un site Web ou d'une appli mobile 22 Octobre 2013
Application en mode SAAS à l'étranger Droit du web (juridique, fiscalité...) 16 Août 2013
Saas, agenda et prise de rendez vous en ligne Demandes d'avis et de conseils sur vos sites 18 Mars 2013
[GPL3] Mode SAAS Développement d'un site Web ou d'une appli mobile 1 Juin 2011
Search Console Couverture :"Url désignée comme no-index" Crawl et indexation Google, sitemaps 8 Décembre 2019
WordPress Comment ajouter une meta author pour désigner l'auteur Référencement Google 22 Juillet 2019
Nouveau design des SERP Google (desktop) mai 2019 Référencement Google 31 Mai 2019
Nouveau design des SERP Google (mobile) mai 2019 Référencement Google 23 Mai 2019
Google Images : Nouveau design (2018) YouTube, Google Images et Google Maps 28 Septembre 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice