Existe-t-il un composant DBGrid capable de gérer rapidement de grands ensembles de données?
-
03-07-2019 - |
Question
Les grands ensembles de données, des millions d'enregistrements, nécessitent une programmation spéciale pour maintenir la vitesse dans DBGrids.
Je veux savoir s'il existe des composants prêts à l'emploi pour Delphi (DBGrids) qui le font automatiquement?
EDIT Par exemple: Certaines bases de données possèdent des fonctionnalités telles que l'extraction des premiers enregistrements X (par exemple, 100 enregistrements). Lorsque j'atteins le bas avec le défilement, je souhaite récupérer automatiquement les 100 prochains. À l'inverse, lorsque j'arrive au début, je souhaite récupérer les 100 précédents. Je sais que je peux programmer ceci, mais il est certainement possible de propager cette fonctionnalité DBGrid contrôle où DBGrid effectue la mise en mémoire tampon. Cela vous épargnera pas mal de programmation - il vous suffira de définir la "taille du tampon". pour ainsi dire.
La solution
Je voudrais jeter un coup d'œil à Developer Express QuantumGrid Suite . (@birger: vous venez de taper plus vite ;-)) Donc, je ne fais pas que dupliquer la réponse, quelques éclaircissements:
La grille DevExpress utilise un contrôleur de données doté de plusieurs modes pour contrôler les données liées à la grille. L’un d’eux est exactement ce que vous recherchez:
Mode réseau
En mode Grid, seul un mode fixe le nombre d'enregistrements de jeu de données est chargé en mémoire. Parce que seul un nombre limité ensemble d'enregistrements sont extraits de la jeu de données, tri automatique, filtrage et les calculs récapitulatifs sont désactivés en mode réseau (doit être contrôlé manuellement à la place). Par défaut, cela le mode est désactivé et le ExpressDataController charge tout enregistrements dans un jeu de données.
Cela présente certains inconvénients, qui semblent assez évidents: vous ne pouvez pas faire de résumé, trier ou filtrer si vous n'avez pas tous les enregistrements sous la main.
Autres conseils
Vous voudrez peut-être jeter un coup d'œil à la magnifique (libre, open source, licence double MPL 1.1 et GPL donc utilisable dans les applications à source fermée) Virtual TreeView et ses descendants fournis par l'utilisateur (faites défiler la page vers le bas pour les trouver.)
Éditer pour refléter l'édition de la question: Virtual TreeView vous permet non seulement de gérer des millions de nœuds sans les conserver en mémoire, mais c'est en fait la méthode préférée pour l'utiliser. Vous fournissez les données par le biais de rappels d’événements, le cas échéant, et vous pouvez indiquer à l’arbre de mettre ces données en cache (ou non).
Oh, et bien sûr, il dispose également d'un mode grille / rapport dans lequel il peut fonctionner comme une table (définissez simplement la propriété GridExtensions sur True.)
NextGrid est une grille légère, rapide et agréable pour Delphi
http://www.bergsoft.net/component/next-grid /features.htm
GESTION DE GRANDES QUANTITÉS DE CELLULES SANS PERTE DE VITESSE
NextGrid peut gérer une très grande quantité des cellules sans perdre de vitesse. La vitesse d'ajouter, modifier et supprimer des données ne dépend pas de la quantité de cellules. Dans la démo NextGrid, vous pouvez voir à quelle vitesse NextGrid fonctionne avec 100 000 lignes et 10 colonnes = 1 000 000 cellules
Je pense que la DevExpress Quantumgrid prend en charge cet excellent résultat.
désolé, je viens de voir votre commentaire à Neftal & # 237;
si vous souhaitez apporter 100 enregistrements par heure, puis récupérer les 100 suivants, ces travaux relatifs aux composants d'accès à la base de données, consultez les composants devart , ils offrent des composants d'accès direct à la base de données la plus utilisée. , et ils ont la fonctionnalité que vous demandez et plus encore: