Quindi, ho un sacco di chiamate che vengono tutte generate con un UUID1 per tutto il giorno. Alla fine della chiamata la chiamata viene elaborata e alcune metriche relative a tale chiamata vengono generate e archiviate in Rethinkdb / Cassandra.
Ogni chiamata genererà qualcosa che assomiglia a questo
[{
"company": "foo company",
"campaign": "bar campaign",
"hash": "",
"stat": "talk-time",
"date": 1467356399,
"value": 176
},
{
"company": "foo company",
"campaign": "bar campaign",
"hash": "",
"stat": "sale",
"date": 1467356399,
"value": 1
},
{
"company": "foo company",
"campaign": "bar campaign",
"hash": "",
"stat": "call-back",
"date": 1467356399,
"value": 0
},
...
]
Ho bisogno che queste statistiche siano uniche nel database. La mia soluzione attuale è prendere l'UUID del Call che è memorizzato in Postgres e aggiungerlo a una stringa che assomiglierà a questo per la prima stat uuid1_foo-company_bar-campaign_talk-time_1467356399
e ad hash che usa un SHA-512. Attualmente sto usando quell'hash come ID su Rethinkdb per guadagnare unicità.
Il motivo per cui questi devono essere unici e riproducibili è perché a volte dobbiamo tornare indietro e rielaborare tutte le chiamate per un dato giorno e dobbiamo assicurarci che le statistiche generate la prima volta che sono state elaborate siano mantenute e non duplicate. Se sono duplicati, tutti i nostri rapporti sarebbero errati.
C'è un modo migliore di utilizzare questi strumenti per generare statistiche uniche per una chiamata che può essere rielaborata in seguito senza inserire valori duplicati?
Inoltre, sembra che Rethink abbia una lunghezza massima di 127 per l'ID primario in cui gli SHA-512 hanno una lunghezza di 128 caratteri, quindi ripensare a questo progetto.