2010-11-20 2 views
0

Je suis en train de développer un projet qui utilisera une petite table (disons moins de 10 mégaoctets au total) sur un PC pour un utilisateur à la fois. (Mais bien sûr, sera installé sur de nombreux ordinateurs).Puis-je utiliser raisonnablement Dictionary (of Integer, Structure) au lieu d'une base de données RDBMS?

Je dis petite parce que 10 Mo ressemble 1/300e de la RAM disponible actuellement sur mon PC (!)

Dans ce tableau, je stocker des chaînes en forme de documents XML ou des éléments de chacun 2 à 4 kilo-octets.

Essayer d'éviter la tête énorme et processus d'installation difficile d'un SGBDR, ma question est:

Est-il raisonnable d'exécuter la table comme un dictionnaire (clé, valeur) où je vais créer, mettre à jour et supprimer articles et contre lequel je vais effectuer des requêtes LINQ?

Le temps de chargement (désérialisation) sera-t-il comparable au temps nécessaire pour se connecter à une base de données SQL Server compacte?

Vais-je être en mesure de requête LINQ la partie de la valeur des éléments avec quelque chose comme:

Dim Results = from r in myDictionnary 
       where r.Value like "*mySearchString*" 
       Select r 

for each aChunk in Results 

    dim xChunk as xElement = xElement.parse(aChunk) 
    etc... 

next 

Un indice très apprécié. Merci d'avance

Répondre

1

Le dictionnaire devrait fonctionner correctement. Les requêtes Linq fonctionneront également.

Si cela devient plus compliqué qu'une seule table, je considérerais une base de données intégrée comme MySQL ou SQL Server compact.

1

Cette solution fonctionnera bien et le temps de chargement devrait être presque instantané. 10 Mo n'est pas beaucoup de données de nos jours, donc le temps de lecture sera très petit et la désérialisation du XML sera très rapide. Cependant, il est entendu qu'une base de données en mémoire ne bénéficiera pas des avantages que vous obtiendrez avec une solution SGBDR ou noSQL. Plus important encore, les modifications apportées à la base de données ne sont pas conservées jusqu'à ce que l'utilisateur ferme le programme ou enregistre la base de données. Si le programme se bloque ou que le système perd de la puissance, toutes les modifications apportées à la base de données en mémoire depuis la dernière sauvegarde seront perdues.

Évidemment, ce n'est pas un problème si la "table" est en lecture seule.

Questions connexes