2015-10-05 13 views
7

faccio impaginazione di grandi insiemi di risultati con Cassanda 2.2 che utilizzano il client java e PagingState come descritto qui: https://datastax.github.io/java-driver/2.2.0-rc2/features/paging/Come Cassandra impaginazione si comporta su inserti simultanei

che funziona abbastanza bene, ma non riesco a trovare qualsiasi informazione come Cassandra si comporta quando , mentre si sfogliano i risultati, vengono inseriti nuovi record (o quelli esistenti vengono aggiornati). I record nuovi o modificati sono inclusi nel risultato o il set di risultati è immutabile?

Il caso d'uso è un servizio Web stateless in cui un client può interrogare insiemi di risultati di grandi dimensioni.

EDIT: stessa domanda per ResultSet paging in generale (Cassandra non automatica pigra recuperare qui)

EDIT2: A mia conoscenza Cassandra supporta transazioni ACID ma SOCCORSO, quindi mi aspetterei un sorta di isolamento qui quando andare attraverso il set di risultati

risposta

5

Non esiste un tale isolamento, poiché sarebbe troppo costoso da implementare. L'intero set di risultati non viene mantenuto in memoria e le righe da restituire nella pagina successiva non sono note quando quella corrente viene inviata al client.

Una interessante conseguenza di questo è che si rompe la garanzia di aggiornamento batch, ha dichiarato nella documentazione come:

Tutti gli aggiornamenti in un @ @ LOTTO appartenente ad una determinata chiave di partizione vengono eseguiti in isolamento.

C'è uno aperto issue su questo.

Ci sono anche alcune implicazioni sulle prestazioni, perché molto del lavoro svolto per recuperare la pagina n deve essere fatto di nuovo per recuperare la pagina n + 1 (come l'apertura e la lettura da file di indice e file di dati). Scilla, un sostituto di Drop-in per Cassandra a cui io contribuisco, sta lavorando su fixing this.

Problemi correlati