Compartir vía


Estructuras de datos distribuidos

Fluid Framework proporciona a los desarrolladores estructuras de datos distribuidas (DDSes) que garantizan automáticamente que cada cliente conectado tenga acceso al mismo estado. Las APIs proporcionadas por los DDSes están diseñadas para ser familiares para los programadores que han usado estructuras de datos comunes antes.

Nota:

En este artículo se da por supuesto que está familiarizado con la introducción de estructuras de datos distribuidas en fluidframework.com.

Una estructura de datos distribuida se comporta como una estructura de datos local. El código puede agregar datos a él, quitar datos, actualizarlos, etc. Sin embargo, un DDS no es un objeto local. Un DDS también puede ser cambiado por otros clientes que exponen el mismo contenedor primario del DDS. Dado que los usuarios pueden cambiar simultáneamente el mismo DDS, debe tener en cuenta qué DDS usar para modelar los datos.

Nota:

Significado de "simultáneamente"

Se dice que dos o más clientes realizan un cambio simultáneamente si cada uno realiza un cambio antes de que hayan recibido los cambios de los demás del servidor.

Elegir la estructura de datos correcta para su escenario puede mejorar el rendimiento y la estructura de código de la aplicación.

Los DDS varían entre sí por tres características:

  • Estructura de datos básica: por ejemplo, par clave-valor, una secuencia o una cola.
  • Autonomía del cliente: un DDS optimista permite a cualquier cliente cambiar unilateralmente un valor y el nuevo valor se retransmite a todos los demás clientes. Pero un DDS de consenso solo permite un cambio si otros clientes lo aceptan mediante un proceso de consenso.
  • Directiva de combinación: directiva que determina cómo se resuelven los cambios en conflicto de los clientes.

A continuación se enumeran las estructuras de datos y se describen cuándo pueden ser más útiles.

Datos de clave-valor

Estas DDS se usan para almacenar datos de clave-valor. Son optimistas y usan una directiva de combinación de tipo el último en escribir gana. Aunque el valor de un par puede ser un objeto complejo, el valor de cualquier par determinado no se puede editar directamente; El valor completo debe reemplazarse por un nuevo valor que contenga las ediciones deseadas, enteras.

  • SharedMap: una estructura de datos básica de clave-valor.

Escenarios clave-valor

Las estructuras de datos clave-valor son la opción más común para muchos escenarios.

  • Datos de preferencias de usuario.
  • Estado actual de una encuesta.
  • La configuración de una vista.

Problemas comunes y mejores prácticas para los sistemas DDS de clave-valor.

  • El almacenamiento de un contador en sharedMap tendrá un comportamiento inesperado. Use SharedCounter en su lugar.
  • Almacenar matrices, listas o registros en una entrada de clave-valor puede provocar un comportamiento inesperado porque los usuarios no pueden modificar de forma colaborativa partes de una entrada. Intente almacenar los datos de matriz o lista en SharedSequence o SharedInk.
  • Almacenar una gran cantidad de datos en una entrada de clave-valor puede provocar problemas de rendimiento o combinación. Cada actualización actualizará todo el valor en lugar de combinar dos actualizaciones. Pruebe a dividir los datos entre varias claves.

Secuencias

Estos DDSes se usan para almacenar datos secuenciales. Son optimistas. Las estructuras de datos de secuencia son útiles cuando necesite agregar o quitar datos en un índice especificado de una lista o matriz. A diferencia de las estructuras de datos clave-valor, las secuencias tienen un orden secuencial y pueden controlar inserciones simultáneas de varios usuarios.

  • SharedNumberSequence: una secuencia de números.
  • SharedObjectSequence: una secuencia de objetos sin formato.

Escenarios de secuencia

  • Listas
  • Escalas de tiempo

Problemas comunes y mejores prácticas para los DDS de secuencia

  • Almacenar solo datos inmutables como un elemento en una secuencia. La única manera de cambiar el valor de un elemento es quitarlo primero de la secuencia y, a continuación, insertar un nuevo valor en la posición donde estaba el valor anterior. Pero dado que otros clientes pueden insertar y quitar, no hay ninguna manera confiable de obtener el nuevo valor en la posición deseada.

Cadenas

SharedString DDS se usa para datos de texto no estructurados que se pueden editar de forma colaborativa. Es optimista.

  • SharedString -- una estructura de datos para controlar el texto colaborativo.

Escenarios de cadena

  • Editores de texto

Consulte también

Para obtener más información sobre DDSes y cómo usarlos, consulte las secciones siguientes de fluidframework.com: