Actuellement, j'ai une application hébergée sur Google Cloud Platform qui offre des analyses web et fournit l'activité de la session (clics, téléchargements, etc.) et relie cette activité web aux enregistrements web.
Actuellement, nous stockons toutes nos données de clic et de profil de session dans MySQL et utilisons des requêtes SQL pour générer des rapports globaux et par utilisateur. Cependant, comme la quantité de données a augmenté, nous constatons un réel ralentissement des réponses aux requêtes, ce qui ralentit les temps de chargement des pages.
En cherchant à résoudre ce problème, nous avons étudié les outils disponibles sur Google Cloud Platform comme Dataproc et Dataflow ainsi que les solutions NoSQL, mais j'ai du mal à comprendre comment nous pourrions appliquer notre solution actuelle à l'une ou l'autre de ces solutions.
Actuellement, notre schéma de données est approximativement le suivant :
User table
- id
- name
- email
Profile table (web browser/device)
- id
- user id
- user agent string
Session table
- id
- profile id
- session string
Action table
- id
- session id
- action type
- action details
- timestamp
D'après mes recherches, la meilleure solution consisterait à stocker les données d'action dans une solution de base de données NoSQL telle que BigTable, qui alimente une solution telle que DataProc ou DataFlow, qui génère les rapports. Cependant, étant donné que notre schéma actuel est une structure hautement relationnelle, il semble que l'option d'évoluer vers une solution NoSQL ne soit pas envisageable, car toutes mes recherches indiquent qu'il ne faut pas déplacer des données relationnelles vers une solution NoSQL.
Ma question est la suivante : ma compréhension de la manière d'appliquer ces outils est-elle correcte ? Ou existe-t-il de meilleures solutions ? Est-il même nécessaire d'envisager de s'éloigner de MySQL ? Et si ce n'est pas le cas, quelles sont les solutions disponibles qui nous permettraient éventuellement de prétraiter/générer des données de reporting en arrière-plan ?