/ / Estrutura de dados na memória para mapear de forma compacta bilhões de chaves de dicionário para valores - estruturas de dados

Estrutura de dados na memória para mapear de forma compacta bilhões de chaves de dicionário para valores - estruturas de dados

Eu tenho bilhões de registros (chaves / valores) que eudeseja compactamente armazenar na memória, e a única operação que eu preciso suportar é procurar um valor por sua chave. Chaves e valores são ambos pequenos strings. O mais importante é como comprimido a estrutura de dados é; deve usar o internoestrutura das chaves de uma maneira mais profunda que uma simples matriz associativa. Por exemplo, o mapeamento das chaves "apple", "apply" e "avental" para os valores "1", "2" e "3" deve, de alguma forma, ser compactado. Qual é a estrutura de dados que estou procurando?

Respostas:

3 para resposta № 1

Parece que você quer um trio - Ele faz o tipo de "compressão" que você descreve, armazenando cada prefixo apenas uma vez.

Eu suponho que você tenha memória suficiente para armazenar "bilhões" de chaves e, é claro, você precisa estar em um sistema de 64 bits para poder até mesmo endereçar tantos itens em primeiro lugar.


2 para resposta № 2

Você pode tentar um Trie. Ele forma uma estrutura de árvore a partir das principais cadeias de caracteres. Não haveria locais vazios (como em um mapa hash).


1 para resposta № 3

Mesmo que os dados que você está manipulando sejam pequenos, você realmente Certifique-se de que você precisa de tantos dados na memória? Isso pode facilmente atingir gigabytes de memória, e a maioria dos dados provavelmente não será consultada com tanta frequência.

Um banco de dados bem ajustado pode ser suficiente para suas necessidades.