Condividi tramite


Strutture di dati distribuite

Fluid Framework fornisce agli sviluppatori strutture di dati distribuite (DDS) che assicurano automaticamente che ogni client connesso abbia accesso allo stesso stato. Le API fornite dai DDS sono progettate per essere familiari con i programmatori che hanno usato strutture di dati comuni in precedenza.

Nota

Questo articolo presuppone che l'utente abbia familiarità con l'introduzione di strutture di dati distribuite in fluidframework.com.

Una struttura di dati distribuita si comporta come una struttura di dati locale. Il codice può aggiungere dati, rimuovere i dati, aggiornarlo e così via. Tuttavia, un DDS non è un oggetto locale. Un DDS può anche essere modificato da altri client che espongono lo stesso contenitore padre del DDS. Poiché gli utenti possono modificare contemporaneamente lo stesso DDS, è necessario considerare quale DDS usare per la modellazione dei dati.

Nota

Significato di "simultaneamente"

Si dice che due o più client apportano una modifica contemporaneamente se apportano una modifica prima che abbiano ricevuto le modifiche degli altri dal server.

La scelta della struttura di dati corretta per lo scenario può migliorare le prestazioni e la struttura del codice dell'applicazione.

I DDS variano l'uno dall'altro in base a tre caratteristiche:

  • Struttura dei dati di base: ad esempio, coppia chiave-valore, sequenza o coda.
  • Autonomia del client: un DDS ottimistico consente a qualsiasi client di modificare unilateralmente un valore e il nuovo valore viene inoltrato a tutti gli altri client. Ma un DDS di consenso consente una modifica solo se è accettata da altri client da un processo di consenso.
  • Criteri di merge: i criteri che determinano la modalità di risoluzione delle modifiche in conflitto dai client.

Di seguito sono stati enumerate le strutture di dati e descritte quando possono essere più utili.

Dati chiave-valore

Questi DDS vengono usati per archiviare i dati chiave-valore. Sono ottimisti e usano un criterio di merge last-writer-wins. Anche se il valore di una coppia può essere un oggetto complesso, il valore di una determinata coppia non può essere modificato direttamente; L'intero valore deve essere sostituito con un nuovo valore contenente le modifiche desiderate, intere per intero.

  • SharedMap: struttura di dati chiave-valore di base.

Scenari chiave-valore

Le strutture di dati chiave-valore sono la scelta più comune per molti scenari.

  • Dati delle preferenze utente.
  • Stato corrente di un sondaggio.
  • Configurazione di una vista.

Problemi comuni e procedure consigliate per IDS chiave-valore

  • L'archiviazione di un contatore in un oggetto SharedMap avrà un comportamento imprevisto. Usare invece SharedCounter.
  • L'archiviazione di matrici, elenchi o log in una voce chiave-valore può causare un comportamento imprevisto perché gli utenti non possono modificare in modo collaborativo parti di una voce. Provare a archiviare i dati della matrice o dell'elenco in un oggetto SharedSequence o SharedInk.
  • L'archiviazione di molti dati in una voce chiave-valore può causare problemi di prestazioni o unione. Ogni aggiornamento aggiornerà l'intero valore anziché unire due aggiornamenti. Provare a suddividere i dati tra più chiavi.

Sequenze

Questi DDS vengono usati per l'archiviazione di dati sequenziali. Sono ottimisti. Le strutture di dati sequenza sono utili quando è necessario aggiungere o rimuovere dati in corrispondenza di un indice specificato in un elenco o in una matrice. A differenza delle strutture di dati chiave-valore, le sequenze hanno un ordine sequenziale e possono gestire inserimenti simultanei da più utenti.

  • SharedNumberSequence: sequenza di numeri.
  • SharedObjectSequence: una sequenza di oggetti semplici.

Scenari di sequenza

  • Elenchi
  • Sequenze temporali

Problemi comuni e procedure consigliate per i DDS di sequenza

  • Archiviare solo i dati non modificabili come elemento in una sequenza. L'unico modo per modificare il valore di un elemento consiste nel rimuoverlo prima dalla sequenza e quindi inserire un nuovo valore nella posizione in cui si trovava il valore precedente. Tuttavia, poiché altri client possono inserire e rimuovere, non esiste un modo affidabile per ottenere il nuovo valore nella posizione desiderata.

Stringhe

Il DDS SharedString viene usato per i dati di testo non strutturati che possono essere modificati in modo collaborativo. È ottimista.

  • SharedString - una struttura di dati per la gestione del testo collaborativo.

Scenari di stringa

  • Editor di testo

Vedi anche

Per altre informazioni sui DDS e su come usarli, vedere le sezioni seguenti di fluidframework.com: