2012-01-09 23 views
20

Necesito almacenar una gran cantidad de archivos binarios (10 - 20 TB, cada archivo oscila entre 512 kb y 100 MB).¿Debo usar redis para almacenar una gran cantidad de archivos binarios?

Necesito saber si Redis será eficiente para mi sistema. necesito siguientes propiedades en mi sistema:

  • alta disponibilidad
  • de conmutación por error
  • Sharding

tengo la intención de utilizar un conjunto de hardware de consumo para reducir cuesta tanto como sea posible. Por favor, sugiera los pros y los contras de construir tal sistema usando Redis. También me preocupan los altos requisitos de ram de Redis.

+2

Su sistema necesita almacenar * archivos *, usted dice? ¡Este es sin duda un requisito único que nadie ha enfrentado antes! Me pregunto si ... no, nada me viene a la mente. Te deseo suerte inventando esto ... "sistema de archivos", como supongo que uno podría llamarlo. –

Respuesta

17

No utilizaría Redis para tal tarea. Otros productos se adaptarán mejor a la OMI.

Redis es un almacén de datos en memoria. Si desea almacenar 10-20 TB de datos, necesitará 10-20 TB de RAM, lo cual es costoso. Además, el asignador de memoria está optimizado para objetos pequeños, no grandes. Probablemente tendrías que cortar tus archivos en varios pedazos pequeños, no sería realmente conveniente.

Redis no proporciona una solución ad-hoc para HA y failover. Se proporciona una replicación maestro/esclavo (y funciona bastante bien), pero no admite la automatización de esta conmutación por error. Los clientes deben ser lo suficientemente inteligentes como para cambiar al servidor correcto. Algo en el lado del servidor (pero esto no se especifica) tiene que cambiar los roles entre el maestro y los nodos esclavos de una manera confiable. En otras palabras, Redis solo proporciona una solución de HA/Failover de hágalo usted mismo.

Sharding tiene que implementarse en el lado del cliente (como con memcached). Algunos clientes tienen soporte, pero no todos. El cliente más rápido (hiredis) no lo hace. De todos modos, cosas como el reequilibrio deben implementarse además de Redis. Redis Cluster, que se supone que admite dichas capacidades de fragmentación, aún no está listo.

Sugeriría utilizar algunas otras soluciones. MongoDB con GridFS puede ser una posibilidad. Hadoop con HDFS es otro. Si le gustan los proyectos de vanguardia, puede darle una oportunidad al Elliptics Network.

+3

Enlace HDFS es 404'd, intente: http://hadoop.apache.org/docs/stable/hdfs_design.html – Seaux

+1

Solucionado, gracias! –

+1

El enlace está roto nuevamente, esto podría ser bueno: http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html, pero es específico de la versión. Apache no parece tener una página HDFS de nivel superior. – ravi

Cuestiones relacionadas