Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Baderous

Voldemort - armazenar ficheiros

Mensagens Recomendadas

Baderous

Alguém aqui já trabalhou com o Voldemort?

Pretendo utilizá-lo para guardar ficheiros, mas não consigo perceber de que forma é que o posso fazer.

Já li isto, isto e ainda isto e não consigo perceber como fazer. No 1º link tem lá uma secção dedicada a serialização, mas não fiquei muito esclarecido, pois fala lá na serialização em Java, no entanto a maioria dos exemplos que encontro reduz-se à utilização com strings, o único com utilização de objectos que encontrei foi este, mas não deixa muito claro o que é aquele objecto TransacaoOnline...

No 1º link ainda fala lá de outras formas como JSON ou o Protocol Buffers (ainda não li muito disto), mas preferia não ter de enveredar por este caminho caso a serialização de Java seja suficiente. Também fala lá algures sobre o mecanismo de persistência com MySQL, mas não percebi em que é que consiste.

É possível gravar ficheiros directamente? Não encontrei nenhuma informação sobre como o fazer...

Caso não seja possível, de que forma posso armazenar ficheiros? Criando uma classe (Java) que represente um ficheiro, tendo o conteúdo representado por um array de bytes, e depois utilizar algum mecanismo de serialização (daqueles referidos no 1º link) para fornecer o método de mapeamento de objecto para bytes (por exemplo, em Java seria apenas implementar a interface Serializable), inserindo depois na base de dados através de put(chave,objecto)? E o que seria "chave"? Um inteiro? Uma string?

Encontrei esta página que tem um exemplo, mas mais uma vez com Strings, já olhei para a API da StoreClient e tem lá os métodos put/get/delete, no entanto a(s) minha(s) dúvida(s) sobre de que forma armazeno os ficheiros mantêm-se...

Ou será que que tenho de criar um socket entre a minha aplicação e o voldemort e enviar os dados por streaming? É que também já li coisas sobre o tamanho do buffer dos sockets (1, 2), mas não sei se se refere a um socket interno que é utilizado, ou se a algum socket explicitamente criado pelo programador...

É a primeira vez que estou a trabalhar com bases de dados distribuídas. Quero armazenar ficheiros no Voldemort e não sei de que forma o posso fazer, alguém que me dê uma mãozinha.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Outra dúvida que me surgiu: caso a abordagem da classe Ficheiro seja a abordagem a seguir (ou mesmo que tenha de recorrer a uma String que contém o array de bytes...), os objectos criados vão poder ter tamanhos gigantescos, porque poderei vir a armazenar o conteúdo de um ficheiro de vídeo num array de bytes. Nesse caso, terei de alterar os parâmetros da JVM para ter uma Heap maior tal como indicado aqui, mas nesse exemplo fala lá numa 8GB BDB cache, a qual não possuo (os parâmetros indicados no exemplo são para o LinkedIn...). Qual será então a melhor configuração para a Heap? Ou é-me impossível seguir essa abordagem devido aos limites de memória e terei de recorrer a uma espécie de transferência de fragmentos do ficheiro, de cada vez, da memória para o Voldemort? E nesse caso, sendo que o Voldemort funciona como uma HashTable, como é que vou identificar os fragmentos do mesmo ficheiro, se a chave tem de ser única?

Também ainda não percebi muito bem se no Voldemort, uma store está dividida por vários nós do cluster (penso que sim, pelo menos parece-me quando leio "Voldemort supports hashtable semantics, so a single value can be modified at a time and retrieval is by primary key. This makes distribution across machines particularly easy since everything can be split by the primary key." e "The arrows indicate keys mapped onto the hash ring and the resulting list of servers that will store the value for that key if R=3. ", mas não tenho a certeza), e se ao escrever o objecto para a store, ele é dividido pelos vários nós onde a store existe (faz sentido que o seja, mas não encontro uma afirmação que me dê certezas disso).

Aqui ninguém tem um bitaite para mandar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.