¿Cuál es una buena arquitectura de software para un análisis electoral y un sistema de informes?

[No estoy seguro cuando dice que los “datos de resultados” se almacenan en MySQL, ¿es eso DESPUÉS de que ha pasado por hadoop? Suena como es]

Mis mayores preocupaciones con su arquitectura son las siguientes

1) Hadoop: Hadoop es excelente para analizar cantidades MASIVAS de datos en paralelo, pero está muy orientado a lotes (se enfoca en horas, no minutos) y especialmente con los datos de votación, querrá ver las tendencias lo antes posible.

Sugeriría usar algo como la tormenta de Twitter en su lugar
Tormenta, computación distribuida y tolerante a fallas en tiempo real

Twitter lo usa para calcular tendencias y otras cosas “en tiempo real”.
Probablemente necesitará algún sistema de colas con él: Kafka está recibiendo mucha prensa y se usa bastante con Storm
Kafka y Storm: procesamiento de eventos en tiempo real
y
Infraestructura a escala: Apache Kafka, Twitter Storm & Elastic Search (ARC303) | AWS re: Invent 2013

2) No se habla de ningún plan de almacenamiento en caché fuera del clúster de base de datos.
Planearía implementar algún tipo de caché más cerca del nivel medio (por ejemplo, memcache), por lo que todas las lecturas de datos SIEMPRE están en contra del caché (usando MySQL o lo que sea en caso de un corte de energía, tipo de DR). Si solo se trata de datos de resultados, y no de datos sin procesar, probablemente no sean tan grandes varios cientos de distritos por candidatos por distrito. Otros numeros. . . .

3) Su arquitectura general parece muy genial y sexy (por ejemplo, Akka, Angular.js). Si ya tienes experiencia con ellos genial. De lo contrario, es posible que desee pensar de manera más simple (por ahora) hasta que su arquitectura de fondo esté lista para la carga.

¡La mejor de las suertes! ¡Me encantaría saber cómo funciona! 🙂

More Interesting

Aparte de Heartbleed, ¿cuáles fueron los notables errores graves de software que han sucedido desde que la ingeniería de software se convirtió en una profesión?

¿Cómo hace una computadora la división en el nivel más bajo?

¿Cuáles son las mejores herramientas de creación rápida de prototipos para Startups o webapps?

¿Cuáles son los bootcamps o academias de desarrollo a corto plazo (2-12 meses) en todo el mundo para alguien interesado en comenzar una carrera como desarrollador?

Ingeniería de software: ¿Cómo demostraría explícitamente RAII (La adquisición de recursos es la inicialización) en el idioma que elija?

¿Es necesario un título universitario para convertirse en un ingeniero de software exitoso?

Cómo mostrar en mi currículum que soy un experimentado de 25 años, en lugar de un normal de más de 30 años

¿Cuáles son algunas de las cosas excepcionales que debería hacer que impresionarían a las escuelas de posgrado de CS y a las compañías que ofrecen pasantías tecnológicas?

Cómo establecer el desarrollo de productos ERP

¿Cómo es la pasantía en Palantir?

¿Cuál es el mejor sitio de aptitud?

Instituto Indio de Tecnología de la Información, Allahabad IT vs Delhi Universidad Tecnológica, Ingeniería de software?

¿Qué significa git 'remoto' y 'origen'?

¿Para qué se utiliza Amazon AWS (Amazon Web Services)? ¿Cómo lo usan usted o su empresa?

¿Cuánto tiempo le tomará a un solo programador construir su propio software?