Pergunta

Alguém sabe como posso armazenar grandes valores binários em Riak?

Foi útil?

Solução

Por enquanto, eles não recomendam armazenar arquivos maiores que 50MB de tamanho sem dividi-los. Veja: FAQ - Riak Wiki

Se os arquivos são menores do que 50 MB, que faça o que você faria com o armazenamento de dados não binários em Riak.

Outra razão pode pegar Riak é a flexibilidade na modelagem de seus dados. Riak irá armazenar todos os dados que você diga a ele de uma forma conteúdo agnóstico - não impor tabelas, colunas ou a integridade referencial. Isto significa você pode armazenar arquivos binários lado a lado com mais formatos de programador-transparente como JSON ou XML . Usando Riak como uma espécie de “banco de dados de documentos” (semi-estruturada, a maioria de-normalizado de dados) e “armazenamento anexo” terá necessidades diferentes do que o esquema de chave / estilo valor - ou seja, a necessidade de eficientes em-linha-consultas, o conflito resolução, o aumento da semântica interna e expressões robustas de relacionamentos. Schema design, em Riak - Introdução

Outras dicas

A resposta de @ Brian Mansell está no caminho certo - você realmente não quer armazenar grandes valores binários (mais de 50 MB) como um objeto único, em Riak (cluster torna-se bastante lento, depois de um tempo)

Você tem 2 opções, em vez disso:

1) Se um objeto binário é pequeno o suficiente, armazená-lo diretamente. Se é sobre um determinado limiar (50 MB é um valor arbitrário decente para começar com, mas realmente, fazer alguns testes de desempenho para ver o que o tamanho médio do objeto é, para o seu cluster, após o que começa a crawl) - quebrar a arquivo em vários pedaços, e armazenar os pedaços separadamente. (Na verdade, a maioria das pessoas que eu vi ir por esse caminho, use pedaços de 1 MB de tamanho). Isso significa, é claro, que você tem que acompanhar o "manifesto" - que pedaços ficou armazenado onde, e em que ordem. E, em seguida, para recuperar o arquivo, você primeiro tem que buscar o objeto rastrear os pedaços, em seguida, buscar os pedaços de arquivos individuais e remontá-las de volta para o arquivo original. Dê uma olhada em um projeto como https://github.com/podados/python-riakfs para ver como eles fizeram isso.

2) Como alternativa, você pode simplesmente usar Riak CS (Cloud Storage Riak), para fazer tudo do acima, mas o código é escrito para você. Isso é exatamente como funciona RiakCS - ele quebra um arquivo de entrada em pedaços, lojas e faixas-los individualmente em Riak simples, e remonta-los quando chega a hora de buscá-la de volta. E fornece uma API Amazon S3 para armazenamento de arquivos, para sua conveniência. Eu recomendo essa rota (para não reinventar a roda - chunking e rastreamento de arquivos é bastante difícil). Sim, CS é um produto pago, mas confira a livre desenvolvedor Teste , se você' re curioso.

Assim como qualquer outro valor. Por que seria diferente?

Use a interface Erlang ( http: // hg .basho.com / riak / src / 461421125af9 / doc / básico-client.txt ) ou o "cru" HTTP de interface ( http://hg.basho.com/riak/src/tip/doc/raw-http-howto.txt ). Deveria "apenas trabalho".

Além disso, você encontrará geralmente uma melhor resposta na lista de usuários Riak discussão do que você vai aqui. http://lists.basho.com/mailman/listinfo/riak- users_lists.basho.com (Sem ofensa para Z8000, que parece também ter respostas.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top