Ho difficoltà a pensare e trovare una soluzione su come progettare una struttura di database funzionante per questa situazione:
Abbiamo un sistema che dovrebbe raccogliere dati da Google Analytics & API di Search Console: la connessione funziona correttamente.
Ciò di cui sono bloccato è capire come strutturare il database in modo da memorizzare i dati da tali API, per evitare di raggiungere i limiti delle quote e accelerare il sistema stesso.
La domanda che mi pongo ogni volta che ho un'idea delle possibili strutture è "Come faccio a sapere che i dati non sono validi ora, sia perché non hanno più bisogno di alcuni dati, o se un filtro è stato cambiato" - questo è perché il sistema non è ancora in uno stato fisso, e le persone hanno idee: /
L'idea corrente è che abbiamo diversi "set" che vogliamo da Analytics, potrebbero contenere gli stessi dati, ma per ragioni diverse, quindi qualcosa del tipo:
'paidConversions' => [
'metrics' => ['ga:goalCompletionsAll','ga:adCost', 'ga:transactions'],
'dimensions' => ['ga:date'],
'sort' => ['ga:date'],
'filters' => ['ga:sourceMedium=@google / cpc']
],
trafficDetailsUser' => [
'metrics' => ['ga:sessions'],
'dimensions' => ['ga:date', 'ga:userGender', 'ga:userAgeBracket'],
'sort' => ['-ga:date'],
'filters' => [],
],
'landingPages' => [
'metrics' => ['ga:sessions'],
'dimensions' => ['ga:date', 'ga:landingPagePath'],
'sort' => ['-ga:date'],
'filters' => ['ga:sessions>30'],
],
Quello che sto pensando è qualcosa del genere: Pagine di destinazione: -id -Data -analytics_account_id -sessions -landing_page_path -id_hash (Vorrei stringificare l'array impostato e cancellarlo per crearlo, quindi potrei usarlo per identificare se il contenuto non è aggiornato)
Traffic Details User:
-id
-date
-analytics_account_id
-user_gender
-user_age_bracket
-sessions
-id_hash (I would stringify the set array, and hash it to create this, then I could use that to identify if the content is out of date)
Ma qualcos'altro mi disturba, che non riesco a capire: (
Ho anche considerato di archiviare il risultato non elaborato della chiamata API, che poi viene caricato ogni volta che viene effettuata di nuovo la chiamata, ma non sono sicuro di quale sia il modo migliore per archiviare quello ...
Quello che abbiamo è (versione semplificata):
Client:
-id
-name
-analytics_account_id (foreign key to "Analytics Account" table)
-search_console_account_id (foreign key to "Search Console Account" table)
Analytics Account:
- id
- analytics_id (used for the API)
Search Console Account:
- id
- search_console_id (used for the API)