Alguém sabe como posso armazenar grandes valores binários em Riak?
Pergunta
Alguém sabe como posso armazenar grandes valores binários em Riak?
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.)