Estruturas de dados distribuídas
O Fluid Framework fornece aos desenvolvedores estruturas de dados distribuídas (DDSes) que garantem automaticamente que cada cliente conectado tenha acesso ao mesmo estado. As APIs fornecidas pelo DDSes são projetadas para serem familiares aos programadores que já usaram estruturas de dados comuns antes.
Nota
Este artigo pressupõe que você esteja familiarizado com Introdução a estruturas de dados distribuídas no fluidframework.com.
Uma estrutura de dados distribuída se comporta como uma estrutura de dados local. Seu código pode adicionar dados a ele, remover dados, atualizá-los, etc. No entanto, um DDS não é um objeto local. Um DDS também pode ser alterado por outros clientes que expõem o mesmo contêiner pai do DDS. Como os usuários podem alterar simultaneamente o mesmo DDS, você precisa considerar qual DDS usar para modelar seus dados.
Nota
Significado de «simultaneamente»
Diz-se que dois ou mais clientes fazem uma alteração simultaneamente se cada um fizer uma alteração antes de receber as alterações dos outros do servidor.
Escolher a estrutura de dados correta para seu cenário pode melhorar o desempenho e a estrutura de código do seu aplicativo.
Os DDSes variam entre si por três características:
- Estrutura básica de dados: por exemplo, par chave-valor, uma sequência ou uma fila.
- Autonomia do cliente: Um DDS otimista permite que qualquer cliente altere unilateralmente um valor e o novo valor é transmitido a todos os outros clientes. Mas um DDS de consenso só permite uma mudança se for aceite por outros clientes por um processo de consenso.
- Política de mesclagem: a política que determina como as alterações conflitantes dos clientes são resolvidas.
Abaixo, enumeramos as estruturas de dados e descrevemos quando elas podem ser mais úteis.
Dados de chaves-valor
Esses DDSes são usados para armazenar dados de chave-valor. Eles são otimistas e usam uma política de fusão de último escritor-ganha. Embora o valor de um par possa ser um objeto complexo, o valor de qualquer par não pode ser editado diretamente; O valor inteiro deve ser substituído por um novo valor contendo as edições desejadas, inteiro por inteiro.
- SharedMap: uma estrutura básica de dados chave-valor.
Cenários-chave-valor
As estruturas de dados de valor-chave são a escolha mais comum para muitos cenários.
- Dados de preferência do utilizador.
- Estado atual de um inquérito.
- A configuração de uma vista.
Problemas comuns e práticas recomendadas para DDSes de chave-valor
- Armazenar um contador em um SharedMap terá um comportamento inesperado. Em vez disso, use o SharedCounter.
- O armazenamento de matrizes, listas ou logs em uma entrada chave-valor pode levar a um comportamento inesperado porque os usuários não podem modificar partes de uma entrada de forma colaborativa. Tente armazenar a matriz ou listar dados em um SharedSequence ou SharedInk.
- Armazenar muitos dados em uma entrada chave-valor pode causar problemas de desempenho ou mesclagem. Cada atualização atualizará o valor inteiro em vez de mesclar duas atualizações. Tente dividir os dados em várias chaves.
Sequências
Esses DDSes são usados para armazenar dados sequenciais. Estão otimistas. As estruturas de dados de sequência são úteis quando você precisa adicionar ou remover dados em um índice especificado em uma lista ou matriz. Ao contrário das estruturas de dados chave-valor, as sequências têm uma ordem sequencial e podem lidar com inserções simultâneas de vários usuários.
- SharedNumberSequence: uma sequência de números.
- SharedObjectSequence: uma sequência de objetos simples.
Cenários de sequência
- Listas
- Linhas cronológicas
Problemas comuns e práticas recomendadas para DDSes de sequência
- Armazene apenas dados imutáveis como um item em uma sequência. A única maneira de alterar o valor de um item é primeiro removê-lo da sequência e, em seguida, inserir um novo valor na posição onde o valor antigo estava. Mas como outros clientes podem inserir e remover, não há uma maneira confiável de obter o novo valor na posição desejada.
Cadeias
O SharedString DDS é usado para dados de texto não estruturados que podem ser editados colaborativamente. É otimista.
SharedString
-- uma estrutura de dados para lidar com texto colaborativo.
Cenários de cadeia de caracteres
- Editores de texto
Consulte também
Para saber mais sobre DDSes e como usá-los, consulte as seguintes seções do fluidframework.com:
- Introdução de estruturas de dados distribuídas.
- Tipos de estruturas de dados distribuídas.