specify multiple jsonfield databases python django postgresql nosql business-intelligence

python - multiple - django postgresql



Minería de datos en una aplicación Django/Postgres (2)

Es posible que desee considerar Cube . No es una aplicación de Django, pero tiene muchas características interesantes incorporadas, y Django puede comunicarse con ella fácilmente. Además, es precioso.

Podría hacer que su aplicación Django simplemente destruya los eventos en MongoDB cuando ocurran. Esta separación de sistemas evitaría cualquier tensión adicional en su aplicación Django.

Necesito integrar un sistema de análisis (informes, gráficos y gráficos) en mi aplicación Django. En un mundo ideal, solo podría consultar mi base de datos de Postgres y obtener los datos que quiero, pero cuando la cantidad de datos en la base de datos supere el límite, tendré cuellos de botella en el rendimiento y otras cuestiones como el infierno del índice.

Me pregunto si podría orientarme en la dirección correcta para implementar esto:

  • ¿Es este un buen escenario para usar una base de datos NoSQL como (CouchDB, MongoDB, Redis) y consultar los datos de eso?
  • Dado que Postgres y Django no tienen compatibilidad con OLAP / MDX, ¿debo seguir un esquema en estrella en una base de datos diferente y preguntar eso?

Estoy buscando evitar dos cosas:

  • No quiero consultar mi base de datos real para análisis, ya que podría tener un gran impacto en el rendimiento.
  • Me gustaría mantener mis análisis lo más actualizados posible, es decir, me gustaría actualizar mi almacén de datos de manera gradual para obtener los últimos datos. Cada vez que hay una operación CRUD en mi base de datos transaccional, me gustaría actualizar el almacén de datos.

Este es otro escenario con el que no he trabajado y estoy tratando de entender la manera más rápida y mejor de lograrlo.

Espero haber sido lo suficientemente verbosa. Si no, con mucho gusto le explicaría más.

Gracias a todos

Después de buscar en la web y utilizar el conocimiento que tengo, he llegado a esta solución:

Utilice el Postgres para almacenar los datos relacionales. En cada operación CRUD, llame al código de análisis para realizar los cálculos en los datos y almacenar los datos en una base de datos NoSQL como Redis / CouchDB.

Viendo esta buena comparación de los NoSQL DB (http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis), creo que Redis o CouchDB encajan perfectamente. Dirigido a la analítica.

Podría almacenar Analytics calculados en Redis / CouchDB y actualizarlos de forma incremental cuando cambien mis datos de origen.

¿Es esta una buena solución?


Lo siento, Mridang Agarwalla, algunas veces tu pregunta vuelve a la mente ...

Pensé en la forma de mantener sincronizadas ambas bases de datos , OLAP y OLTP, actualizadas con bajo impacto en OLTP.

En 2002 empleé con éxito esta técnica para un problema similar. Funciona de la siguiente manera:

  1. Escribe un disparador para cada tabla de hechos. Cuando se modifican los datos de los hechos, el activador inserta una fila en una tabla que refleja este evento (idEvent + update | delete | insert + Foreign Key to fact table).
  2. Un daemon de baja prioridad realiza un bucle infinito, para cada iteración de bucle ''extrae'' 10 eventos de la tabla y actualiza la base de datos OLAP con esta nueva información.

Puede optimizar el comportamiento del daemon, por ejemplo, si la tabla no tiene nuevos eventos, el daemon puede dormir durante 15 segundos.

En mi escenario solo las tablas de datos tienen disparador. Si en la tabla de hechos hay datos de referencia que no están en la base de datos OLAP, creé los datos en este momento (OLTP y OLAP tienen un esquema diferente).

Si analiza su base de datos, puede encontrar cientos de tablas, pero solo algunas tablas son realmente tablas de hechos.

Bien, sé que esto es solo una respuesta parcial de tu respuesta. La segunda parte de su pregunta habla sobre una herramienta eléctrica para analizar datos . No puedo sugerirle ningún producto de código abierto (porque no tengo experiencia con las herramientas de análisis de código abierto). He trabajado con Microsoft Analysis Services + Tableau en la interfaz. Esta es una solución muy buena, pero no sé si coincide con su filosofía. Para la extracción de datos, tiene KNIME (Konstanz Information Miner) que es una plataforma de integración, procesamiento, análisis y exploración de datos de código abierto fácil de usar y completa (pero necesita una tarea ETL previa).

Por favor, envíeme noticias sobre su proyecto, estoy muy interesado. Tengo una solución de asistencia para estudiantes de django y quiero agregar una funcionalidad de análisis.