IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQLite Discussion :

Recommandation - Best practices : Taille table ?


Sujet :

SQLite

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Recommandation - Best practices : Taille table ?
    Bonjour,

    Pour une petite application (c++), j'ai besoin de stocker quelques données, et mon choix s'est porté vers SQLite (J'ai quelques connaissances Oracle/MySQL/MSSQL) pour la simplicité d'accès et d'écriture en comparaison à un simple stockage "brut" avec des traitements d'extraction de string etc...
    Bref, du coup, on m'a longtemps dis que, sur une vraie base de données (client/serveur, et où le stockage des données dépassent la RAM disponible), l'architecture de la base est très importante , comme par exemple, ne pas créer de table surdimensionnées (en terme de nombre de colonnes), mais préféré plusieurs tables avec relations entre elles.

    Mais pour le cas d'une petite base SQLite, est-ce que ce genre de raisonnement tient toujours ?

    Dans mon cas, j'ai :
    - une table de 800 lignes maximum avec 16 colonnes
    - une table d'environ 3000 lignes avec 15 colonnes

    Mon problème sur la seconde table, c'est qu'elle n'est pas complète, il y a au total 86 colonnes que je devrais rajouter.
    Pour une si petite base, de quelques MO qui n'évoluera que très peu, est-ce plus performant de faire une table de +100 colonnes () ou est-il préférable que je fasse 2 autres tables de 40 colonnes et 46 colonnes avec lesquelles je pourrais faire des join avec ma table de base de 15 colonnes ?

    J'espère que c'est assez clair...
    Merci d'avance !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 561
    Points
    52 561
    Billets dans le blog
    5
    Par défaut
    Les SGBDR fonctionnement tous de la même façon, donc les règles de bonnes pratiques sont les mêmes. La particularité de SQL lite est d'être MONO utilisateurs. C'est marqué dans le doc, et la doc recommande de ne pas l'utiliser s'il y a des utilisateurs concurrents.
    En gros SQL Lite se limite à de l'embarqué, c'est à dire qu'un seul process accède à la base (par exemple pour une montre connecté, un smartphone, ou un frigo intelligent...)
    Pour une application de gestion quel qu'elle soit, si de multiples utilisateurs y accèdent, la concurrence n'étant pas géré de manière efficace, vous pouvez avoir :
    • des attentes
    • des blocages
    • des verrous mortels
    • des mises à jour incohérentes



    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse.

    Dans mon cas, l'application se basera sur les données présentes dans la base SQLite pour alimenté tout un tas de champ en fonction de certains critères, mais elle sera bien mono utilisateur.
    Chaque utilisateur aura une copie de la base avec le logiciel.

    Mais est-ce surdimensionné (ou même aberrant) de créer une table d'environ 100 colonnes en sachant que la base ne fera que quelques Mo (peut-être 5/10Mo) ?

    Je ne suis pas développeur professionnel, ni même DBA, c'est un petit projet personnel pour une "petite" communauté, mais quitte à faire un travail, j'aimerai le faire le mieux possible.

    Encore merci.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    la taille d'une base SQLite peut faire jusqu'à 140 T donc coté taille c'est plus le support qui limitera la taille de la base.
    une autre limite la taille du cache de récupération des données (2 M par défaut et 1 M sous Androïd)
    tout est expliqué ici https://www.sqlite.org/limits.html

    extraits
    The default setting for SQLITE_MAX_COLUMN is 2000.
    SQLITE_MAX_SQL_LENGTH which defaults to 1000000.
    SQLite does not support joins containing more than 64 tables.
    etc...
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Ah merci pour le lien !
    Bon, par défaut 2000 colonnes... du coup avec mes 100 colonnes je devrais pas avoir de soucis de performances pour une si petite application/base !

    Encore merci à vous deux, bonne journée !

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 561
    Points
    52 561
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Astak Voir le message
    Ah merci pour le lien !
    Bon, par défaut 2000 colonnes... du coup avec mes 100 colonnes je devrais pas avoir de soucis de performances pour une si petite application/base !

    Encore merci à vous deux, bonne journée !
    Soucis de performance peut être pas. Soucis d'écriture de requête, probable.

    Et le jour ou vous voudrez faire une base consolidée de ces petites bases, vous serez dans la merde.

    Donc, modélisez correctement au départ, cela vous évitera bien des problèmes futurs !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MySQL : Best Practice : Nombre de champ dans une table
    Par Ziquet dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/05/2008, 16h18
  2. [Best practice] Mise en forme d'un article div/table
    Par nuke_y dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 20/11/2007, 15h41
  3. Réponses: 4
    Dernier message: 23/05/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo