Partições e Distribuição de Dados

Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Com o lançamento da estrutura de dados MemoryStoreHashMap, a Roblox removeu todos os limites existentes para estruturas de dados individuais e os substituiu por um único limite de estrangulamento global "por partição." O limite exato flutua com base em valores internos e como o processo de particionamento automático distribui seus dados, mas geralmente permite um uso muito maior antes da estrangulamento, especialmente para mapas de hash. Este novo limite permite o uso flexível de armazenamento de memória em todas as estruturas de dados.

Partições

A API MemoryStores armazena dados em partições, que são apenas subdivisões de armazenamento. Sempre que você escreve um item para um lojade memória, esse item é armazenado em exatamente uma partição. As partições são totalmente gerenciadas pela API (Interface de Programação para Aplicações)MemoryStores; você não precisa gerenciá-las sozinho.

Atribuição de Partição

O armazenamento de partições é diferente de acordo com a estrutura de dados em que um item está sendo armazenado. Para mapas e filas classificados, cada estrutura de dados é atribuída uma única partição.

Por exemplo, considere um jogo de carnaval com um mapa classificado chamado PlayerScores e uma fila chamada PlayerLine de jogadores esperando para jogar o jogo:

Ao contrário dos mapas e filas classificados, os mapas de hash são alocados em várias partições, e os dados são automaticamente distribuídos entre essas partições. Se você fosse adicionar um mapa de hash chamado Prizes , as partições poderiam se parecer com isso:

Observe como o mapa de hash existe em todas as partições, e cada partição tem algum subconjunto de itens.

Limites

Ter um limite por partição permite um throughput maior para todas as estruturas de dados. Também favorece os mapas de hash, porque eles são distribuídos em todas as partições.

Por exemplo, considere um limite de 150.000 solicitações por minuto (RPM) por partição:

  • No melhor dos casos, um mapa classificado e uma fila estão limitados a 150.000 RPM, porque cada um reside em uma única partição.
  • Os pedidos de mapas de hash são espalhados pelas chaves de item, que são elas mesmas espalhadas pelas partições, então os mapas de hash podem ter um limite efetivo muito maior antes do throttling, muitas vezes o de outras estruturas de dados.

Por esse motivo, se você não precisar de classificação ou funcionalidade de "primeiro a entrar, primeiro a sair," os mapas de hash geralmente são a melhor escolha para uma estrutura de dados de armazenamento de memória. Para mais informações, consulte Melhores Práticas.