[Database] 20 mil millones de filas / mes - Hbase / Hive / Greenplum / ¿Qué?


Answers

He tenido un gran éxito con Vertica . Actualmente estoy cargando entre 200 y mil millones de filas en un día, con un promedio de 9 billones de líneas al mes, aunque he llegado a 17 mil millones en un mes. Tengo cerca de 21 dimensiones y las consultas son increíblemente rápidas. Pasamos del sistema anterior cuando simplemente no teníamos las ventanas del tiempo para hacer la carga de datos.

hicimos una prueba muy exhaustiva y estudiamos diferentes soluciones, y prácticamente miramos todo en el mercado. Si bien tanto Teradata como Netezza nos habrían convenido, sencillamente eran demasiado costosos para nosotros. Vertica les gana a ambos en la relación precio / rendimiento. Por cierto, es una base de datos en columnas.

Ahora tenemos alrededor de 80 usuarios, y se espera que crezca a unos 900 para fines del próximo año cuando comencemos a desplegarnos por completo.

Estamos utilizando ampliamente ASP.NET/dundas/reporting services para informes. También funciona bien con soluciones de informes de terceros, aunque no lo hemos probado.

Por cierto, ¿qué vas a usar para la carga de datos? Estamos usando informatica y estamos muy contentos con eso. SSIS nos llevó por la pared.

Question

Me gustaría utilizar su sabiduría para elegir la solución adecuada para un sistema de depósito de datos. Aquí hay algunos detalles para comprender mejor el problema:

Los datos están organizados en una estructura de esquema en estrella con un GRAN hecho y ~ 15 dimensiones.
20B filas de hechos por mes
10 dimensiones con cientos filas (algo de jerarquía)
5 dimensiones con miles filas
2 dimensiones con ~ 200K filas
2 dimensiones grandes con filas de 50M-100M

Dos consultas típicas se ejecutan en este DB

Miembros principales en dimq:

select    top X dimq, count(id) 
from      fact 
where     dim1 = x and dim2 = y and dim3 = z 
group by  dimq 
order by  count(id) desc

Medidas contra una tupla:

select    count(distinct dis1), count (distinct dis2), count(dim1), count(dim2),...
from      fact 
where     dim1 = x and dim2 = y and dim3 = z 

Preguntas:

  1. ¿Cuál es la mejor plataforma para realizar tales consultas?
  2. Qué tipo de hardware se necesita
  3. ¿Dónde se puede alojar (EC2?)


    (ignore los problemas de importación y carga en este momento)

Tnx,
Hageo.







Una alternativa para un bajo número de usuarios sería un clúster (beowulf). 20K te compra 50 nettops con 500G cada una. Eso es aproximadamente 3KW de potencia máxima. O 4 meses de almacenamiento en la nube.