La respuesta de Matt Sheppard es excelente (mod up), pero tendría en cuenta estos factores al pensar en un huso:
- Estructura: ¿obviamente se rompe en pedazos, o estás haciendo compensaciones?
- Uso: ¿cómo serán analizados / recuperados / procesados los datos?
- Vida útil: ¿durante cuánto tiempo son útiles los datos?
- Tamaño: ¿cuántos datos hay?
Una ventaja particular de los archivos CSV sobre los RDBMS es que pueden ser fáciles de condensar y moverse prácticamente a cualquier otra máquina. Hacemos grandes transferencias de datos, y todo es lo suficientemente simple, solo usamos un gran archivo CSV y fácil de escribir usando herramientas como rsync. Para reducir la repetición en grandes archivos CSV, puede usar algo como YAML . No estoy seguro de que almacene algo como JSON o XML, a menos que tenga requisitos de relación significativos.
En cuanto a las alternativas no mencionadas, no descarte Hadoop , que es una implementación de código abierto de MapReduce. Esto debería funcionar bien si tiene una TONELADA de datos poco estructurados que necesitan ser analizados, y desea estar en un escenario en el que simplemente puede agregar 10 máquinas más para manejar el procesamiento de datos.
Por ejemplo, comencé a tratar de analizar el rendimiento que era esencialmente todos los números de tiempo de diferentes funciones registradas en alrededor de 20 máquinas. Después de intentar pegar todo en un RDBMS, me di cuenta de que realmente no necesito consultar los datos nuevamente una vez que los agregué. Y, solo es útil en su formato agregado para mí. Por lo tanto, mantengo los archivos de registro comprimidos y luego dejo los datos agregados en una base de datos.
Tenga en cuenta que estoy más acostumbrado a pensar con tamaños "grandes".