particionados em um cluster de servidores para que nenhum servidor precise manter todo o conjunto de dados por completo. Mesmo que os dados possam ser armazenados em um unico disco, acessos ao disco para pequenos valores e vencido por tempo de busca, portanto o particionamento tem o efeito de melhoria da eficiencia do chache dividindo o conjunto de dados completo em pedacos menores que podem estar completamente na memoria do servidor que armazena tal particao. Isto significa que os servidores do cluster nao sao substituiveis e as requisicoes necessitem ser roteadas para o servidor que mantem o dado requerido, e nao somente qualquer servidor disponivel de forma aleatoria. Alem do mais, os servidores falham regularmente, tornam-se sobrecarregados ou sao desligados para manutencao. Sendo assim, nao podemos armazenar nossos dados somente em um servidor, ou a probabilidade de perda de dados sera muito grande. A maneira mais simples de contornar isto poderia ser separar os dados em particoes (uma por servidor) e armazenar copias de uma dada chave em um determinado numero de servidores. Estes sistemas teem uma boa caracteristica de permitir a qualquer um o calculo da localizacao de um valor somente conhecendo-se sua chave, o que nos permite fazer buscas de maneira ponto-a-ponto e sem conectar a um servidor centralizado que mapeia todas as chaves dos servidores. O lado ruim desta tecnica ocorre quando um servidor e adicionado ou removido do cluster.Hashing Consistente Hashing Consistente e uma tecnica que permite evitar esses problemas e o Voldemort usa esta tecnica para calcular a localizacao de cada chave nas maquinas do cluster. Desta forma, ele tem a caracteristica de que, se um servidor falhar, a carga sera igualmente distribuida pelos servidores restantes do cluster.Formatos de Dados e Queries Em um banco de dados relacional os dados sao quebrados em tabelas 2D. O equivalente no Voldemot sao os Stores. Cada chave e unica em um Store e cada chave pode ter no maximo 1 valor. O Voldemort suporta semanticas de Hashtable, sendo que um simples valor pode ser modificado e retornado por sua chave primaria. Isto facilita a distribuicao entre maquinas pois tudo pode ser separado pela chave primaria. Note entretanto que ele nao suporta relacionamento um-para-muitos, somente suporta Listas como valores (o correspondente a um java.util.Map onde o valor e um java.util.List), oferencendo o mesmo resultado final. A simplicidade destas Queries pode ser uma vantagem, sendo que cada uma tem uma performace previsivel, e facil dividir a performance do servico pelo numero de operacoes de armazenamento executadas e rapidamente pode-se estimar sua carga.Modelo de Dados e Serializacao A reializacao no Voldemort e plugavel, desta forma pode-se utilizar um serializador de terceiros existente ou desenvolver um proprio. Num formato de nivel mais baixo, o Voldemort utiliza somente vetores de bytes para ambas chaves e valores. Formatos de dados de mais alto nivel sao opcoes de configuracao para cada Store (sao suportados quaisquer formatos que implementem a classe Serializer, que trata da traducao entre bytes e objetos). Os seguintes tipos de dados sao suportados de forma padrao pelo Voldemort, tanto para as chaves quanto para