O que significa o Bucket?

17

Eu encontrei no código legado uma classe cujo nome é BucketService.

Como o inglês não é minha língua nativa, eu estava tentando traduzir isso, mas não faz sentido.

Encontrei algumas terminações como classificação de balde e assim por diante, mas ainda não entendi. Na verdade, essa palavra é usada com bastante frequência na programação

Eu seria útil para alguma explicação simples dessa palavra

user278618
fonte
1
nunca julgue a classe pelo nome. Qual API ele expõe? que estado ele contém? como é usado / invocado / instanciado? sem saber que, a resposta só correta à pergunta como a sua parece ser Mu
mosquito
2
Particularmente com nome indefinido como "BucketService" - soa como "UtilityManager" ou "ThingDoer". Com um nome vago como esse, sua única opção é olhar para o código. Infelizmente, as classes com nomes que vaga geralmente fazem um pouco de tudo (ou um monte de tudo, se você não está com sorte).
Tacroy

Respostas:

36

Um balde em inglês é um dispositivo para reter água.

Quando usado em software, normalmente significa um tipo de dados que agrupa objetos.

O termo é usado frequentemente ao discutir algoritmos de hash , em que itens diferentes que possuem o mesmo código de hash (colisão de hash) entram no mesmo "bloco". Ou seja, os objetos são agrupados pelo hash.

Em geral, uma função de hash pode mapear várias chaves diferentes para o mesmo índice. Portanto, cada slot de uma tabela de hash é associado a (implícita ou explicitamente) um conjunto de registros, em vez de um único registro. Por esse motivo, cada slot de uma tabela de hash geralmente é chamado de bucket, e os valores de hash também são chamados de índices de bucket.

Informalmente, vi o termo usado com dicionários cujo valor (não chave) é uma coleção de itens.


A Wikipedia possui uma página dedicada ao termo usado na computação - Bucket (Computing) :

Na computação, o termo bucket pode ter vários significados. É usado como uma metáfora viva e como um termo técnico geralmente aceito em algumas áreas especializadas. Um bucket é geralmente um tipo de buffer de dados ou um tipo de documento no qual os dados são divididos em regiões.

Oded
fonte
6
+1 você me venceu! Gostaria de acrescentar que o objetivo dos elementos de classificação do algoritmo de hash em buckets permite uma recuperação e classificação mais rápidas de grandes coleções. Se eu quiser procurar 20 itens por um item específico, a maneira ineficiente seria procurar um de cada vez por ID. Uma maneira melhor seria que uma coleção mantivesse itens com o mesmo hash em um balde ; portanto, apenas alguns itens precisam ser pesquisados ​​no balde, em vez da lista inteira.
Maple_shaft
@maple_shaft - Bom argumento sobre o uso de caçambas no hash. Eu não pensei que fosse relevante para a pergunta:) #
Oded
0

Talvez seja uma referência ao 'bit bucket'. É aí que os bits que são deslocados de um byte passam para os bits esquerdo e direito.

Jon Strayer
fonte