Pregunta

Tengo una gran cantidad de datos que necesito almacenar, y poder generar informes, cada uno representa un evento en un sitio web (estamos hablando de más de 50 por segundo, por lo que claramente se deberán agregar datos más antiguos) ).

Estoy evaluando los enfoques para implementar esto, obviamente, debe ser confiable y debería ser lo más fácil de escalar posible. También debería ser posible generar informes a partir de los datos de una manera flexible y eficiente.

Espero que algunos SOers tengan experiencia con este tipo de software y puedan hacer una recomendación y / o señalar las dificultades.

Idealmente, me gustaría implementar esto en EC2.

¿Fue útil?

Solución

Wow. Estás abriendo un gran tema.

Unas cuantas cosas de la cabeza ...

  1. piense detenidamente acerca de su esquema para inserciones en la parte transaccional y lea en la parte de reporte, puede que sea mejor que las mantenga separadas si tiene volúmenes de datos realmente grandes
  2. observe detenidamente la latencia que puede tolerar entre los informes en tiempo real de sus transacciones y los informes agregados de sus datos históricos. Tal vez debería tener un proceso que se ejecute periódicamente y agregue sus transacciones.
  3. observe detenidamente cualquier requisito que le permita informar sobre sus datos transaccionales y agregados, ya sea en el mismo informe o como un desglose de uno a otro
  4. prototipo con algunas consultas significativas y algunos volúmenes de datos realistas
  5. consígase una base de datos de calidad de producción real y lista para la empresa, es decir, Oracle / MSSQL
  6. piense en usar el código / producto de otra persona para el informe, por ejemplo. Crystal / BO / Cognos

como digo, gran tema. Mientras pienso en más, continuaré agregando a mi lista.

HTH y buena suerte

Otros consejos

@ Simon hizo muchos puntos excelentes, solo agregaré algunos y re-iteraré / enfatizaré algunos otros:

  1. Use el tipo de datos correcto para las marcas de tiempo: asegúrese de que el DBMS tenga la precisión adecuada.
  2. Considere la posibilidad de poner en cola para la captura de eventos, permitiendo que varios subprocesos / procesos manejen el almacenamiento real de los eventos.
  3. Separe los esquemas para su almacén transaccional y de datos
  4. Considere seriamente un ETL periódico desde la base de datos transaccional al almacén de datos.
  5. Recuerde que probablemente no tendrá 50 transacciones / segundo 24x7x365 - transacciones pico vs. transacciones promedio
  6. Investigar particiones en el DBMS. Oracle y MSSQL particionarán en un valor (como fecha / hora).
  7. Tener una política de archivo / retención de datos desde el principio. Demasiados proyectos simplemente comienzan a registrar datos sin planes para eliminarlos / archivarlos.

No estoy sorprendido de ninguna de las respuestas aquí que cubren Hadoop y HDFS. Sugeriría que es porque SO es un programador qa y su pregunta es de hecho una pregunta de ciencia de datos.

Si está tratando con una gran cantidad de consultas y un gran tiempo de procesamiento, usaría HDFS (un formato de almacenamiento distribuido en EC) para almacenar sus datos y ejecutar consultas por lotes (es decir, análisis) en hardware de productos básicos.

Luego, aprovisionará tantas instancias de EC2 como sea necesario (cientos o miles dependiendo de qué tan grandes sean sus requisitos de procesamiento de datos) y ejecutará un mapa que reduce las colas contra sus datos para producir informes.

Wow .. Este es un gran tema.

Permítanme comenzar con las bases de datos. Primero consigue algo bueno si vas a tener cantidades locas de datos. Me gusta Oracle y Teradata.

En segundo lugar, hay una diferencia definitiva entre el registro de datos transaccionales y los informes / análisis. Coloque sus datos transaccionales en un área y luego enróllelas en un horario regular en un área de informe (esquema).

Creo que puedes enfocarte de dos maneras

  • Dedique dinero al problema: compre el mejor software de su clase (bases de datos, software de informes) y contrate a unos pocos expertos en tecnología para ayudarlo

  • Adopte el enfoque propio: construya solo lo que necesita en este momento y haga crecer todo orgánicamente. Comience con una base de datos simple y cree un marco de informes web. Hay muchas herramientas de código abierto de descenso y agencias económicas que hacen este trabajo.

En cuanto al enfoque de EC2 ... No estoy seguro de cómo encajaría esto en una estrategia de almacenamiento de datos. El procesamiento es limitado, que es donde EC2 es fuerte. Su objetivo principal es el almacenamiento eficiente y la recuperación.

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