7
votes

Comment afficher les résultats de la requête de base de données de 100 000 lignes ou plus avec HTML?

Nous réécrangons un site Web utilisé par l'un de nos clients. Le trafic utilisateur est très faible, moins de 100 visiteurs uniques par semaine. Il s'agit essentiellement d'une belle interface avec leurs données dans nos bases de données. Il leur permet d'interroger et de filtrer sur différents ensembles de données.

Nous réécrivons le site en Python, réutilisant la même base de données Oracle que les données sont actuellement activées. La version actuelle est écrite dans une ancienne version ancienne de Coldfusion. Une des choses que ColdFusion fait bien est bien affiche des tonnes d'enregistrements de base de données sur une seule page. Il est capable d'afficher des centaines de milliers de lignes à la fois sans collision du navigateur. Il utilise un applet Java et on dirait que le contenu des rangées est peut-être compressé et transmis par le HTML ou quelque chose. Il existe un volume de données important dans le HTML mais il n'est pas affiché - il vient de rendu par l'applet Java.

J'ai essayé plusieurs solutions JavaScript, mais elles chargent toutes sur le fait que les données seront présentes dans une table HTML ou quelque chose le long de ces lignes. Cela provoque des navigateurs geler et manquer de mémoire.

Est-ce que quelqu'un connaît des solutions à cette situation? Notre client aime la possibilité de faire défiler toutes ces données sans cliquer sur une "page suivante".


0 commentaires

6 Réponses :


1
votes

La plupart des gens, dans ce cas, utiliseraient un cadre. Le cadre le mieux documenté et le plus populaire de Python est Django. Il a un bon support de base de données (y compris Oracle), et vous aurez le temps le plus facile à utiliser de l'aide car il existe une telle communauté de Django active.

Vous pouvez essayer d'autres cadres, mais si vous êtes attaché à Python, je recommanderais Django.

Bien sûr, Jython (si c'est une option), rendrait votre travail très facile. Vous pouvez prendre le cadre Java existant, vous avez et utilisez simplement Jython pour créer un frontend (et continuer à utiliser vos classes Java et vos classes Java et votre serveur Java).

Le problème de la mémoire est intéressant; Je serais curieux de voir ce que vous venez.


0 commentaires

1
votes

Avez-vous essayé JQGrid ? Cela peut être buggy parfois, mais dans l'ensemble, c'est l'une des meilleures réseaux JavaScript. C'est assez efficace pour traiter avec de grands ensembles de données. Il dispose également d'une caractéristique permettant à la grille récupère des données asynchrones dans des morceaux, mais permet toujours de faire défilement continu. Il suffit de demander plus de données car l'utilisateur vous fait défiler.


0 commentaires

2
votes

J'utilise Ouvrir Rico 'S LiveGrid dans un projet visant à afficher une table avec des milliers de rangées dans un page comme une table de défilement sans fin. Cela fonctionne vraiment bien jusqu'à présent. Le tableau demande des données sur demande lorsque vous faites défiler les lignes. Les paramètres sont envoyés sous forme de paramètres d'obtention simples et la réponse que vous devez créer sur le SerVerside est simple XML. Il devrait être possible de mettre en place un backend de données pour un Rico LiveGrid à Python.


2 commentaires

Impair. Le site Web de Rico ne semble pas être configuré correctement. Il suffit de lancer un téléchargement pour chaque page au lieu de servir le contenu du contenu. Je continuerai à essayer de le regarder, cependant.


J'ai remarqué cela aussi, vous pouvez toujours l'obtenir de Sourceforge , mais la page de démonstration ne fonctionne pas, ce qui serait Probablement la page la plus intéressante pour vous de voir ce qu'il peut faire.



8
votes

J'ai fait exactement ce que vous décrivez en utilisant ce qui suit (qui fonctionne très bien):

jQuery datables

Il vous permet de faire la pagination "aller à faire défiler". Vous pouvez donc désactiver les flèches de pagination en faveur d'un défilement "pour toujours".


3 commentaires

Agréable. Je vais examiner cela plus. On dirait que j'aurais besoin d'une combinaison de la source de données "infinie défilante" et de son côté serveur.


Je vais aller de l'avant avec des datables pour JQuery. Bien que je n'utilise pas Django, j'ai trouvé un bon exemple de la façon d'écrire la partie côté serveur pour accéder à l'exemple de défilement infini. J'utilise le ballon, BTW. Merci, Jakub. Exemple: assembler.com/code/datatables_demo/ Subversion / Nœuds / Trunk / 1_6 _2 / ...


Il utilise $ (document) .Ready () ... qui attend toujours que toute la charge de la charge et que les datables rendent alors les tables compactes



3
votes

Essayez avec jQuery Scroll.

au lieu de défilement de l'image, vous devez faire défiler des données.

Vous devez pondérer des données dans les divs, au lieu d'images.

http://www.smoothdivscroll.com/#quickdemo

Cela devrait fonctionner. Je souhaite.

Vous devez quand même votre excellent client: -)

quelque chose lié à votre q

http: // www. 9lessons.info/2009/07/load-Data-Quelle-scroll-with-jquery-php.html

http://api.jquery.com/scroll/


0 commentaires

1
votes

J'ai fait quelque chose comme ça il y a quelque temps et j'ai mis en œuvre avec succès la table de données de YUI combinée à Django

http://developer.yahoo.com/yui/datatable/

Cela vous donne le tri des colonnes, la pagination, le défilement et ainsi de suite. Il vous permet également d'utiliser une variété de sources de données telles que JSON ou XML.


0 commentaires