Pregunta

Quiero desarrollar un sistema multimedia, el sistema necesita guardar millones e imágenes, por lo que quiero seleccionar un subsistema de almacenamiento distribuido. ¿Quién me puede dar alguna sugerencia? ¡Gracias!

¿Fue útil?

Solución

@yi_h

Puede configurar sus escrituras para replicarse primero en varios nodos antes de que regrese al cliente. Ahora, si eso se necesita o no, es, por supuesto, al caso de uso. Y definitivamente implica un éxito de rendimiento. Entonces, si está implementando una base de datos analítica de escritura pesada, tendrá un impacto significativo en el rendimiento de la escritura.

Todos los demás puntos que se hace sobre la pregunta en términos de falta de requisitos, etc., lo segundo.

Tener un sistema de archivos replicado con metadatos en una base de datos NoSQL es una forma muy común de hacer las cosas. @¿Por qué consideraste este tipo de enfoque?

¿Has echado un vistazo a MongoDB Gridfs? Nunca lo he usado, pero es algo que echaría un vistazo para ver si le da alguna idea.

Otros consejos

Supongo que la mejor opción para los 'Millones de videos e imágenes' es la red de distribución/entrega de contenido (CDN):

CDN es una configuración del servidor que permite una entrega más rápida y eficiente de sus archivos multimedia. Lo hace manteniendo copias de sus medios en diferentes puntos de presencia (POP) a lo largo de una red global para garantizar un acceso rápido al cliente y la entrega más rápida posible

Si usa CDN, no necesita preocuparse por muchos problemas (distribución, acceso rápido). La integración con CDN también debería ser muy simple.

Yo me dio (cerca) cero información sobre cuáles son sus requisitos. P.ej:

  • ¿Quieres transacciones atómicas?
  • ¿El sistema lee o escribe pesado?
  • ¿Necesita consultas rápidas o desea procesar el conjunto de datos?
  • ¿Qué tan grandes son los videos?
  • ¿Desea distribuir datos localmente (en una LAN) o abarcar múltiples centros / continentes de datos?

¿Cómo se supone que debemos elegir la herramienta adecuada si no sabemos lo que necesita para soportar?

Sin ningún conocimiento del sistema, aconsejaría usar algún tipo de replicación FS para los videos e imágenes y luego almacenar los metadatos asociados con los elementos en MongoDB, MySQL Master-Master o MySQL Cluster.

Distribuido relacionado con qué?

Si está hablando de replicación para distribuir:

MongoDB solo restringido a la replicación del esclavo maestro, por lo que solo un nodo puede leer/escribir, lo que le deja con un solo punto de falla para un sistema realmente distribuido. CouchDB es capaz de replicarse de igual a igual.

Encuentra una muy buena comparación aquí y Aquí también en comparación con HBase.

Con CouchDB también debe tener en cuenta que va a hablar HTTP en la base de datos y debe construir WebServices.

Saludos, Chris

Una alternativa es usar las gridfs de MongoDB, sirviendo como un (muy fácilmente manejable) sistema de archivos redundante y distribuido.

Algunos dirán que es lento en las lecturas (y es, principalmente debido a la naturaleza de su diseño) pero eso no tiene que significar que es un factor decisivo para su sistema en su totalidad, porque si necesita rendimiento más adelante, siempre puede colocar barniz o calamar frente al nivel del sistema de archivos.

Por lo que sé, Squid también admite caché en disco para todos los archivos menos candentes.

Fuentes:

http://www.mongodb.org/display/docs/gridfs

http://www.squid-cache.org/doc/config/cache_dir/

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