0

Au cours de mes recherches, je suis venu à travers ce JIRA pour le printemps-Data-Cassandra: https://jira.spring.io/browse/DATACASS-56Paging SELECT résultats de la requête de Cassandra dans l'application Spring Boot

maintenant, selon le poste ci-dessus, actuellement la DDC ne soutient pas Pagination dans l'application de printemps en raison de la structure de Cassandra. Cependant, je pense, si je peux tirer toute la liste des lignes dans une liste Java, puis-je Paginer cette liste? Je n'ai pas beaucoup d'expérience au printemps, mais y a-t-il quelque chose qui me manque quand je suppose que cela peut être fait?

Répondre

0

Cassandra ne prend pas en charge la pagination dans le sens de pointer vers une page spécifique (limite/décalage) mais génère un jeton de continuation (PagingState) qui correspond à un ensemble de byte s. Tirer un List des enregistrements chargera tous les enregistrements en mémoire et épuisera peut-être votre mémoire (selon la quantité de données).

données Cassandra Spring 1.5.0 RC1 est livré avec un streaming API dans CassandraTemplate:

Iterator<Person> it = template.stream("SELECT * FROM person WHERE … ;", Person.class); 

while(it.hasNext()) { 
    // … 
} 

CassandraTemplate.stream(…) retourne un Iterator qui fonctionne sur un ResultSet sous-jacent. Le pilote DataStax utilise une taille de récupération configurable (5000 lignes par défaut) pour la récupération en bloc. L'accès aux données en continu peut récupérer autant de données que nécessaire pour traiter les données. Les données ne sont pas conservées par le pilote ni par Spring Data Cassandra, et une fois que le volume récupéré est extrait du Iterator, le ResultSet sous-jacent récupère lui-même le volume suivant.

L'autre alternative consiste à utiliser ResultSet directement qui vous donne accès à PagingState et de faire de toute l'activité de continuation/paging par vous-même. Vous perdriez tous les avantages de niveau supérieur de Spring Data Cassandra.