Progettazione dello storage per diversi sistemi temporali

2

Ho pensato di fare un qualche tipo di applicazione che permetta agli utenti di tenere traccia degli eventi in impostazioni mitiche. Tuttavia, non tutte le impostazioni mitiche consentono tempi normali. Cosa succede se un utente vuole le date delle stelle, un altro vuole BD / AD (Prima di Debbie / After Debbie, l'eroina di un'avventura?), Un altro vuole contare le zecche dall'inizio dell'universo?

Sto cercando di avvolgere la mia mente per mostrare e inserire questi tempi in qualsiasi modo. Non solo, ma è praticamente impossibile determinare un buon modo di gestirli "dietro le quinte".

Ad esempio, basta usare le zecche ovunque e definire una nuova conversione come servizio a pagamento. Inoltre, cosa succede se un utente decide che il suo mondo esiste da 1/1/0 a 1/1/2535100000000 (il numero arbitrariamente elevato presumo sarà overflow in tick)? Dico loro di preparare la loro immaginazione e fare una passeggiata?

Probabilmente lo sto pensando troppo, ma qualsiasi input nella progettazione di un sistema con questo tipo di requisito?

    
posta C Bauer 31.05.2016 - 21:39
fonte

1 risposta

2

Come per tutto il software, "illimitato" significa semplicemente "limitato dal sistema, non dallo sviluppatore".

Un int a 64 bit ti consente di memorizzare i tick di 18446744073709551615.

Precisione vs scala

Ora, è qui che puoi negoziare la precisione per scala. Se usi ticks = microsecondi, avrai poco più di 1/2 milione di anni con cui giocare. Millisecondi ti danno 1/2 miliardi. Una volta che decidi il bilanciamento della precisione e della scala nel sistema, basta documentarlo per i tuoi utenti in modo che conoscano la gamma in cui possono lavorare all'interno.

Intervallo dinamico

Quanto sopra rende abbastanza chiaro che un 64-bit ti offre un ampio margine di manovra per lavorare con i tempi correnti. Tuttavia, se tu qualcuno prendi eventi arbitrari (diciamo la morte da calore del Big Bang e dell'Universo o Big Crunch), allora diventa più difficile, ma ancora possibile!

Più gli eventi passati (o futuri) sono, minore è la precisione di cui hai bisogno. È difficile che tu abbia la possibilità di consentire all'ora / data del Big Bang di avere una precisione millisecondo o persino una precisione giornaliera.

Potresti semplicemente definire intervalli del tuo "tick-space" che operano con diversa precisione. Ad esempio:

[-86400000000, 86400000000] = Microseconds (+/- 1 million years) [-9223372036854775808,-86400000000) = Hours (-1 Quadrillion years) (86400000000, 9223372036854775808] = Hours (+1 Quadrillion years)

Conversione del tempo in schemi arbitrari

Penso che l'archiviazione qui sia la tua domanda facile, è la funzione di conversione e quanta libertà tu ci dai. Consenti semplicemente a loro di modificare i valori in un'equazione con prefisso e in una stringa di formattazione, o gli dai un linguaggio di scripting limitato per creare creazioni ad-hoc?

    
risposta data 02.06.2016 - 18:22
fonte

Leggi altre domande sui tag