2010-05-24 5 views
0

J'ai une application simple pour stocker des contacts. Cette application utilise une base de données relationnelle simple pour stocker des informations de contact, comme le nom, l'adresse et d'autres champs de données.Récupération des données de la base de données. Récupérer seulement quand nécessaire ou obtenir tout?

Lors de la conception, je remets en question est venu à mon esprit:

Lors de la conception des programmes qui utilisent des bases de données, dois-je récupérer tous les enregistrements de base de données et de les stocker dans des objets dans mon programme, j'ai donc une performance très rapide ou je devrait toujours recueillir des données uniquement lorsque cela est nécessaire?

Bien sûr, la récupération de toutes les données ne peut être effectuée que si ce n'est pas trop, mais utilisez-vous cette approche lorsque vous vous assurez que la base de données sera petite (< 300 enregistrements par exemple)?

J'ai conçu une fois une application similaire qui récupère des données uniquement en cas de besoin, mais qui était lent (en utilisant une base de données Access).

Merci pour toute aide.

Répondre

1

Cela dépend beaucoup du type de données, l'état de votre application fonctionne, les transactions, plusieurs utilisateurs, etc.

En général, vous ne voulez pas tirer tout et exploiter les données au sein de votre application, car presque toutes les conditions ci-dessus entraîneront la non-synchronisation des données. Imaginez qu'un utilisateur mette à jour un contact pendant que quelqu'un d'autre consulte cette information à partir d'une version mise en cache dans son application.

Dans votre application, vous devez concevoir les requêtes de base de données de sorte qu'elles récupèrent ce qui va être affiché sur l'écran actuel. Si l'utilisateur consulte une liste de contacts, la requête récupère la totalité de la table de contacts ou une partie de celle-ci si vous affichez une vue paginée. Lorsqu'ils cliquent sur un contact, par exemple, pour plus d'informations, une nouvelle requête demande tous les détails de ce contact.

Pour les chaînes et les petites données comme celle d'une liste de contacts, vous ne devriez pas avoir de problème de vitesse avec une base de données relationnelle comme SQL, MySql ou Oracle.

1

Je pense qu'il vaudra mieux récupérer les données en cas de besoin, récupérer tous les enregistrements et les stocker dans l'objet peut être une surcharge. Et quand vous dites que vous avez une petite base de données, la récupération des enregistrements en cas de besoin ne devrait pas être un problème du tout.

Questions connexes