


Paginage des données en temps réel avec une pagination basée sur le curseur
La pagination est une technique pour briser de grands records en plus petites portions appelées pages. En tant que développeur, vous devez être familiarisé avec la mise en œuvre de la pagination, mais la mise en œuvre de la pagination pour les données en temps réel peut devenir difficile même pour les développeurs expérimentés. Dans ce tutoriel, nous allons discuter des cas d'utilisation pratiques et des solutions pour la pagination de données en temps réel et la pagination basée sur le curseur.
Les plats clés
- La pagination est une méthode utilisée pour diviser de grands ensembles d'enregistrements en parties plus petites, appelées pages. La mise en œuvre de la pagination pour des données en temps réel peut être difficile en raison de mises à jour fréquentes et du potentiel de résultats inexacts lors de l'ajout ou de la suppression des données.
- Divers sites de réseautage social, tels que Twitter et Facebook, ont mis en œuvre avec succès la pagination de données en temps réel. Ils utilisent une pagination basée sur le curseur, qui s'appuie sur des identifiants uniques (curseurs) plutôt que sur le nombre d'enregistrements pour la pagination.
- La pagination basée sur le curseur nécessite au moins une colonne avec des valeurs séquentielles uniques, similaires au paramètre MAX_ID de Twitter ou à Facebook après le paramètre. Il a également besoin d'un paramètre de comptage pour filtrer un nombre limité de résultats, et des URL suivantes et précédentes pour naviguer dans les données.
- La pagination basée sur le curseur est généralement plus efficace et fiable que la pagination basée sur le décalage, en particulier pour les données en temps réel ou les grands ensembles de données. Il réduit la charge sur le serveur et rend le processus de pagination plus rapide et plus efficace.
- La mise en œuvre de la pagination basée sur le curseur implique quelques étapes, notamment en décidant d'un identifiant unique à utiliser comme curseur, en modifiant la requête de la base de données pour récupérer des enregistrements en fonction de ce curseur, et à la mise à jour de l'interface utilisateur de l'application pour gérer les données paginées et permettre aux utilisateurs de naviguer dans les pages.
Identification des problèmes dans la pagination de données en temps réel
Wikipedia définit les données en temps réel comme des informations livrées immédiatement après la collecte. Il n'y a pas de retard dans l'aptitude des informations fournies. Dans de telles applications, il est difficile de fournir des données paginées précises en raison des mises à jour fréquentes. Jetons un coup d'œil aux problèmes de pagination standard lors de la gestion des données en temps réel.
-
suppose que les données sont statiques et ne changent pas fréquemment - dans la pagination par défaut, un ensemble d'enregistrements récupéré est divisé en plusieurs pages. Comme les données ne sont pas fréquemment modifiées, les utilisateurs ont l'impression que la pagination fonctionne avec précision, mais les résultats de la pagination deviennent inexacts lors de l'ajout de nouvelles données ou de la suppression des données existantes.
-
La pagination ne considère que le nombre d'enregistrements, au lieu de chaque enregistrement individuel - les enregistrements sont divisés en pages en utilisant le nombre total d'enregistrements et paginés normalement. Il ne considère pas si chaque enregistrement tombe dans la bonne page sur la pagination. Cela peut conduire à un affichage redondant des enregistrements.
Compte tenu de ces points, il est difficile d'utiliser les techniques de pagination par défaut pour gérer les données en temps réel. Essayons d'identifier les problèmes en utilisant un scénario pratique.
Supposons que nous avons 20 enregistrements initialement et que nous utilisons 10 comme limite pour diviser les enregistrements en pages. L'image suivante montre comment les enregistrements sont divisés en pages.
Supposons maintenant que l'ensemble de résultats est mis à jour par cinq nouveaux enregistrements pendant que nous sommes sur la première page. L'image suivante montre le scénario actuel.
Maintenant, nous naviguons vers la deuxième page. Sur la base de notre première image, il devrait récupérer les enregistrements de 1 à 10. Cependant, les enregistrements avec les numéros 15-6 seront récupérés. Vous pouvez clairement voir que les numéros d'enregistrement 15-11 sont affichés à la fois dans la première page ainsi que dans la deuxième page.
cas d'utilisation pratique de la pagination de données en temps réel
Comme nous le savons tous, réinventer la roue n'est pas quelque chose qu'un développeur devrait faire. Nous devons examiner les techniques de pagination existantes des sites qui ont résolu ces problèmes avant de penser à construire le nôtre. De nombreux sites de réseaux sociaux tels que Twitter et Facebook fournissent des données en temps réel dans leurs profils d'utilisateurs. Dans cette section, nous examinerons les cas d'utilisation pratiques de pagination de données en temps réel en utilisant certains des sites les plus populaires.
pagination basée sur Twitter API basée sur le curseur
Les profils d'utilisateurs Twitter sont fréquemment remplis de nouveaux tweets, de sorte que le mécanisme de récupération des données de temporisation Twitter devrait être un bon début pour identifier les techniques de pagination dans les flux de données en temps réel. Voyons comment cela fonctionne en utilisant une méthode API Twitter.
Ce qui suit contient un exemple de demande à la méthode des tweets de recherche d'API Twitter.
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
Dans l’URL ci-dessus, nous demandons les tweets les plus récents contenant le mot «PHP» et cassent les résultats des résultats en blocs de 10 en utilisant le paramètre Count. Il s'agit du comportement typique de la pagination de décalage où nous répondons au nombre d'enregistrements. Mais ici, nous pouvons voir deux paramètres supplémentaires appelés depuis_id et max_id, qui permet une pagination basée sur le curseur. Voyons comment fonctionne la pagination basée sur le curseur en utilisant notre exemple précédent.
Nous avons eu 20 enregistrements brisés en 2 pages et supposons que nous sommes sur la première page. 5 nouveaux enregistrements sont ajoutés en haut de la liste. L'image suivante prévisualise le scénario actuel.
Voyons maintenant une partie de la réponse générée pour la première page de la demande de recherche Twitter. Vous pouvez afficher le format de réponse complet ici.
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
Comme vous pouvez le voir, la section Search_metadata fournit des détails sur les résultats. Il générera l'URL Next_Results, au cas où il y aura plus d'enregistrements à paginer. Nous utilisons principalement le paramètre MAX_ID pour la pagination. Avec chaque réponse, nous récupérerons le paramètre MAX_ID et nous pouvons l'utiliser pour générer le jeu de résultats suivant. Nous utilisons le paramètre MAX_ID pour recevoir des résultats plus anciens que l'ID donné.
Dans notre exemple, nous devons récupérer le paramètre MAX_ID comme enregistrement 11 tout en affichant les enregistrements 20-11. Ensuite, nous passons le Max_ID pour générer le jeu de résultats suivant. Ainsi, nous obtiendrons les résultats précis comme indiqué dans l'image suivante.
Comme vous pouvez le voir, nous avons les résultats précis pour la deuxième page en éliminant 15 enregistrements en haut au lieu de 10 dans une pagination basée sur le décalage. Dans la pagination basée sur le curseur, nous ne pouvons pas considérer le concept des pages, car il change rapidement, de sorte que les résultats seront considérés comme précédents ou suivants. Généralement, Max_ID est suffisamment efficace pour générer des résultats précis, mais il peut y avoir des scénarios où puisque_ID est également essentiel tout en paginant dans les deux sens. Vous pouvez consulter des exemples plus avancés d'utilisation à la fois max_id et depuis_ID sur la section des développeurs de Twitter.
Pagination basée sur Facebook API basée sur le curseur
La mise en œuvre de l'API de Facebook est légèrement différente de celle de Twitter, même si les deux API utilisent la même théorie. Jetons un coup d'œil à la réponse d'un exemple de demande d'API Facebook.
"search_metadata": { "max_id": 250126199840518145, "since_id": 24012619984051000, "refresh_url": "?since_id=250126199840518145&q=php&result_type=recent&include_entities=1", "next_results": "?max_id=249279667666817023&q=php&count=10&include_entities=1&result_type=recent", "count": 10, "completed_in": 0.035, "since_id_str": "24012619984051000", "query": "php", "max_id_str": "250126199840518145" }
Comme vous pouvez le voir, Facebook utilise deux curseurs basés sur des chaînes appelées avant et après, pour la pagination, au lieu de depuis_ID et max_id. Dans Facebook, le curseur avant pointe vers le début de la page tandis que le curseur After pointe jusqu'à la fin de la page.
La plupart des API avec des données en temps réel utilisent ce mécanisme pour paginer avec précision à travers leurs résultats. En tant que développeurs, nous devons connaître la théorie derrière la pagination basée sur le curseur afin d'utiliser les API existantes et de créer la nôtre si nécessaire.
Les bases de la création de pagination pour les données en temps réel
La mise en œuvre de la pagination de données en temps réel est une tâche complexe au-delà de la portée de ce tutoriel, nous allons donc examiner les besoins de base et le processus de création d'un simple mécanisme de pagination pour comprendre la pagination basée sur le curseur.
Identifions les composants de base de la pagination basée sur le curseur, en utilisant les exemples discutés précédemment.
-
Curseurs - Nous devons avoir au moins une colonne avec des valeurs séquentielles uniques pour implémenter une pagination basée sur le curseur. Cela peut être similaire au paramètre MAX_ID de Twitter ou à Facebook après le paramètre.
-
Nombre - Nous avons besoin du paramètre de comptage comme avec une pagination basée sur le décalage pour filtrer un nombre limité de résultats, avant ou après le curseur.
-
URL suivante - Ceci est nécessaire au cas où nous fournirons la pagination via une API. Les utilisateurs doivent savoir si la page suivante est disponible et comment obtenir le prochain ensemble de données.
-
URL précédente - Ceci est nécessaire au cas où nous fournissons la pagination via une API. Les utilisateurs doivent savoir si la page précédente est disponible et comment obtenir le prochain ensemble de données.
Ce sont les besoins de base de la pagination basée sur le curseur. Les développeurs travaillent souvent avec une pagination basée sur le décalage et ont rarement la chance de travailler avec une pagination basée sur le curseur, il est donc important d'identifier les différences et les avantages de chaque technique pour les utiliser dans des scénarios appropriés.
-
Dans la pagination de décalage, nous pouvons trier par n'importe quelle colonne et paginer les résultats tandis que la pagination basée sur le curseur dépend du tri de la colonne de curseur unique.
-
La pagination de décalage contient des numéros de page en plus des liens suivants et précédents. Mais en raison de la nature très dynamique des données, nous ne pouvons pas fournir de numéros de page pour la pagination basée sur le curseur.
-
Généralement, la pagination de décalage nous permet de naviguer dans les deux directions tandis que la pagination basée sur le curseur est principalement utilisée pour la navigation vers l'avant.
Jusqu'à présent, nous avons examiné les besoins de base et les différences de pagination basée sur le curseur. Nous pouvons maintenant passer à une implémentation d'échantillon pour identifier son fonctionnement.
Implémentation de la pagination basée sur le curseur de base
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
-
Tout d'abord, nous créons la connexion de la base de données à l'aide de PDO. Ensuite, nous exécutons la fonction HandlePaginationData pour paginer les résultats.
-
Ensuite, nous vérifions si le paramètre MAX_ID ou MIN_ID est disponible en URL. Max_id est similaire à Facebook après le paramètre et utilisé pour avancer. MIN_ID est similaire au paramètre avant Facebook et utilisé pour naviguer vers l'arrière. De plus, nous avons configuré la direction de navigation, la clause WHERE en utilisant max_id ou min_id et l'ordre de tri.
-
Ensuite, nous exécutons la requête pour obtenir le nombre complet de résultats suivis de la même requête avec une instruction limite pour affiner les résultats.
-
Au cas où nous traversons la direction précédente, nous devons changer le tri à l'ASC. Sinon, il récupérera les enregistrements les plus récents au lieu de la page précédente. Nous inversons les enregistrements dans le tableau pour les montrer comme descendant.
-
Ensuite, nous parcourons les résultats. Pendant la boucle, nous attribuons l'ID du premier enregistrement en tant que min_id et dernier enregistrement en tant que max_id. Ces valeurs de curseur sont utilisées pour filtrer les données précises en éliminant la duplication.
-
Enfin, nous pouvons consulter la fonction Paginator pour implémenter les liens de pagination.
"search_metadata": { "max_id": 250126199840518145, "since_id": 24012619984051000, "refresh_url": "?since_id=250126199840518145&q=php&result_type=recent&include_entities=1", "next_results": "?max_id=249279667666817023&q=php&count=10&include_entities=1&result_type=recent", "count": 10, "completed_in": 0.035, "since_id_str": "24012619984051000", "query": "php", "max_id_str": "250126199840518145" }
Le code suivant contient le code d'initialisation pour la pagination générée dans cette section.
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
Maintenant, nous avons un échantillon de pagination de données simple pour comprendre comment fonctionne la pagination de données en temps réel. Utilisez ce code et paginez via les résultats. En paginant, ajoutez quelques enregistrements à la fin de la table pour le rendre en temps réel. Paginez ensuite vers l'avant et vers l'arrière pour vérifier les duplications de données en pages. Faites de même avec une pagination basée sur le décalage pour comprendre la différence.
Conclusion
Dans ce tutoriel, nous avons appris la théorie derrière la pagination de données en temps réel avec une pagination basée sur le curseur. Faites-nous savoir vos pensées et vos expériences dans les commentaires ci-dessous!
Questions fréquemment posées (FAQ) sur la pagination basée sur le curseur
Quelle est la principale différence entre la pagination basée sur le décalage et le curseur?
La pagination basée sur le décalage implique de sauter un certain nombre d'enregistrements dès le début, puis de récupérer un nombre défini de enregistrements. Cependant, cette méthode peut entraîner des problèmes tels que des enregistrements en double si des données sont ajoutées ou supprimées pendant la pagination. D'un autre côté, la pagination basée sur le curseur utilise un identifiant unique (le curseur) du dernier enregistrement récupéré pour récupérer le prochain ensemble d'enregistrements. Cette méthode est plus efficace et évite les problèmes associés à la pagination basée sur le décalage, ce qui la rend idéale pour les données en temps réel.
Comment la pagination basée sur le curseur gère-t-elle les données en temps réel?
Cursor - La pagination basée sur une base est particulièrement efficace pour les données en temps réel car elle utilise un identifiant unique (le curseur) du dernier enregistrement récupéré pour récupérer le prochain ensemble d'enregistrements. Cela signifie que même si de nouvelles données sont ajoutées ou que les données existantes sont supprimées pendant le processus de pagination, le curseur pointera toujours vers le prochain enregistrement correct, garantissant qu'aucun enregistrement n'est manqué ou dupliqué. être utilisé avec n'importe quel type de données?
Oui, la pagination basée sur le curseur peut être utilisée avec n'importe quel type de données. Cependant, il est particulièrement efficace avec des données en temps réel ou de grands ensembles de données où l'efficacité est cruciale. Le curseur peut être n'importe quel identifiant unique, comme un horodatage ou un identifiant unique, qui peut être utilisé pour récupérer le prochain ensemble d'enregistrements.
Comment la pagination basée sur le curseur améliore-t-elle les performances?
La pagination basée sur le curseur améliore les performances en réduisant la quantité de données qui doivent être traitées immédiatement. Au lieu de récupérer tous les enregistrements, puis de sauter un certain nombre, la pagination basée sur le curseur ne récupère que l'ensemble suivant d'enregistrements basé sur le curseur. Cela réduit la charge sur le serveur et rend le processus de pagination plus rapide et plus efficace.
Comment puis-je implémenter une pagination basée sur le curseur dans mon application?
La mise en œuvre de la pagination basée sur le curseur dans votre application implique quelques étapes. Tout d'abord, vous devez décider d'un identifiant unique à utiliser comme curseur. Cela pourrait être un horodatage, un identifiant unique ou toute autre valeur unique. Ensuite, vous devez modifier votre requête de base de données pour récupérer des enregistrements en fonction de ce curseur. Enfin, vous devez mettre à jour l'interface utilisateur de votre application pour gérer les données paginées et permettre aux utilisateurs de naviguer dans les pages.
Quels sont les inconvénients potentiels de la pagination basée sur le curseur?
Alors que la base du curseur basé sur le curseur La pagination est plus efficace et fiable que la pagination basée sur le décalage, elle présente quelques inconvénients potentiels. Par exemple, il peut être plus complexe à mettre en œuvre, surtout si vos données n'ont pas un identifiant unique à utiliser comme curseur. De plus, il peut ne pas convenir à tous les cas d'utilisation, par exemple lorsque vous devez passer à un numéro de page spécifique.
La pagination basée sur le curseur peut-elle être utilisée avec GraphQL?
Oui, curseur -La pagination basée sur une base peut être utilisée avec GraphQL. En fait, GraphQL a une prise en charge intégrée pour la pagination basée sur le curseur via la spécification de relais. Cela vous permet d'implémenter facilement une pagination efficace et fiable dans vos applications GraphQL.
Comment la pagination basée sur le curseur fonctionne-t-elle avec MySQL?
La pagination basée sur le curseur peut être implémentée dans MySQL en utilisant un unique Identifiant, comme un horodatage ou un identifiant unique, comme curseur. Vous pouvez ensuite modifier votre requête SQL pour récupérer des enregistrements en fonction de ce curseur, en utilisant les clauses «où» et «limiter» pour spécifier la plage d'enregistrements à récupérer.
Comment le Slack utilise-t-il une pagination basée sur le curseur dans leur API?
Slack utilise une pagination basée sur le curseur dans leur API pour récupérer efficacement de grandes quantités de données. Ils utilisent un identifiant unique comme curseur et fournissent ce curseur dans la réponse API pour permettre aux clients de récupérer le prochain ensemble d'enregistrements. Cela leur permet de gérer de grands ensembles de données avec des performances et une fiabilité élevées.
Quelle est la spécification de l'API JSON pour la pagination basée sur le curseur?
La spécification de l'API JSON pour la pagination basée sur le curseur implique l'utilisation d'un unique Identifiant comme le curseur et incluant ce curseur dans l'objet «liens» de la réponse de l'API. Cela permet aux clients de récupérer facilement l'ensemble des enregistrements suivants en suivant le lien fourni. Cette spécification fournit un moyen standard et cohérent d'implémenter une pagination basée sur le curseur dans les API JSON.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.
