tl; dr
- Rich Hickey descrive datomic come un sistema che tratta implicitamente i timestamp associati all'archiviazione dei dati
- dalla mia esperienza, i dati sono spesso memorizzati in modo imperfetto nei sistemi e in molte occasioni devono essere corretti in modo retroattivo (ad esempio, spesso la domanda "era un vero martedì alle 12:00 pm?" avrà una risposta errata memorizzata in il database)
Questo sembra un punto in cui le astrazioni dietro il datomico potrebbero rompersi - vero? In caso contrario, in che modo il sistema gestisce tali correzioni?
Rich Hickey, in molti dei suoi discorsi, giustifica la creazione di datomico e ne spiega i benefici.
Il suo lavoro, se ho capito bene, è motivato dal nucleo dell'intuizione che gli esseri umani, parlando di dati e fatti, associano implicitamente parte del contesto correlato al loro lavoro (un tempo di una data). Spingendo il lavoro richiesto per gestire la componente implicita data-time del contesto nel database, ha creato un sistema che è molto più facile da capire e molto più facile da programmare. Questo risulta essere rilevante per la maggior parte dei programmatori di database in pratica - il suo lavoro consente a tutti di risparmiare molto tempo nella gestione di query complesse, difficili da produrre / debug / fix, time.
Tuttavia, specialmente nei database di grandi dimensioni, i dati sono spesso danneggiati / errati (forse non è stato inserito correttamente, forse è stato eroso nel tempo, ecc ...). Mentre la maggior parte degli aggiornamenti del database sono inserimenti di nuovi fatti, e dovrebbero essere trattati in questo modo, un sottoinsieme non banale del lavoro richiesto per gestire le interrogazioni temporali ha a che fare con aggiornamenti retroattivi.
Non ho ancora visto alcuna documentazione che spieghi come tali correzioni o aggiornamenti retroattivi siano gestiti da datomic; dalla mia esperienza, sono un sottoinsieme non banale (e incredibilmente difficile da gestire) di manipolazione dei dati relativa al tempo che i programmatori di database devono affrontare.
Datomic gestisce con grazia tali aggiornamenti? Se sì, come?