Estou tentando descobrir qual tipo de dados é melhor para armazenar dados de tempo dentro do banco de dados MySQL ou Cassandra para um grande aplicativo como Facebook ou Instagram? Existem muitas perguntas e respostas semelhantes, mas não consegui finalmente perceber qual é a melhor escolha.
Então, decidi fazer essa pergunta para ver se alguém sabe que tipo de dados os aplicativos gigantes usam para armazenar seus dados de tempo?
- TIMESTAMP
- DATA HORA
- UNIX TIMESTAMP
Provavelmente
TIMESTAMP
TIMESTAMP
é uma escolha provável porque registra uma vez, independentemente de onde o usuário esteja. É essencialmente UTC no disco, mas é convertido de/para o fuso horário da máquina que está olhando para ele. Em conjunto com isso, os servidores (não necessariamente os clientes) também são configurados para UTC.DATETIME
, se a sua localização respeitar o DST ("Daylight S... Time"), tem uma hora em falta uma vez por ano e uma hora extra noutra altura do ano. Isso leva a vários soluços quando se trata de comparar tempos, executar tarefas cron, etc.(No caso do MySQL,
UNIX_TIMESTAMP
é uma função, não um Datatype.)Em casos raros, você pode manter "segundos fracionários. Por exemplo
TIMESTAMP(6)
, inclui o tempo para microssegundos. (No entanto, não acredite que dois eventos nunca terão o mesmo tempo para o mesmo microssegundo; isso não depende disso para UNIQUEness. )