Opprinnelsen til Unix Tid
For virkelig å forstå epoch-tidsstemplet, ofte referert til som Unix-tid, POSIX-tid eller ganske enkelt epoch, må vi se tilbake til opprinnelsen til Unix-operativsystemet på begynnelsen av 1970-tallet. Unix tid er et system for å spore tid som en løpende total av sekunder. Nærmere bestemt representerer det antall sekunder som har gått siden Unix epoch. Selve epoch er definert som 00:00:00 Coordinated Universal Time (UTC) torsdag 1. januar 1970.
Da Ken Thompson og Dennis Ritchie utviklet de første versjonene av Unix på Bell Labs, trengte de en enkel og effektiv måte for datamaskiner å representere og lagre datoer og klokkeslett. Datoer som kan leses av mennesker (som «29. juli 2026») er utrolig komplekse for datamaskiner å behandle. De involverer uregelmessige måneder (noen med 28, 29, 30 eller 31 dager), skuddår, tidssoner og overganger til sommertid. Ved å representere tid som et enkelt, kontinuerlig økende heltall, skapte Unix-utviklerne en universell, entydig tidsstandard som enkelt kunne lagres, sammenlignes og matematisk manipuleres.
Hvorfor utviklere bruker Epoch tidsstempler i dag
Selv flere tiår senere er epoch-tiden fortsatt ryggraden i moderne datainfrastruktur. Her er grunnen til at det er universelt vedtatt:
- Enkelhet og effektivitet: Lagring av et 32-bits eller 64-biters heltall tar opp betydelig mindre diskplass og minne enn å lagre en formatert datostreng. Når databaser inneholder milliarder av poster, betyr lagring av noen få byte per rad enorme lagringskostnadsreduksjoner og forbedret databaseindeksytelse. 2. Tidssoneagnostisk: Et epoch-tidsstempel er iboende knyttet til UTC. Det bryr seg ikke om hvor brukeren fysisk befinner seg. Når en server i Tokyo kommuniserer med en klient i New York, forhindrer overføring av et epoch heltall enhver forvirring angående tidssoner. Klienten konverterer ganske enkelt heltallet til sin lokale tidssone når han mottar det. 3. Enkle matematiske operasjoner: Å beregne varigheten mellom to hendelser er like enkelt som å trekke ett tidsstempel fra et annet.
Hvis du vil vite hvor mange sekunder som har gått mellom to loggoppføringer, gir timestamp2 - timestamp1 deg det eksakte svaret umiddelbart, uten kompleks datoanalyselogikk. 4. Databasesortering: Sortering av poster kronologisk etter en heltallskolonne er mye raskere for databasemotorer enn å analysere og sortere tekstbaserte tidsstempelstrenger.
Virkningen av skuddsekunder
En teknisk nyanse av Unix-tiden er hvordan den håndterer skuddsekunder. Et sprangsekund er en justering på ett sekund som av og til brukes til Coordinated Universal Time (UTC) for å holde tiden på døgnet nær gjennomsnittlig soltid. Interessant nok står Unix-tiden ikke for skuddsekunder. I Unix-tidssystemet behandles hver eneste dag som nøyaktig 86 400 sekunder lang. Når et sprangsekund inntreffer, gjentar Unix-klokken i hovedsak det samme sekundet to ganger. Dette tilsiktede designvalget forhindrer tidsstempler fra å bli uforutsigbare, selv om det betyr at Unix-tid ikke er et strengt, lineært mål på fysisk tid som har gått siden 1970. For de aller fleste programvaretekniske applikasjoner er dette mindre avviket fullstendig akseptabelt og foretrukket fremfor kompleksiteten ved å spore hvert historisk sprangsekund.