Pregunta

¿Alguien sabe cómo puedo almacenar grandes valores binarios en Riak?

¿Fue útil?

Solución

Por ahora, no recomiendan el almacenamiento de archivos de más de 50 MB de tamaño sin necesidad de dividirlos. Ver: FAQ - Riak Wiki

Si los archivos son más pequeños que 50 MB, que proceda de la manera que lo haría con el almacenamiento de datos no binarios en Riak.

  

Otra de las razones que se podría recoger Riak es la flexibilidad en el modelado de los datos. Riak almacenará todos los datos que le dices que de una manera independiente del contenido - no hace cumplir las tablas, columnas, o la integridad referencial. Este medio de se pueden almacenar archivos binarios justo al lado de más formatos programador transparente como JSON o XML . Usando Riak como una especie de “base de datos documental” (datos semi-estructurados, sobre todo de-normalizada) y “almacén de adjuntos” tendrá diferentes necesidades que el esquema / estilo de valor de clave - a saber, la necesidad de eficientes-consultas en línea, el conflicto resolución, el aumento de la semántica internos, y las expresiones robustas de relaciones. esquema de diseño en Riak - Introducción

Otros consejos

@ Brian respuesta de Mansell está en el camino correcto - usted realmente no desea almacenar grandes valores binarios (más de 50 MB) como un único objeto, en Riak (cluster se convierte en unusably lento, después de un tiempo)

Tienes 2 opciones, en lugar de:

1) Si un objeto binario es lo suficientemente pequeño, almacenarlo directamente. Si se trata de más de un cierto umbral (50 MB es un valor arbitrario decente para empezar, pero en realidad, algunas pruebas de rendimiento para ver lo que el tamaño medio de objeto es, para el clúster, después de lo cual comienza a gatear) - romper la fichero en varias partes, y almacenar los trozos por separado. (De hecho, la mayoría de la gente que he visto ir esta ruta, utilizan trozos de 1 MB de tamaño). Esto significa, por supuesto, que usted tiene que hacer un seguimiento del "manifiesto" -, que quedarán almacenados en trozos, y en qué orden. Y luego, para recuperar el archivo, primero tendría que buscar el objeto de seguimiento de los trozos, a continuación, buscar a los trozos de archivos individuales y volver a montar de nuevo en el archivo original. Echar un vistazo a un proyecto como https://github.com/podados/python-riakfs a ver cómo lo hicieron.

2) Por otra parte, sólo puede utilizar Riak CS (Riak Cloud Storage), para hacer todo de lo anterior, pero el código está escrito para usted. Eso es exactamente cómo funciona RiakCS - se rompe un archivo entrante en trozos, los almacenes y los rastrea de forma individual en la llanura Riak, y les vuelve a montar, cuando llega el momento de ir a buscar de nuevo. Y proporciona una API de Amazon S3 para almacenamiento de archivos, para su conveniencia. Le recomiendo esta ruta (a fin de no reinventar la rueda - fragmentación y el seguimiento de archivos es bastante difícil). Sí, CS es un producto de pago, pero echa un vistazo a la desarrollador de prueba , si' re curioso.

Al igual que cualquier otro valor. ¿Por qué sería diferente?

utilizar la interfaz de Erlang ( http: // hg .basho.com / riak / src / 461421125af9 / doc / basic-client.txt) o la interfaz HTTP "en bruto" ( http://hg.basho.com/riak/src/tip/doc/raw-http-howto.txt ). Debe "sólo trabajo".

Además, por lo general, encontrará una mejor respuesta en los riak lista de distribución de lo que será aquí. http://lists.basho.com/mailman/listinfo/riak- users_lists.basho.com (Sin ofender a Z8000, que parece tener también respuestas.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top