2013-08-19 16 views
6

Sto considerando l'utilizzo di datalog come database backend per un'applicazione che sto scrivendo, perché vedo il potenziale che mi consente di passare facilmente da una rappresentazione all'altra senza dover sacrificare i dati raccolti o scrivere una migrazione ingombrante.Modelli di registrazione dati per la modifica dei dati

Tuttavia, non posso prevedere come gestire i dati modificati, ad es. qualcosa di semplice come una password modificabile dall'utente. Ho avuto un'idea per contrassegnare le righe con una data:

changepassword(<user>, <passhash>, <date>) 

e quindi utilizzare l'ultima, ma ci non sembra essere un modo per ottenere l'ultima, senza restituire tutte le righe e filtrandoli sul lato dell'applicazione.

In che modo le applicazioni del registro dati sono progettate per gestire i dati modificati?

risposta

3

Se si guarda http://c2.com/cgi/wiki?QueryLanguageComparison vedrete che Datalog non ha la capacità di eseguire aggregazioni, min, max, top N e simili, a causa delle relazioni transitive e delle query ricorsive.

Essenzialmente dovresti fare qualsiasi aggregazione ecc nel livello applicazione, che è tutt'altro che ideale.

Tuttavia, vi è almeno un prodotto (che devo ammettere che non ho usato o guardato nei dettagli) che estende la sintassi Datalog per questi casi: Datomic, consultare la sezione "Aggregati che restituiscono un valore singolo".

Problemi correlati