¿Qué software utilizo para procesar cálculos año por año para grandes conjuntos de datos?

Estoy tratando de mover mi programa .NET a un motor de base de datos, pero tengo problemas para encontrar qué plataformas/idiomas específicos se supone que debo usar. En este momento, todo se hace en la aplicación del lado del cliente, pero ahora tengo problemas de memoria y rendimiento.

Básicamente tengo varias mesas grandes. La tabla principal contiene productos que tienen un costo de ciclo de vida. Por ejemplo, digamos que la oferta de "Frijoles" tiene una vida útil de 3 o 5 años. Cada 3 a 5 años, las acciones se reemplazan por un valor de $500. Según las condiciones establecidas por la aplicación del lado del cliente, se puede configurar como 3 o 5 años. Este escenario se aplica a millones de productos con diferente vida útil y se proyecta a 100 años. Finalmente, este resultado se resume y se muestra como informes.

Estoy buscando configurar un motor del lado del servidor que pueda ayudarme a procesar mi complicado código condicional (lo simplifiqué para mi ejemplo). Investigué Map-Reduce para el motor Hadoop de Azure (HDInsight) y hace exactamente lo que necesito que haga (tomar una función de C# y ejecutarla en el servidor), pero mi conjunto de datos es demasiado pequeño para utilizar dicha plataforma. Al mismo tiempo, el largo período de latencia de HDInsight no es bueno para las necesidades de mi programa. ¿Alguna sugerencia?

Respuestas (2)

Para mí, parece que MongoDB encajaría aquí. Algunas personas dicen que Headoop es para terabytes y MongoDB para Gigabytes. MongoDB ofrece un marco de agregación conveniente que es más fácil de usar que las funciones de MapReduce. Puede usar la consola o cualquier aplicación GUI como MongoChef o implementar una aplicación C# ASP.NET o incluso en cualquier otro idioma que se le ocurra.

Sugeriría echar un vistazo a python Pandas , ya que tanto python como pandas son multiplataforma, puede desarrollar su código del lado del cliente y luego moverlo al lado del servidor y hacer que se ejecute en un horario, por ejemplo, diario o por hora, o bajo demanda. en respuesta a una solicitud de publicación de URL.

Pandas funciona muy bien con grandes conjuntos de datos, consulte esta pregunta SO , incluido el uso de HDF5 . Python/Pandas también tiene interfaces para la mayoría de los back-end de la base de datos, por lo que tendría una solución abierta en la que puede elegir su base de datos según el tamaño de sus datos y el hardware disponible.