Domanda

Qualcuno sa come posso memorizzare grandi valori binari in Riak?

È stato utile?

Soluzione

Per il momento, non è consigliabile memorizzare i file più grandi di 50 MB di dimensione senza di loro scissione. Vedere: FAQ - Riak Wiki

Se i file sono più piccoli di 50 MB, di procedere come si farebbe con la memorizzazione di dati non binari in Riak.

  

Un altro motivo si potrebbe scegliere Riak è per la flessibilità nella modellazione dei dati. Riak memorizzerà tutti i dati che dici di in modo contenuto agnostico - non rispettare le tabelle, colonne, o di integrità referenziale. Questo significa è possibile memorizzare i file binari a destra accanto a più formati di programmatore-trasparente come JSON o XML . Utilizzando Riak come una sorta di “banca dati documento” (dati semi-strutturati, per lo più de-normalizzato) e “stoccaggio allegato” avrà esigenze diverse rispetto al sistema di chiave / valore-style - vale a dire, la necessità di una linea-query efficienti, conflitto risoluzione, maggiore la semantica interne, e le espressioni robusti di relazioni. Schema design di Riak - Introduzione

Altri suggerimenti

@ Brian risposta di Mansell è sulla strada giusta - non si vuole veramente di memorizzare grandi valori binari (oltre 50 MB) come un unico oggetto, in Riak (cluster diventa unusably lento, dopo un po ')

Hai 2 opzioni, invece:

1) Se un oggetto binario è abbastanza piccolo, memorizzare direttamente. Se si tratta di oltre una certa soglia (50 MB è un valore arbitrario decente per cominciare, ma in realtà, eseguire alcuni test di performance per vedere ciò che la dimensione media oggetto è, per il cluster, dopo di che inizia a strisciare) - rompere la il file in blocchi diversi, e memorizzare i pezzi separatamente. (In realtà, la maggior parte delle persone che ho visto seguire questa strada, utilizzano pezzi di 1 MB di dimensione). Questo significa, naturalmente, che si deve tenere traccia del "manifesto" - che pezzi ricevuti memorizzati dove e in quale ordine. E poi, per recuperare il file, si dovrebbe prima avere per andare a prendere l'oggetto di monitoraggio i pezzi, quindi recuperare i singoli pezzi di file e rimontarli nuovamente dentro il file originale. Date un'occhiata a un progetto come https://github.com/podados/python-riakfs per vedere come hanno fatto.

2) In alternativa, si può semplicemente utilizzare Riak CS (Riak Cloud Storage), per fare tutto di quanto sopra, ma il codice è scritto per voi. Questo è esattamente come funziona RiakCS - si rompe un file in arrivo in pezzi, i depositi e li tiene traccia singolarmente in pianura Riak, e li riassembla, quando arriva il momento di prenderlo indietro. E fornisce un'API di Amazon S3 per l'archiviazione dei file, per la vostra convenienza. Consiglio vivamente questo percorso (in modo da non reinventare la ruota - la suddivisione in blocchi e il monitoraggio dei file è già abbastanza difficile). Sì, CS è un prodotto a pagamento, ma guarda che la libera Developer Trial , se si' re curioso.

Proprio come ogni altro valore. Perché dovrebbe essere diverso?

Utilizzare l'interfaccia Erlang ( http: // hg .basho.com / Riak / src / 461421125af9 / doc / base-client.txt) o l'interfaccia HTTP "grezza" ( http://hg.basho.com/riak/src/tip/doc/raw-http-howto.txt ). Dovrebbe "solo lavoro".

Inoltre, avrete generalmente trovare una risposta migliore alle Riak-users mailing list di quello che sarà qui. http://lists.basho.com/mailman/listinfo/riak- users_lists.basho.com (Senza offesa per Z8000, che sembra avere anche delle risposte.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top