Estruturas de dados distribuídas
O Fluid Framework fornece DDSes (estruturas de dados distribuídas) aos desenvolvedores que garantem automaticamente que cada cliente conectado tenha acesso ao mesmo estado. As APIs fornecidas pelas DDSes foram projetadas para serem familiares aos programadores que já usaram estruturas de dados comuns antes.
Observação
Este artigo pressupõe que você esteja familiarizado com a Introdução de estruturas de dados distribuídas no fluidframework.com.
Uma estrutura de dados distribuídos se comporta como uma estrutura de dados local. Seu código pode adicionar dados a ela, 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.
Observação
Significado de 'simultaneamente'
Diz-se que dois ou mais clientes fazem uma alteração simultaneamente se cada um fizer uma alteração antes de receberem 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 diferem uns dos outros por três características:
- Estrutura de dados básica: por exemplo, par chave-valor, uma sequência ou uma fila.
- Autonomia do cliente: um DDS otimista permite que qualquer cliente altere um valor de forma unilateral e o que novo valor seja repassado para todos os outros clientes. Mas um DDS de consenso só permitirá uma alteração se for aceito 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 podem ser mais úteis.
Dados de chave-valor
Esses DDSes são usados para armazenar dados de chave-valor. Eles são otimistas e usam uma política de mesclagem last-writer-wins. Embora o valor de um par possa ser um objeto complexo, o valor de qualquer par determinado não pode ser editado diretamente; o valor todo deve ser substituído por um novo valor que contenha as edições desejadas, integralmente.
- SharedMap: uma estrutura de dados de chave-valor básica.
Cenários de chave-valor
Estruturas de dados de chave-valor são a opção mais comum para muitos cenários.
- Dados de preferência do usuário.
- Estado atual de uma pesquisa.
- A configuração de uma exibição.
Problemas comuns e melhores práticas para DDSes de chave-valor
- Armazenar um contador em um SharedMap terá um comportamento inesperado. Em vez disso, utilize o SharedCounter.
- O armazenamento de matrizes, listas ou logs em uma entrada de chave-valor pode levar a um comportamento inesperado porque os usuários não podem modificar colaborativamente partes de uma entrada. Tente armazenar a matriz ou listar dados em um SharedSequence ou SharedInk.
- Armazenar muitos dados em uma entrada de chave-valor pode causar problemas de desempenho ou mesclagem. Cada atualização atualizará o valor todo em vez de mesclar duas atualizações. Tente dividir os dados entre várias chaves.
Sequências
Esses DDSes são usados para armazenar dados sequenciais. Eles são otimistas. Estruturas de dados de sequência são úteis quando você precisar adicionar ou remover dados em um índice especificado em uma lista ou matriz. Ao contrário das estruturas de dados de chave-valor, as sequências têm uma ordem sequencial e podem manipular inserções simultâneas de vários usuários.
- SharedNumberSequence: uma sequência de números.
- SharedNumberSequence: uma sequência de objetos simples.
Cenários de sequência
- Listas
- Linhas do tempo
Problemas comuns e melhores práticas 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 em que o valor antigo estava. Mas como outros clientes podem inserir e remover, não há nenhuma maneira confiável de colocar o novo valor na posição desejada.
Cadeias de caracteres
O DDS SharedString é usado para dados de texto não estruturados que podem ser editados de forma colaborativa. Ele é otimista.
SharedString
-- uma estrutura de dados para lidar com texto colaborativo.
Cenários de cadeia de caracteres
- Editores de texto
Confira também
Para saber mais sobre DDSes e como usá-los, confira as seguintes seções do fluidframework.com: