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

VB.NET Discussion :

Meilleure façon de gérer une liste de 230.000 lignes ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 125
    Par défaut Meilleure façon de gérer une liste de 230.000 lignes ?
    Bonjour,

    Je dois gérer une liste de 230.000 lignes, chacune ayant 3 champs.
    Exemple :

    1;Fruit;Pomme
    2;Fruit;Raisin
    3;Légume;Courgette
    4;Légume;Carotte
    ...

    Je dois, avec mon programme VB.Net, pouvoir accéder rapidement à ces données, en fonction du premier champ (l'identifiant unique).

    Comment gérer le mieux possible ce volume de données ?
    Actuellement, les options qui me semblent possible sont :
    - Un Tableau
    - Une Collection.

    Est-ce qu'il y a d'autres options ? Et laquelle serait la mieux adaptée à ce volume de données ?
    L'option Base de Données est-elle envisageable ? Le programme doit pouvoir être diffusé simplement, donc je ne me vois pas demander à l'utilisateur d'installer Oracle, MySQL ou SQL Server pour gérer ces 230.000 lignes. Et je ne me vois pas non plus gérer des bases comme SQLite ou équivalent depuis mon code VB.Net

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Bonjour,

    vue le volume de données, ne passe pas par un fichier .csv
    tu à intérêt à utiliser une base de données *transparent pour l'utilisateur*

    tu peux utiliser: *à ma connaissance*

  3. #3
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Perso j'opterais pour MS-Access dans ce cas.
    De plus, j'isolerais la deuxième valeur de la liste, qui semble correspondre à une catégorie, dans une table séparée, et j'utiliserais une valeur numérique comme clé étrangère.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 125
    Par défaut
    Merci pour vos réponses.

    Access me semble une bonne idée, mais est-ce que l'utilisateur a besoin d'avoir Access sur sa machine, ou est-ce que VB.Net a tout ce qu'il lui faut pour manipuler un fichier Access ?
    L'idée est que je créée chez moi (avec Access) une petite BdD. Ca génère un fichier TOTO.mdb. Ce fichier sera ensuite lu et manipulé par VB.Net.

    C'est ça ?

  5. #5
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    A ma connaissance pas besoin d'acces,
    Visual Studio a les librairies qui vont bien

  6. #6
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Pas besoin d'avoir Access installé. Les O.S. Windows ont le moteur Microsoft Jet intégré depuis XP.
    Utilise ADOX avec VB.Net pour créer le fichier si besoin, et ADO.NET gère très bien le reste.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    230k lignes ca fait moins de 10Mo
    donc même en csv ou autre ca peut se faire
    la base de données ou un simple fichier texte, ca dépend de l'utilisation
    une base de données c'est pratique pour faire des insert/update/delete/select
    un fichier c'est bien pour des données qui ne bougent pas trop

    après si tu pars sur un fichier (ou même une base access), tu peux mettre tout en ram au démarrage du programme ; ca va prendre quelques millisecondes pour lire le fichier et mettre les données dans un dictionary(of clé, classe_avec_le_reste_des_infos)
    après avec un dictionary en ram, ca prend quelques nanosecondes pour trouver les infos à partir de la clé identifiant
    je rejoins donc Meiteisho
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par SLE Voir le message
    Perso j'opterais pour MS-Access dans ce cas.
    Drôle de choix.

    Autant prendre un base in-process (Sql Server CE ou SqlIte) ou un serveur de type Sql Server Express.

    De plus, j'isolerais la deuxième valeur de la liste, qui semble correspondre à une catégorie, dans une table séparée, et j'utiliserais une valeur numérique comme clé étrangère.
    D'accord avec cela.

  9. #9
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut
    Bonjour,
    Peut être avec un dictionnaire clé/valeur

    Tu commence par créer une structure avec tes deux derniers champs,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public class clsItemProduit
     
    private _famille as string
    private _nom as string
     
    Public sub new (pFamille as string,pNom as string)
    _famille=pFamille
    _nom=pNom
    End sub
    End Class

    Et ensuite du défini un dictionnaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim listProduit as new Dictionnary(of Integer,of clsItemProduit)
    Que tu peux ensuite remplir en utilisant les KeyValuePair

  10. #10
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Pourquoi drôle de choix ?
    Citation Envoyé par jjcasalo Voir le message
    Le programme doit pouvoir être diffusé simplement, donc je ne me vois pas demander à l'utilisateur d'installer Oracle, MySQL ou SQL Server pour gérer ces 230.000 lignes
    Avec une DB Access, il ne faut rien installer (sauf sous W2K et précédentes versions, mais qui les utilise encore ?), tout est déjà dans windows pour la gérer.

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par SLE Voir le message
    Pourquoi drôle de choix ?
    Par ce que c'est une sombre daube.

    Avec une DB Access, il ne faut rien installer (sauf sous W2K et précédentes versions, mais qui les utilise encore ?), tout est déjà dans windows pour la gérer.
    C'est valable aussi avec les base in-process.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 125
    Par défaut
    OK, après avoir lu tous les messages, le gagnant est ... (roulements de tambours) ... la base de données intégrée à VB.Net (SQL Server compact).

    Ça devrait être plus simple, car c'est directement intégré à VB.
    Et ça va me permettre de faire ce que je veux.

    Merci à tous pour votre aide, comme toujours efficace et pertinente.

  13. #13
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Par ce que c'est une sombre daube.
    Je sais qu'Access c'est de la grosse daube en général, mais pour un projet simple comme celui-ci ça tient la route...

  14. #14
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Citation Envoyé par SLE Voir le message
    Je sais qu'Access c'est de la grosse daube en général, mais pour un projet simple comme celui-ci ça tient la route...
    si tu pouvais avoir une bmw pour le même prix qu'une logan, tu prendrais la logan ?

    sql server ce est gratuit, il offre des choses qu'access n'offre pas, donc pourquoi encore parler d'access de nos jours ...
    exemple : on migre une appli d'sql server ce vers sql server normal en quelques clics, alors que d'acces vers un vrai sgbdr il faut réécrire une bonne partie du code ! (le langage sql n'étant pas conforme à la norme dans access)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    L'avantage de la logan c'est que des néophites pouvaient la conduire assez facilement tandis qu'avec la bmw ils vont dans le ravin

    Ca peut eviter d'être appeler pour ajouter un produit, ou corriger une faute d'ortographe...

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

Discussions similaires

  1. Meilleur méthode pour gérer une liste des blocks
    Par smyley dans le forum Algorithmes et structures de données
    Réponses: 41
    Dernier message: 22/07/2008, 02h06
  2. [VB.net] Comment gérer une liste de threads ?
    Par pdgnr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/12/2006, 12h42
  3. Gérer une liste de diffusions
    Par oldos dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 07/06/2006, 16h51
  4. Réponses: 3
    Dernier message: 09/05/2006, 15h16
  5. Réponses: 7
    Dernier message: 24/02/2006, 16h31

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